本文介紹如何將矢量數據加載到Ganos中,建議您使用的工具為shp2pgsql、ogr2ogr或QGIS。
準備工作
在加載矢量數據之前,請確保在數據庫中已輸入如下命令,來創建ganos_geometry擴展:
CREATE EXTENSION ganos_geometry CASCADE;
shp2pgsql命令行工具
shp2pgsql命令行工具是一個將Esri Shapefile文件轉換為SQL文件的命令行工具。通過將shapfile轉換為SQL文件,可以實現將Shapefile數據加載到Ganos中。
語法
說明如果您已經安裝了PostGIS,那么shp2pgsql工具默認包含在PostGIS安裝包中。您可以從PostGIS官方網站下載適用于您操作系統的安裝包,并按照安裝指南進行安裝。
如果您使用的是Linux操作系統,您可以嘗試通過包管理器安裝PostGIS。以CentOS為例,使用
yum -y install postgis
命令,即可獲取shp2pgsql
工具。
shp2pgsql -s <srid> -c -W <charset> <path_to_shpfile> <schema>.<table_name> | psql -d <dbname> -h <host> -U <user_name> -p <port>
參數說明
參數名稱
描述
示例
-s <srid>
空間參考ID。
4490
-c
創建一張新表。
您也可以選擇其他模式:
-a:追加
-d: 加載數據之前先刪除表
-p: 僅創建表結構SQL,不寫入空間數據
無
-W <charset>
shapefile字符集。
"GBK" 或 "UTF8"
<path_to_shpfile>
shapefile 文件路徑,需要被shp2pgsql命令工具訪問到。
/home/roads.shp
<schema>.<table_name>
創建的geometry表的名稱。
public.roads
-d <dbname>
數據庫名稱。
mydb
-h <host>
數據庫實例地址。
pgm-xxxxxxx.pg.rds.aliyuncs.com
-U <user_name>
用戶名。
my_name
-p <port>
端口號。
5432
示例
5432shp2pgsql -s 4490 -c -W "GBK" /home/roads.shp public.roads | psql -d mydb -h pgm-xxxxxxx.pg.rds.aliyuncs.com -U my_name -p 5432
說明如果需要在腳本中批量導入,為防止頻繁提示輸入密碼,可以在腳本中設置環境變量PGPASSWORD:
export PGPASSWORD=my_pass
。
ogr2ogr命令行工具
ogr2ogr是GDAL/OGR提供的矢量數據轉換工具,支持Esri Shapefile,MapInfo和FileGDB等常見矢量數據類型。矢量數據類型參見矢量數據類型。
使用ogr2ogr命令行工具加載矢量數據,請先確保GDAL支持postgis驅動格式。
語法
說明如果您已經安裝了GDAL,那么ogr2ogr工具默認包含在GDAL安裝包中。您可以從GDAL官方網站下載適用于您操作系統的安裝包,并按照安裝指南進行安裝。
如果您使用的是Linux操作系統,您可以嘗試通過包管理器安裝GDAL。以CentOS為例,使用如下命令,即可獲取
ogr2ogr
工具。sudo yum install epel-release sudo yum install gdal gdal-devel ogr2ogr --version
ogr2ogr -nln <table_name> -f PostgreSQL PG:"dbname='<dbname>' host='<host>' port='<port>' user='<user_name>' password='<password>'" -lco SPATIAL_INDEX=GIST -lco FID=<FID_NAME> -overwrite "<PATH_TO_FILE>" -nlt GEOMETRY
參數說明
參數名稱
描述
示例
-nln <table_name>
矢量表名稱。
roads
-f PostgreSQL PG:"dbname='<dbname>' host='<host>' port='<port>' user='<user_name>' password='<password>'"
PostgreSQL連接信息。
dbname='mydb' host='pgm-xxxxxxx.pg.rds.aliyuncs.com' port='5432' user='my_name' password='my_pass'
-lco SPATIAL_INDEX=GIST
指定需要創建GisT空間索引。
無
-lco FID=<FID_NAME>
指定fid名稱。
fid
-overwrite
改寫模式。
您也可以選擇其他模式: -append追加模式。
無
<PATH_TO_FILE>
矢量數據文件路徑,請確保ogr2ogr命令行工具擁有訪問權限。
/home/roads.shp
-nlt GEOMETRY
指定幾何類型為geometry,在加載多邊形時建議指定,防止出現multipolygon類型與非multipolygon在同一個文件中加載出錯問題。
無
示例
ogr2ogr -nln roads -f PostgreSQL PG:"dbname='mydb' host='pgm-xxxxxxx.pg.rds.aliyuncs.com' port='5432' user='my_name' password='my_pass'" -lco SPATIAL_INDEX=GIST -lco FID=fid -overwrite "/home/roads.shp" -nlt GEOMETRY
QGIS桌面工具
QGIS(原稱Quantum GIS)是一個用戶界面友好的開源桌面端軟件,支持多種矢量、柵格格式以及數據庫作為數據源,同時支持數據的可視化、管理、編輯、分析以及印刷地圖的制作。
創建Ganos連接。
在Browser窗口中,右鍵PostgreSQL,單擊New Connection...,創建連接。
填入必要參數。
參數說明如下:
參數名稱
描述
Name
自定義連接。
Host
數據庫實例的IP地址或RDS或PolarDB外網地址,可以從aliyun控制臺中獲得。
Port
數據庫實例的端口地址,可以從aliyun控制臺中獲得。
Database
需要連接的數據庫名。
SSL Mode
是否使用SSL加密連接。
單擊Test Connection,在彈出的Enter Credentials窗口中輸入Username和Password,單擊ok,等待連接成功。
測試連接成功后,單擊ok,完成創建。
加載矢量數據。
單擊菜單欄 。
在彈出的數據庫連接對話框中,選擇需要導入的數據源并單擊Import Layer/File...。
在彈出的導入矢量數據對話框中,指定需要導入的矢量數據并設置導入選項,最后單擊OK執行導入操作。