用openlayers實現(xiàn)矢量地圖數(shù)據(jù)的展示

如果我們有一些矢量數(shù)據(jù),如何利用OPENLAYERS將這些數(shù)據(jù)在網(wǎng)絡(luò)上進(jìn)行發(fā)布呢?我向大家介紹一下我使用過的兩種方法:

1.????? 將數(shù)據(jù)轉(zhuǎn)換成GEOJSON、KML等網(wǎng)絡(luò)矢量格式,然后用OPENLAYERS在瀏覽器中進(jìn)行展示。

2.???? 用GISERVER發(fā)布成OGC服務(wù),然后用OPENLAYERS在瀏覽器中進(jìn)行展示。詳見:http://www.itdecent.cn/p/66a6ba063aab

下面我首先詳細(xì)講解第一種方式的具體做法,在后續(xù)我們將介紹第二種方式的具體做法。由于國內(nèi)數(shù)據(jù)偏移及保密問題,我的測試使用了下載的澳大利亞行政區(qū)域的數(shù)據(jù),這樣可以測試位置疊加是否準(zhǔn)確。

1數(shù)據(jù)格式轉(zhuǎn)換

由于數(shù)據(jù)處理軟件的通用格式一般是MAPINFO(TAB)、ARCGIS(SHP),我們拿到的地圖數(shù)據(jù)不會是我們需要的網(wǎng)絡(luò)矢量格式(GEOJSON、KML、GML等),因此我們需要進(jìn)行格式轉(zhuǎn)換。由于我的獲得的數(shù)據(jù)是SHP格式,因此我需要將其轉(zhuǎn)換為網(wǎng)絡(luò)的矢量格式,我們這里是GEOJSON。


注意:由于原始數(shù)據(jù)的坐標(biāo)系是很奇怪的國外的坐標(biāo)系,我將其統(tǒng)一轉(zhuǎn)換為網(wǎng)絡(luò)上比較通用的谷歌墨卡托坐標(biāo)系。



數(shù)據(jù)轉(zhuǎn)換完成后,我們利用OPENLAYERS將轉(zhuǎn)換后的地圖數(shù)據(jù)進(jìn)行展示,代碼如下:


????? "stylesheet"href="https://openlayers.org/en/v4.6.4/css/ol.css"type="text/css">


old environments like Internet Explorer and Android 4.x -->

???"https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL">

???"https://openlayers.org/en/v4.6.4/build/ol.js">



???"map"class="map">


?????varimage = newol.style.Circle({

??????? radius: 5,

??????? fill:null,

??????? stroke:new ol.style.Stroke({color: 'red', width: 1})

?????});


?????varstyles = {

??? ????????'MultiPolygon': new ol.style.Style({

??? ????????????stroke:new ol.style.Stroke({

??? ??????????????color:'green',

??? ??????????????width: 1

??? ????????????}),

??? ????????????fill:new ol.style.Fill({

??? ??????????????color:'red'

??? ????????????})

??? ??????????})

?????};


?????varstyleFunction = function(feature) {

??????? returnstyles[feature.getGeometry().getType()];

?????};


?????varGeoJsonLayer = newol.layer.Vector({

????????? title:'add Layer',

????????? source:new ol.source.Vector({

????????????? projection:'EPSG:3857',

????????????? url:'./mapout.geojson',

????????????? format:new ol.format.GeoJSON()

????????? }),

????????? style: styleFunction

?????});


?????varmap = newol.Map({

??????? layers: [

????????? new ol.layer.Tile({

??????????? source:new ol.source.OSM()

????????? }),

????????? GeoJsonLayer

??????? ],

??????? target:'map',

??????? controls: ol.control.defaults({

????????? attributionOptions: {

??????????? collapsible:false

????????? }

??????? }),

??????? view:new ol.View({

????????? center: [0, 0],

????????? zoom: 2

??????? })

?????});

如果代碼部分


效果如下:


程序中為了體現(xiàn)效果,我疊加了OSM(OPENSTREETMAP)的在線地圖。這樣如果我們將這個網(wǎng)頁在自己建設(shè)的網(wǎng)站上進(jìn)行發(fā)布就會非常方便的將我們的矢量數(shù)據(jù)分享給其它人查看。當(dāng)然要完成這個目標(biāo)我們還需要做一些其它的工作和配置。我將在今后的文章里逐個描述。

文中涉及代碼及數(shù)據(jù)下載:https://pan.baidu.com/s/1zJ_zssMPamjoJaezjY3Pnw

文中格式轉(zhuǎn)換器的下載:http://www.itdecent.cn/p/70fbc925b7fc

如有疑問及需求請聯(lián)系:QQ 315022850

WEBGIS前端自動生成工具,無需任何編程經(jīng)驗,也無需任何編程工作,只需要進(jìn)行簡單的配置,就可以開發(fā)出自己的WEGGIS程序:https://blog.csdn.net/qq_35582643/article/details/81868972


如您希望搭建自己的GIS數(shù)據(jù)服務(wù)器來發(fā)布共享GIS數(shù)據(jù),然后使用OPENLAYERS展示,請參考:

https://blog.csdn.net/qq_35582643/article/details/88661263

https://blog.csdn.net/qq_35582643/article/details/86770349

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 因為要做一個地圖操作的項目,需要用到這個地圖庫,但是查詢官方API麻煩,而且這個地圖框架的API做的用起來確實太麻...
    虛幻的銹色閱讀 34,270評論 1 15
  • 首頁 資訊 文章 資源 小組 相親 登錄 注冊 首頁 最新文章 IT 職場 前端 后端 移動端 數(shù)據(jù)庫 運(yùn)維 其他...
    Helen_Cat閱讀 4,154評論 1 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,659評論 19 139
  • 今天來說說產(chǎn)品經(jīng)理對自己的產(chǎn)品的理解。 提到做產(chǎn)品,?首先我們要對自己所做的產(chǎn)品有一個清晰的認(rèn)知,說到這一點,也許...
    莉莉梓閱讀 938評論 0 0
  • 有很多人對自己的要求非常高,每做一件事情總覺得那里沒做好,要不停地修改,重復(fù),在修改,這樣不是不好,是要看...
    愛悟者閱讀 306評論 0 1

友情鏈接更多精彩內(nèi)容