地圖組件上的自訂地區疊加層顯示 ArcGis + GeoJson

來源:互聯網
上載者:User

標籤:cti   技術   obj   arc   done   自己   包含   eoj   輪廓線   

最近參與了一個IOT環境項目,需要對某個城市的某幾個地區做環境監控與治理,其中就用到了地圖疊加層的功能,粗看很複雜,其實很簡單,先來看一下效果,然後再來講一下如何?的:

中間的黃色輪廓線包括的幾塊地區就是通過gis座標和百度的疊加層來實現的,來簡單說一下實現的步驟吧:

首先需要有每塊地區的座標集合,這個主要是由工程隊施工人員,在當地採集座標,採集後會產生相應的檔案給到開發人員

這些檔案主要為如下:

其中這個紅框內的檔案是我們最需要的檔案,他是一個shp檔案,輪廓檔案,開發人員需要轉換為一個jsonlist,才可以使用,

那麼如何轉換呢,首先,要有個知識點需要說明,就是工程隊測量的座標系,可能並不是我們真正要使用的經緯度,因為不同座標系的規範導致地圖座標顯示不正確,所以需要轉換座標係為國標(也就是1984)

這時需要下載並且安裝 ArcGis 這個軟體,專門用於處理地圖的,安裝完畢後,如下,然後開啟紅框中的ArcMap

 

參考如,按照層級開啟ArcToolBox,這時一個工具箱,裡面有座標系的轉換工具

首先使用“Define Projecttion” ,用於定義一個工程,其實就相當於是eclipse中的一個工程,然後又相關的操作都根據這個工程來就行

 如,選擇一個shp檔案,然後就會自動產生他自己的座標系,匯入後,預設識別

 

匯入後的效果如下

 

這個時候我們可以進行轉換一下,雙擊project

第一欄選擇剛剛匯入的porject,然後選擇一個輸出的目錄,最後就是你想要轉換的座標系,完了之後,點擊OK產生 

 最後到輸出的目錄去看一下,檔案都在裡面

此時,我們只需要把shp檔案在轉換為程式可識別的檔案即可,那麼對於程式來講,可以識別的就是json,所以,我們來轉換一下,先開啟 http://mapshaper.org/ 這個網站,這是專門用於轉換座標的。

 

首先選擇一個shp檔案,就是我們剛剛產生的,,匯入後入:

選擇右上方的 export 匯出,選擇geojson即可,然後下載到本地,再匯入到自己的工程中去使用

選擇右上方的 export 匯出,選擇geojson即可,然後下載到本地,再匯入到自己的工程中去使用,看一下這個json檔案吧:

其實就是一個json對象裡包含了座標的json數組

接下來的工作就是通過js來渲染圖層了

最終效果擷取了某個地區進行了渲染如下:

 

這僅僅只是截取了某個array進行的展示,如果顯示全部,還需對json進行迴圈,這邊就省略了,代碼參考如下,其中包含了一些百度地圖的相關api:

var china = new BMap.Polygon([], {                strokeColor : "orange",                strokeWeight : 2,                strokeOpacity : 0.5,                fillOpacity: 0.1,                strokeStyle: "solid",                fillColor: "red"            }); //建立多邊形            $.ajax({                url: "${ctx}/resources/module/script/dashboard/china.json",                type: ‘GET‘,                async: true            }).done(function (res) {                var pointArray = res.geometries[0].coordinates[0];                var convertor = new BMap.Convertor();                var realPointArray = [];                for (var i = 0 ; i < pointArray.length ; i ++) {                    var obj = pointArray[i];                    var mapPoint = new BMap.Point(obj[0], obj[1])                     var pointArr = [];                     pointArr.push(mapPoint);                    realPointArray.push(mapPoint);                }                china.setPath(realPointArray);            })            map.addOverlay(china);

 

地圖組件上的自訂地區疊加層顯示 ArcGis + GeoJson

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.