本文介绍如何将矢量数据加载到Ganos中,建议您使用的工具为shp2pgsql、ogr2ogr或QGIS。

准备工作

在加载矢量数据之前,请确保在数据库中已输入如下命令,来创建ganos_geometry扩展:

CREATE EXTENSION ganos_geometry CASCADE

shp2pgsql命令行工具

shp2pgsql命令行工具是一个将Esri Shapefile文件转换为SQL文件的命令行工具。通过将shapfile转换为SQL文件,可以实现将Shapefile数据加载到Ganos中。

  • 语法
    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> 端口号。 3433
  • 示例
    shp2pgsql -s 4490 -c -W "GBK" /home/roads.shp public.roads | psql -d mydb -h pgm-xxxxxxx.pg.rds.aliyuncs.com -U my_name -p 3433
    说明 如果需要在脚本中批量导入,为防止频繁提示输入密码,可以在脚本中设置环境变量PGPASSWORD:export PGPASSWORD=my_pass

ogr2ogr命令行工具

ogr2ogr是GDAL/OGR提供的矢量数据转换工具,支持Esri Shapefile,MapInfo和FileGDB等常见矢量数据类型。矢量数据类型参见 矢量数据类型

说明 使用ogr2ogr命令行工具加载矢量数据,请先确保GDAL支持postgis驱动格式。
  • 语法
    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='3433' 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

    /home/land.tab

    -nlt GEOMETRY 指定几何类型为geometry,在加载多边形时最好指定,防止出现multipolygon类型与非multipolygon在同一个文件中加载出错问题。
  • 示例
    ogr2ogr -nln roads -f PostgreSQL PG:"dbname='mydb' host='pgm-xxxxxxx.pg.rds.aliyuncs.com' port='3433' user='my_name' password='my_pass'" -lco SPATIAL_INDEX=GIST -lco FID=fid -overwrite "/home/roads.shp" -nlt GEOMETRY

QGIS桌面工具

QGIS(原称Quantum GIS)是一个用户界面友好的开源桌面端软件,支持多种矢量、栅格格式以及数据库作为数据源,同时支持数据的可视化、管理、编辑、分析以及印刷地图的制作。

  1. 创建Ganos连接。
    1. 在右侧Brower窗口中,直接创建PostGIS Connection。
    2. 填入必要参数。
      Ganos加载矢量数据—QGIS—创建Ganos连接

      参数说明如下:

      参数名称 描述
      Name 自定义连接。
      Host 数据库实例的IP地址或RDS或PolarDB外网地址,可以从aliyun控制台中获得。
      Port 数据库实例的端口地址,可以从aliyun控制台中获得。
      Database 需要连接的数据库名。
      SSL Mode 是否使用SSL加密连接。
    3. 单击Test Connection等待连接成功。
  2. 加载矢量数据。
    1. 单击菜单栏Database > DB Manager..
    2. 在弹出的数据库连接对话框中,选择需要导入的数据源并单击Import Layer/File...
    3. 在弹出的导入矢量数据对话框中,指定需要导入的矢量数据并设置导入选项,最后单击OK执行导入操作。