1.背景
因為項目需求,需要基於開源項目來對SHP進行相關操作。涉及到的主要功能就是加載SHP讀取其中的屬性信息和幾何信息。於是選擇了Sharpmap來進行,在使用中對其相關功能做了初步了解,做個總結。
2.SharpMap 簡介
官網地址:http://sharpmap.codeplex.com/
在其中可以下載最新的Sharpmap源碼。在官網中可以看到目前最新的更新基本停留在2014年,據聞目前其作者已經入職了esri。
2.1基本功能
(1)符合OpenGIS的簡單要素規范,支持點、線、面、多點、多線、多面、集合對象集合等要素集合。
(2)支持常規的地圖操作,例如旋轉、平移、縮放等。
(3)實時的地圖投影轉換。
(4)使用異步委托實現效率最大化,可編制展示復雜的地圖主體渲染。
(5)支持Web地圖展示,支持AJAX地圖控件,支持WMS服務。
(6)有很好的接口支持數據格式和圖層的擴展。
2.2支持的格式
(1)支持矢量數據格式:例如ESRI Shape File、PostGIS、Oracle、Microsoft SQLServer、SQLite等。
(2)支持柵格數據格式:例如.bmp、.gif、.tif、.png、.dem等格式。
(3)WMS地圖服務。
2.3引入的第三方庫
BruTile:這是基於C#開發的支持GIS瓦片(tile)的開源代碼庫地址為:https://github.com/BruTile/BruTile
NetTopoLogySuite:基於.net平台處理GIS空間數據及其空間關系的類庫。開源代碼庫地址為:https://github.com/NetTopologySuite/NetTopologySuite
GeoAPI,實現.net與GIS互操作開源代碼庫地址為:https://github.com/NetTopologySuite/GeoAPI有興趣的話可以研究一下。
ProjNET:基於.Net開源的地圖投影庫,支持基准面轉換,支持大地坐標系,地心坐標系以及投影坐標系。開源代碼庫地址為:http://projnet.codeplex.com/
2.4環境搭建
下載好DLL后,將其引入:
3.幾個Demo
3.1添加數據至MapBox
3.2基本工具欄
3.3讀取SHP
4.一個擴展問題
SharpMap可以對圖層做渲染展示,空間查詢,拓撲判斷等功能,相關功能在網上均能找到例子。但是對SHP的編輯,SHP的創建目前沒有找到合適例子,查看源碼也沒有找到相關接口,如果有知道如何基於SharpMap做SHP編輯的朋友,還望指教。
這是我在網上找到的關於該問題的一個比較全面的回復: