• PostgreSQL与PostGIS安装使用时需要注意的坑


    最近些许繁忙,没有时间系统整理PostgreSQL和PostGIS的安装和使用方法。所以就简单记录一下遇到的坑。

    1、找不到 libintl-9.dll

    我安装的PostgreSQL版本是11.7,PostGIS是3.0.1 (利用Stack Builder安装的PostGIS 3.0 bundle)。

    Snipaste_2020-04-19_00-08-00

    安装完成,打算导入shp数据的时候发现PostGIS Shapefile Import/Export Manager无法打开,并提示“找不到libintl-9.dll”,如下:

    Snipaste_2020-04-22_20-59-16

    这可咋办呢?只需要找到PostgreSQL安装目录的bin目录下的libintl-9.dll,将它复制到postgisgui目录下即可。

    2222

    2、导入shp数据时提示“无法打开shp/dbf(shp/dbf file can not be opened)”

    通过PostGIS Shapefile Import/Export Manager导入数据时惨遭拒绝,提示“shp/dbf file can not be opened”,如图。那可咋办呢?首先检查你的数据的路径中是否带有中文,postgis导入shp数据不支持中文路径

    Snipaste_2020-04-22_21-16-49

    3、导入shp数据时提示“Unable to convert data value to UTF-8”

    通过PostGIS Shapefile Import/Export Manager导入数据时,提示“Unable to convert data value to UTF-8”。说明你数据中的编码格式与shp导入工具的设置的编码不一致。这个错误,一般主要是在shp数据有中文属性时出现(dbf中含有中文)

    Snipaste_2020-04-26_14-29-44

    如果确实是由于你的数据中存在中文编码(有中文属性)导致的问题,那咋办呢?只需要在这里的Options中将编码改成GBK即可。

    Snipaste_2020-04-26_14-30-07

    4、导入shp数据时二话不说,直接失败

    通过PostGIS Shapefile Import/Export Manager导入数据时,没有任何其他提示,只显示”Shapefile import failed“,如图。

    ppppppppppSnipaste_2020-04-30_22-15-51

    如果你连接的这个数据库是你自己创建的(不是名叫"postgis_30_sample"那个官方的空间数据库的例子),那么就有可能是空间数据库没有成功创建,什么意思呢?就是说你只创建了一个普通数据库(没有空间字段,自然就不支持shp数据导入)。

    如何判断自己是否成功创建了空间数据库呢?检查,数据库(Databases)——你的数据库名称——架构(Schemas)——public——表(Tables),这个目录下是否存在一个名叫spatial_ref_sys的表,如果不存在,就说明你的数据库不具备存储空间数据的能力。

    Snipaste_2020-04-26_14-27-23

    那咋办呢?首先让我们打开postgreSQL的查询工具,在菜单栏的工具选项里

    Snipaste_2020-04-26_14-26-02

    在查询工具中输入如下SQL语句,添加空间数据库管理插件Postgis,运行。然后,刷新页面

    CREATE EXTENSION PostGIS
    
    Snipaste_2020-04-26_14-26-56

    现在数据表中就会出现名为spatial_ref_sys的表了,说明可以导入空间数据了。

    关于postgis的具体使用可以参考下面这篇博客,虽然postgis版本不同但操作都是类似的。

    搭建简易Web GIS网站:使用GeoServer+PostgreSQL+PostGIS+OpenLayers3

  • 相关阅读:
    【Java】Java创建String时,什么情况放进String Pool?
    【Java】代理模式,静态代理和动态代理(基于JDK或CGLib)
    【Java】Float计算不准确
    【Spring】初始化Spring IoC容器(非Web应用),并获取Bean
    【Eclipse】安装subclipse的Eclipse插件
    【多线程】如何通过线程返回值?如何使用多线程并发查询数据
    【多线程】并发执行指定数量的线程
    【ActiveMQ】ActiveMQ在Windows的安装,以及点对点的消息发送案例
    DBCP连接Oracle,数据库重启后现OALL8 is in an inconsistent state异常
    jQuery Validation remote的缓存请求
  • 原文地址:https://www.cnblogs.com/ssjxx98/p/12811657.html
Copyright © 2020-2023  润新知