日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言

發布時間:2025/3/21 c/c++ 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

博客背景和目的

最近在用C++寫一個底層的東西,需要讀取和創建shp文件。雖然接觸shp文件已經幾年了,但是對于shp文件內到底包含什么東西一直是一知半解。以前使用shp文件都是利用軟件(如ArcGIS)直接打開,保存;創建文件則需要專門利用ArcToolBox等創建圖形。

網上有現成的有關shp文件的庫,如GDAL等,可以結合這些庫來讀寫shp文件。但是由于編程環境問題、庫的版本、編譯、引用等等問題,在現有情況下無法正常使用,加之使用現有的庫不能讓我從底層完全了解shp文件的組織方式,遂決心一點點地自己動手寫讀和寫(創建)的方法。

在嘗試解決這個問題的時候,我瀏覽了網上眾多有關shp文件讀寫的博客和資料,發現大多博客對于shp文件的情況和讀取過程有詳細的記錄,但是幾乎沒有寫(創建)底層shp文件的代碼示例。雖然“寫”與“讀”類似,但是其中還是有很多“陷阱”。為了記錄自己的探索歷程,同時給后面的人提供經驗和參考,故寫此博客,希望能給讀者提供幫助。

?

shp文件基本情況

shp是shapefile的縮寫,關于shapefile的歷史和特點我不過多敘述,網上隨便一搜都有詳細內容,我著重敘述幾點:

  • 一個完整的shapefile文件至少包含shp文件、dbf文件和shx文件,它們都是同名的,文件的后綴格式是.shp、.dbf和.shx。也就是說,缺少其中任何一項,都無法直接用ArcGIS打開。
  • shp文件主要包含圖形坐標數據,由文件頭和實體信息組成。
  • dbf文件主要記錄要素的屬性信息,實際上是一個表,在ArcGIS中打開后實際上就是屬性表。
  • shx文件是索引文件,記錄主文件(shp文件)中每條記錄距離主文件開始位置的偏移量和每條記錄的長度。
  • shp的讀寫意味著shp、dbf和shx的讀寫,利用C++程序讀的過程中如果只是需要圖形和屬性,shx不是必需的;但是寫的時候為了使輸出的shp能被廣泛使用,必須要寫(創建)shx文件。
  • shp等三個文件都是二進制文件,變量有big和little區分,還涉及16進制和10進制的轉換。

?

編程環境

C++ 、VS2010、MFC

其他工具

推薦一個檢查shp、shx和dbf文件的神器——shapechk.exe,這個工具可以檢查shp文件是否有問題、能檢查和生成shx和dbf,資源見下方。

閱讀資料

《shape白皮書.pdf》英文版shapefile說明的翻譯版

《shp文件詳細格式.doc》 詳細解讀shp格式,并且有讀取文件的源碼

?

鏈接:https://pan.baidu.com/s/1YLwqTFfqLYguQntk7PrpGw

提取碼: cshy

?

雖然有以上參考資料,但是實際編程中仍會有許多問題,眾多問題將在后面一一敘述。

轉載于:https://www.cnblogs.com/fan-0802-WHU/p/10139863.html

總結

以上是生活随笔為你收集整理的shp系列(一)——利用C++进行shp文件的读(打开)与写(创建)开言的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。