地理空間的 Hello World
在此示例中,我們將設定地理空間資料庫,從 2 個不同的源匯入資料,並在名為 QGIS 的應用程式中檢視結果。本指南是為 linux-machines 明確編寫的,如果你在另一個平臺上執行,某些命令或路徑可能無法按預期工作。
為了檢視匯入的資料,我們將使用名為 QGIS 的應用程式。如果你沒有此應用程式,請先安裝它 ,如果你想使用其他檢視器或地理應用程式(如 ArcGIS),則可以跳過安裝 QGIS。
我們的訊息來源將是紐約市州議會區和紐約市 LION 街道地圖資料庫 。請從連結的位置下載相應的檔案。你還應該檢視材料的後設資料部分,因為它為你提供了這些檔案使用的座標參考系統的資訊。
首先,建立一個工作資料夾 nycgis
,將下載的檔案複製到該位置並解壓縮存檔。
mkdir nycgis
cd nycgis
cp ~/Downloads/nyad_16d.zip .
unzip ~/Downloads/nyad_16d.zip
cp ~/Downloads/nylion_16d.zip .
unzip ~/Downloads/nylion_16d.zip
在 nycgis
資料夾中,你現在應該有 2 個資料夾:“nyad_16d”,lion
,包含多個檔案。
使用地理資料時,瞭解源資料的座標參照系(CRS)和最終輸出資料至關重要。在連結位置的後設資料部分( 後設資料:彙編區 ,後設資料:LION 資料庫 )中,你會發現兩個檔案的 CRS 是 EPSG:2263,一個用於引用美國東北部的座標系。
讓我們假設我們想在資料庫中使用不同的 CRS。這可能有不同的原因,例如,我們可能希望在資料庫上使用基於 Web 的地理應用程式。這種應用的常見 CRS 是 WGS:84(EPSG:4326)。
要轉換座標系,我們使用名為 ogr2ogr
的工具,它是 GDAL 包的一部分。在工作資料夾中,我們首先建立 2 個表示重新投影資料的資料夾,然後轉換我們的資料。
mkdir nyad_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nyad_16d_proj_4326/nyad_4326.shp ./nyad_16d/nyad_16d.shp -s_srs EPSG:2263 -t_srs EPSG:4326
mkdir nylion_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nylion_16d_proj_4326/ny_str_4326.shp ./nylion_16d/lion/lion.gdb/a0000000d.gdbtable -s_srs EPSG:2263 -t_srs EPSG:4326
請注意,出於我們的目的,我們只使用 LION-Database 的名為“a0000000d.gdbtable”的檔案。ogr2ogr
-command 的語法如下:
ogr2ogr -f [output-format] [output-file] [input-file] -s_srs [source crs] -t_srs [target crs]
我們現在有 2 個 shapefile,投影在正確的 CRS 中。為了使用我們資料庫中的資料,我們必須將 shapefile 轉換為 sql-statemens。為此,我們使用名為 shp2pgsql
的工具。在工作目錄中執行以下命令:
shp2pgsql ./nyad_16d_proj_4326/nyad_4326.shp > nyad_4326.sql
shp2pgsql ./nylion_16d_proj_4326/ny_str_4326.shp > ny_streets_4326.sql
檔案 nyad_4326.sql
和 ny_streets_4326.sql
現在可以在 postgis 中使用了。要繼續,並匯入資料,請建立一個空間啟用的資料庫。
sudo su - postgres
createdb nycgis
psql -d nycgis
在 psql-session 中,執行:
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;
用(CTRL + D)退出 psql-和 postgres-user-sessions。並匯入檔案:
psql -f nyad_4326.sql -d nycgis
psql -f ny_streets_4326.sql -d nycgis
資料庫 nycgis
現在有 2 個表,其中成功匯入了重新投影的源。
要驗證這一點:開啟 QGIS
- 使用圖層 > 新增圖層 > PostGIS-Layer
- 連線到你的資料庫
- 選擇你的表格
- (可選)設定新建立的圖層的樣式。
https://i.stack.imgur.com/ZAyht.jpg
Etvoilà:你現在擁有一個空間啟用的資料庫,其中包含匯入的重新投影的地理資料。