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


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

1.背景

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

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

    痛定思痛,我們決定采用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封裝了投影和基准面的定義。

    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/

                                                                    如果您覺得本文確實幫助了您,可以微信掃一掃,進行小額的打賞和鼓勵,謝謝 ^_^

                                      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM