利用GDAL進行工具開源化改造

文章版權由做者李曉暉和博客園共有,若轉載請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/python

1.背景

    爲利於項目實施,團隊用AE寫過一個插件式的工具集,主要包括了數據入庫、數據統計、數據修改、數據發佈等功能。mysql

    因爲arcgis環境的不一樣,數據庫的環境不一樣,致使工具的版本出現了arcgis10.0,10.1,10.2,以及相對的Oracle版本和mysql版本,從而使維護量直線上升。sql

    痛定思痛,咱們決定採用GDAL來將各工具逐一開源化,而且將不一樣數據庫操做封裝成同一個DLL使用,目標是將全部的版本整合成一個通用版本。數據庫

2.GDAL簡介

    GDAL(Geospatial Data Abstraction Library)是一個在X/MIT許可協議下的開源柵格空間數據轉換庫。它利用抽象數據模型來表達所支持的各類文件格式,其抽象數據模型包括數據集(dataset),座標系統,仿射地理座標轉換(Affine Geo Transform), 大地控制點(GCPs), 元數據(Metadata),柵格波段(Raster Band),顏色表(Color Table),子數據集域(Subdatasets Domain),圖像結構域(Image_Structure Domain),XML域(XML:Domains)。它還有一系列命令行工具來進行數據轉換和處理。在遙感影像處理領域,GDAL是一個被普遍使用的庫。咱們所常見的GDAL均是C++版本,不過目前它也有了C#以及python、Java版本。微信

    這裏,咱們所用的主要是針對矢量數據(SHP)的處理,因此咱們還要用的GDAL的分支, OGR庫。OGR庫包含了:工具

    Geometry類:Geometry (包括OGRGeometry等類)封裝了OpenGIS的矢量數據模型,並提供了一些幾何操做,WKB(Well Knows Binary)和WKT(Well Known Text)格式之間的相互轉換,以及空間參考系統(投影)。編碼

    Spatial Reference類:OGRSpatialReference封裝了投影和基準面的定義。spa

    Feature類:OGRFeature封裝了一個完整feature的定義,一個完整的feature包括一個   geometry和geometry的一系列屬性。插件

    Feature Definition類:OGRFeatureDefn裏面封裝了feature的屬性,類型、名稱及其默認的空間參考系統等。一個OGRFeatureDefn對象一般與一個層(layer)對應。命令行

    Layer類:OGRLayer是一個抽象基類,表示數據源類OGRDataSource裏面的一層要素(feature)。

    Data Source類:OGRDataSource是一個抽象基類,表示含有OGRLayer對象的一個文件或一個數據庫。

    Drivers類:OGRSFDriver對應於每個所支持的矢量文件格式。類OGRSFDriver由類OGRSFDriverRegistrar來註冊和管理。

3.GDALC#)版本下載和引用

    下載編譯後的GDAL地址:http://www.gisinternals.com/sdk/

  

    點擊須要下載的DLL集:

   

   

    將下載到的文件bin下的dll拷貝至debug下,此爲GDAL運行須要依賴的DLL。進入gdal\csharp目錄,將以_csharp結尾的dll拷貝出來,添入引用便可。

4.開發實踐

    GDAL對中文支持容易出現問題,

    首先經過設置運行環境支持中文:

  

    其次,對GDAL設置中文編碼:

   

    咱們將對SHP的經常使用操做進行了封裝,主要爲要素的增刪查改操做、要素字段的操做、SHP的操做:

  

 

                                                                    -----歡迎轉載,但保留版權,請於明顯處標明出處:http://www.cnblogs.com/naaoveGIS/

                                                                    若是您以爲本文確實幫助了您,能夠微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                      

相關文章
相關標籤/搜索