SHP文件轉(zhuǎn)Dxf文件和GeoJson
SHP 文件介紹
shape文件由ESRI開發(fā),一個(gè)ESRI(Environmental Systems Research Institute)的shape文件包括一個(gè)主文件,一個(gè)索引文件,和一個(gè)dBASE表。其中主文件的后綴就是.shp.
ESRI Shapefile(shp),或簡(jiǎn)稱shapefile,是美國(guó)環(huán)境系統(tǒng)研究所公司(ESRI)開發(fā)的一種空間數(shù)據(jù)開放格式。
Shapefile文件用于描述幾何體對(duì)象:點(diǎn),折線與多邊形。例如,Shapefile文件可以存儲(chǔ)井、河流、湖泊等空間對(duì)象的幾何位置。除了幾何位置,shp文件也可以存儲(chǔ)這些空間對(duì)象的屬性,例如一條河流的名字,一個(gè)城市的溫度等等。
Shapefile屬于一種矢量圖形格式,它能夠保存幾何圖形的位置及相關(guān)屬性。但這種格式?jīng)]法存儲(chǔ)地理數(shù)據(jù)的拓?fù)湫畔?。Shapefile在九十年代初的ArcView GIS的第二個(gè)版本被首次應(yīng)用。目前,許多自由的程序或商業(yè)的程序都可以讀取Shapefile。
Shapefile是一種比較原始的矢量數(shù)據(jù)存儲(chǔ)方式,它僅僅能夠存儲(chǔ)幾何體的位置數(shù)據(jù),而無法在一個(gè)文件之中同時(shí)存儲(chǔ)這些幾何體的屬性數(shù)據(jù)。因此,Shapefile還必須附帶一個(gè)二維表用于存儲(chǔ)Shapefile中每個(gè)幾何體的屬性信息。Shapefile中許多幾何體能夠代表復(fù)雜的地理事物,并為他們提供強(qiáng)大而精確的計(jì)算能力。
Shapefile文件指的是一種文件存儲(chǔ)的方法,實(shí)際上該種文件格式是由多個(gè)文件組成的。其中,要組成一個(gè)Shapefile,有三個(gè)文件是必不可少的,它們分別是".shp", ".shx"與 ".dbf"文件。表示同一數(shù)據(jù)的一組文件其文件名前綴應(yīng)該相同。例如,存儲(chǔ)一個(gè)關(guān)于湖的幾何與屬性數(shù)據(jù),就必須有l(wèi)ake.shp,lake.shx與lake.dbf三個(gè)文件。而其中“真正”的Shapefile的后綴為shp,然而僅有這個(gè)文件數(shù)據(jù)是不完整的,必須要把其他兩個(gè)附帶上才能構(gòu)成一組完整的地理數(shù)據(jù)。除了這三個(gè)必須的文件以外,還有八個(gè)可選的文件,使用它們可以增強(qiáng)空間數(shù)據(jù)的表達(dá)能力。所有的文件名都必須遵循MS DOS的8.3文件名標(biāo)準(zhǔn)(文件前綴名8個(gè)字符,后綴名3個(gè)字符,如shapefil.shp),以方便與一些老的應(yīng)用程序保持兼容性,盡管現(xiàn)在許多新的程序都能夠支持長(zhǎng)文件名。此外,所有的文件都必須位于同一個(gè)目錄之中。
必須的文件:
- .shp— 圖形格式,用于保存元素的幾何實(shí)體。
- .shx— 圖形索引格式。幾何體位置索引,記錄每一個(gè)幾何體在shp文件之中的位置,能夠加快向前或向后搜索一個(gè)幾何體的效率。
- .dbf— 屬性數(shù)據(jù)格式,以dBase IV的數(shù)據(jù)表格式存儲(chǔ)每個(gè)幾何形狀的屬性數(shù)據(jù)。
其他可選的文件:
- .prj— 投幀式,用于保存地理坐標(biāo)系統(tǒng)與投影信息,是一個(gè)存儲(chǔ)well-known text投影描述符的文本文件。
- .sbnand.sbx— 幾何體的空間索引
- .fbnand.fbx— 只讀的Shapefiles的幾何體的空間索引
- .ainand.aih— 列表中活動(dòng)字段的屬性索引。
- .ixs— 可讀寫Shapefile文件的地理編碼索引
- .mxs— 可讀寫Shapefile文件的地理編碼索引(ODB格式)
- .atx—.dbf文件的屬性索引,其文件名格式為shapefile.columnname.atx(ArcGIS 8及之后的版本)
- .shp.xml— 以XML格式保存元數(shù)據(jù)。
- .cpg— 用于描述.dbf文件的代碼頁,指明其使用的字符編碼。
轉(zhuǎn)換流程
下載GDAL
進(jìn)入GDAL官網(wǎng),看操作教程https://anaconda.org/conda-forge/gdal所說
先安裝 conda 環(huán)境
下載 conda https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/
windows64位可下載這個(gè)就行
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe
安裝
安裝 gdal
conda install -c conda-forge gdal
如提示conda命令不存在,可先進(jìn)行第三步,把安裝目錄\miniconda3\condabin 設(shè)置到環(huán)境變量 path 中
設(shè)置環(huán)境變量
安裝完把安裝目錄下面的
安裝目錄\miniconda3\condabin 設(shè)置到環(huán)境變量 path 中
安裝目錄\miniconda3\Library\bin 設(shè)置到環(huán)境變量 path 中
新建環(huán)境變量
GDAL_DATA
值為 安裝目錄\miniconda3\Library\share\gdal
如安裝目錄為"D:\Program Files",則設(shè)置為:
[圖片上傳失敗...(image-6176b1-1648544734115)]
轉(zhuǎn)換
在命令里輸入ogr2ogr進(jìn)行轉(zhuǎn)換,如要把區(qū)域?qū)?shp轉(zhuǎn)為區(qū)域?qū)?dxf
在命令行里輸入即可
ogr2ogr -f "DXF" 區(qū)域?qū)?dxf ./區(qū)域?qū)?shp
如需轉(zhuǎn)geojson,可輸入
ogr2ogr -f "geojson" 區(qū)域?qū)?geojson ./區(qū)域?qū)?shp
網(wǎng)頁Web端打開CAD圖形
通過 https://vjmap.com/app/cloud/ 上傳圖形,文件類型中選擇所有文件(* . * ),選擇剛上傳的dxf文件打開。
如只需獲取dxf里面的數(shù)據(jù),除了上面的轉(zhuǎn)成Geojson獲取幾何數(shù)據(jù)外,也可以,通過上傳圖形后,通過條件查詢此圖形中的幾何數(shù)據(jù),可參考示例
https://vjmap.com/demo/#/demo/map/service/22findcircledrawbounds
[圖片上傳失敗...(image-d0ae78-1648544734115)]