地 址:北京市西城區66號 電 話(huà):17314502489 網(wǎng)址:www.hunqingrc.com 郵 箱:[email protected]
引言
PostGIS是文件一個(gè)開(kāi)源的地理空間數據庫擴展,它允許用戶(hù)在關(guān)系數據庫中存儲、矢量數據查詢(xún)和分析地理數據(′;ω;`),導導入PostGIS支持多種(zhong)矢量數據格式,文件包括Shapefile(.shp),矢量數據本教程將介紹如何使用PostGIS導入Shapefile文件。導導入
安裝PostGIS
在開(kāi)始之前,文件請確保已經(jīng)安裝了PostgreSQL數據庫和PostGIS擴展,矢量數據以下是導導入在不同操??作系統上安裝PostGIS的方法:
Windows
1、??下載并安裝PostgreSQL for Windows。文件
2、矢量數據打開(kāi)命令提示符,導導(′?_?`)入運行以下命令以啟用PostGIS??擴展:
psql U postgres d postgres c "CREATE EXTENSION pos??tgis;"
macOS
1、文件使用Homebrew安裝PostgreSQL和PostGIS:
brew install post??gresql postgis
2、矢量數據創(chuàng )建一個(gè)(ge)名為postgis的新數據庫:
postgis
createdb O postgres postgis
3、切換到postgres用戶(hù),然后啟用PostGIS擴展:
postgres
psql U postgres d post(′▽?zhuān)?)gis c "CREATE EXヽ(′ー`)ノTENS??ION postgis;"
Linux
1、使用包管理器安裝PostgreSQL和PostGIS??,在Debian和Ubuntu上,可以使用┐(′ー`)┌以下命令:
sudo aptget instal??l postgresq??l9.5postgis2.2 postgresqlcontrib9.5
2、創(chuàng )建一個(gè)名為postgis的新數(shu)據庫:
sudo u postgres createdb encoding=UTF8 username=postgres postgis
su??do u postgres psql d postgis c "CREATE EXTENSI??ON postgis;&qu(′?`*)ot;
導入Shapefile文(wen)件
現在我們已經(jīng)安裝了PostGIS,接下來(lái)我們將介紹如何導入?Shapefile文件,以┐(′ー`)┌下是在Windows、macOS和L(′_`)inux上導入Shapefile文件的方法:
1、下載Shapefile文件,確保下載的文件包含一┐(′?`)┌個(gè)或多個(gè).(????)shp文件和一個(gè)與之關(guān)聯(lián)的.shx文件,這些文件通常(chang)位于同一個(gè)文件夾中。
2、使用QGIS或其他GIS軟件打開(kāi)S??hapefile文件,確?!_(ツ)_/ˉ文件已正確加載ヾ(?■_■)ノ。
3??、在QGIS中,轉到“圖層”菜單,然后選擇“導出”>“將圖層導出為文件??”,選擇保存類(lèi)型為“GeoJSON??”,然后點(diǎn)擊“導出”按鈕,這將生成(cheng)一個(gè)與Shapefile文件同名的.geojs??on文件。
4、打開(kāi)命令提示符,導航到包含.geoj(???)son文件的文件夾,運行??以下命令以將Shapefile數據導入PostGIS數據庫:
ogr2ogr f PostgreSQL PG:&q(╯°□°)╯︵ ┻━┻uot;host=localhost dbname=postgis user=postgres password=your_password" your_shapefile.?geojson nln your_tab(╬?益?)le_name overwrite lco ENCODING=UTF8 lco SCHEMA=your_schema_name progress config PG_USE_COPY YES config OGR_GEOMETRY_NAME shape a_srs "EPSG:4326" lco dimension=2 nlt PROMOTE_TO_MULTILINESTRING=NO nlt COLLECT=NO nlt GEOMET(′?_?`)RYCOLLECT??ION=NO force_GPKG_COLUM(°ロ°) !NS
請確保??將??your_shapefile.geojson替換為實(shí)際的.geojson文件名,將your_table_name替換為您希望在數據庫中創(chuàng )建的表名,將your_schema_name替換為您希望使用的模式名,將your_password替換為您的PostgreSQL密碼,此命令(′ω`)將(′?ω?`)Shapefile數據導入名為your_table_name的表中,該表位于名為your_schema_name的模式(shi)中(???),如果表已經(jīng)存在,它將被覆蓋,此命令還將Shapefile數據的坐標參考系統設置為EPSG:4326,如果您的Shapefile數據的坐標參考系統不同,請相應地更改a_srs參數。
your_shapefile.geojson
your_table_name
your_schema_name
your_password
a_srs
macOS和Linux
1、下載Shapefile文件(′?`*),(╯‵□′)╯確保下載的文件包含一個(gè)或多個(gè).shp文件和一個(gè)與之關(guān)聯(lián)(lian)的.shx文件,這些文件通常位于同一個(gè)文件夾中。
2、使用QGIS或其他GIS軟件打開(kāi)Shapefile文件(jian),確保文件已正確加載。
3、在QGIS中,轉到“圖層”菜單,然后選擇“導出”>“將圖層導出為文件”,選擇保存類(lèi)型為“GeoJSON”,然后點(diǎn)擊“導出”按鈕,這將生成一個(gè)與Shapefile文件同名的.geojson文件。
4、打開(kāi)終端,導航到包含(T_T).geojson文件的文件夾,運行以下命令以將Shapef?ile數據導入PostGIS數據庫:
ogr2ogr f PostgreSQL PG:"host=localhost dbname=pos??tgis user=postgres password=your_password" your_shapefile.geojson nln your_table_name overwriヽ(′▽?zhuān)?/te lco ENCODING=UTF8 lcoヽ(′ー`)ノ SCHEMA=your_schema_name progress con??fig PG_US(′;д;`)E_COPY YES??? config OGR_GEOMETRY_N(╬?益?)AME shape a_srs "EPSG??:4326ヽ(′▽?zhuān)?ノ" lco dimension=2 nlt PROMOTE_TO_MULTILINESTRING=NO nlt COLLECT=NO nlt GEOM(′?`)ETRYCOLLE(???)CTION=NO force_GPKG_COLUMNS
請確保將your_shapefile.geojson替換為實(shí)際的.geojson文件名,將your_table_name替換為您希望在數據庫中創(chuàng )建的表名,將your_schema_name替換為您希望使用的模式名,將your_password替換為您的PostgreSQL密碼,此命令將Shapefile數據導入名為yヽ(′?`)ノour_table_name的表中,該表位于名為your_schema_name的模式中,如果表已經(jīng)存在,它將被覆蓋,此命令還將Shapefile數據的坐標參考系統設置為EPSG:4326,如果您的Shapefile數據的坐標參ヽ(′?`)ノ考系統不同,請相應地更改a_srs參(°o°)數。
yヽ(′?`)ノour_table_name
相關(guān)問(wèn)答FAQs
Q1:導入Shapefile時(shí)遇到錯誤:“ERROR: could not open="" file for reading: your_shapefile.shp”,怎么辦?
A1:請檢查您的Shapefile文件路徑是否正確,以及您是否具有讀取該文件的權限,如果您仍然遇到問(wèn)題,請嘗試使用其他??GIS軟件(如QGIS)打開(kāi)Shapefile文件以確保其內容有效,如果問(wèn)題仍然存在,可能是由于Shapefile文件中存在損壞的數據或無(wú)法識別的文件格??式導致的,在這種情況下(xia),您可能需要從原始數(′ω`*)據源重新獲取Shapefile文件。