PostgreSQL10.3+PostGIS2.4导入shp文件

admin0条评论 316 次浏览

一. 建库以及准备工作:(使用pgAdmin4直接建库)

  1. 打开pgAdmin4,如下图所示create–>Database
    建库
  2. 输入database的名字,如下图,输入完成即可选择save进行保存。这样基本上就可以了,其他选项可以根据自身需要进行选择。
    保存界面
  3. 给新建的库添加扩展,需要登录psql进行操作:
    psql
    图中1:选择自己对应的server,Database等,如果不需要更改直接回车进入下一项,如果需要更改就需要在其后面填写修改的内容。如图中所示,我们要进入到需要扩展的Database中,所以修改了Database一项。
    图中2:这四条语句就是进行扩展的语句,当然如果只是将shp文件通过PostGIS导入到库中,只要第一句就可以完成了shp导入到的数据库非空间数据库。建立空间数据库,重新导
    入到新建的库中。
    CREATE EXTENSION postgis;
    CREATE EXTENSION pgrouting;
    CREATE EXTENSION postgis_topology;
    CREATE EXTENSION fuzzystrmatch;
    CREATE EXTENSION postgis_tiger_geocoder;
    CREATE EXTENSION address_standardizer;
  4. 打开PostGIS设置链接
    设置链接
    4.1点击 view connection details…进行链接设置。
    4.2输入对应的用户名,密码,PostgreSQL服务器地址(如果是本机就直接localhost),端口(默认5432),需要导入shp文件的Database。这些输入完后,点击OK。
    4.3在Log Window中出现Connectionsucceeded说明链接成功。就可以进行导入文件操作了。

二、 导入shp文件

  1. 进行参数设置:
    参数设置
    1.1.点击Options进入参数设置界面。
    1.2.首先设置导入的字符编码,这个基本上都是GBK,当然这个也要看自己需要,设置成UTF-8也行。
    1.3.这一项可勾选也可不勾选,看实际情况。如果非Multi类型,才勾选最后一项。一般非多义类型,所以一般要勾选。
  2. 添加文件进行导入:
    导入
    2.1. 点击Add file 进入文件选择页面,选择需要导入的.shp文件,可以选择多个文件进行批量导入。
    2.2. 文件选择完,修改SRID(坐标系)4326是经纬度的WGS-84坐标系,也可以选择墨卡托坐标系(3857),这个根据实际情况。
    2.3. 点击Import开始导入,这时会出现进度条显示导入进度。
    2.4. 当Log Window 中出现Shapefile import completed.说明导入成功。

三、 导入后查看数据

查看数据
1. 打开pgAdmin4展开对应的Database
2. 展开Schemas找到在导入时选择的Schema,上图中我们选择的Schema是public,对应生成的tablename是veg_py。
3. 在Schemas下选择public 然后展开找到Tables展开并找到我们需要的table,右击选择View Data 即可展示数据。

四、 可能出现的错误:

  1. Failedinpgui_exec(): 错误: 函数addgeometrycolumn(unknown, unknown, unknown,unknown, unknown, integer) 不存在。
    解决方案:shp导入到的数据库非空间数据库。建立空间数据库,重新导入新建的空间库中。
    如,在sql或psql console中输入’create extension postgis;’
  2. Unableto convert data value to UTF-8 (iconv reports “Illegal bytesequence”). Current encoding is “UTF-8”. Try “LATIN1”(Western European), or one of the values
    解决方案:打开Options 将编码改为 GBK (中文),其他语言请设置对应的编码。如果改成GBK还不行,试试gb18030编码
  3. dbffile (.dbf) can not be opened.
    解决方案:shp文件路径不能太深,且路径名称不能有中文.