PostGIS问题汇总

标签: Postgis 分类: Gis 创建时间:2019-08-14 06:01:41 更新时间:2025-01-17 10:39:22

1.shp2pgsql-gui.exe由于找不到 libintl-9.dll,无法继续执行代码

以前使用gdb转换到postgis中,使用了osgeo4w这个工具,现在要直接将shp文件转入到postgis中,这里用到了shp2pgsql这一个安装postgis后自带的小工具,在开始菜单中找到shp2pgsql-gui.exe,打开出现错误。

这里只要找到postgis安装目录:C:\Program Files\PostgreSQL\11\bin\postgisgui,然后复制一份libintl-8.dll副本,改名为libintl-9.dll即可。

2.shp2pgsql-gui.exe出现无法打开dbf文件

解决上面的问题后,打开shp2pgsql-gui:

选择增加文件,然后选择Import按钮,出现无法打开dbf的错误:

这里是因为shp文件的路径中含有中文名。

3.导入shp文件失败

文件名改了,找不到dll也改了,就是导入不进来。

遥想公瑾当年说,是因为没有create extension postgis;我在pgAdmin 4中扩展一栏中创建创建要给扩展:

结果报错无法加载rtpostgis.dll,模块未定义,“错误: 无法加载库 “C:/Program Files/PostgreSQL/10/闪电b/rtpostgis-2.5.dll”: The specified module could not be found.”,但是实际上,我查找了,这个文件所在地,C:\Program Files\PostgreSQL\10\lib\rtpostgis-2.5.dll,文件确实存在,问题会出在哪里呢?翻遍了网上,问遍了群友,就是没有遇到这个问题的人。

(简直要疯了,一个问题接一个问题)。
(1) 然后我尝试了对postgresql进行降级,安装了pg10,尝试一下(失败了)还是同样的问题。
(2) 然后我尝试对postgresql再进行降级,安装pg9.6.1,尝试一下(失败了)。
(3) 谷歌上找了两篇说到这个问题的文章,(参见参考文章2和3),这里说的是缺少什么东西,不明所以。
(4) 按这个要求,说zip包可以直接放到postgresql安装目录中,我尝试直接下载相关的zip安装包,放入到postgresql安装目录中,下载地址 这个比较快。”The .zip files are just the binaries you can copy into your PostgreSQL installation and then enable in each database as usual. The exe are standard windows setup for both 32-bit and 64-bit PostgreSQL.” 我覆盖了以前的安装,结果,还是无法加载库。

最后的最后,最后的最后,最后的最后,竟然是因为postgre和postgis版本不一致导致的问题
我用了postgresql-10.5-2-windows-x64 + postgis-bundle-pg10x64-setup-2.4.4-1搞定了安装问题,贴一张成功的图:

这是导入成功的标志:

这是在数据库中的样子:

我也不禁反思了,这到底是因为什么呢?为啥版本不一致,为啥会出现一直选不到正确的版本呢?实际上,我使用的postgis版本,在载页面中根本就没有这一个版本。什么样的版本才合适呢?

4.使用自带的命令行工具shp2pgsql,出现编码错误

上一个问题解决了,使用自带的gui面板就可以导入shp文件到数据库里面了,不用命令行也可以了。

5.启动时报错,无法启动。

在虚拟机里面安装成功之后,我在主机上安装完postgre,启动时,出现启动失败的问题。确定后,会弹出一个面板,里面的命令行,我是卸载前填的,最后,重新安装的时候还是被带进来了,最大的可能就是卸载不干净。

这个问题只是pgAdmin4无法启动,数据库已经可以使用了。

(2019年9月25日更新重要问题)
简直哭晕在厕所,我费了九牛二虎之力才在windows上找到安装postgres和postgis的方法,可是新来的一个同事,以前也没接触过postgis,一天就装好了。而且安装过程中没有报任何错误。就是在管网上下载了postgres 11 和 最新版的 postgis 2.5,然后就安装成功了,惭愧啊,惭愧啊。

我确信了,在我创建这篇文章的时候,下载的postgis和postgres确实有bug,怎么装都装不上,今天我重新下载了最新版本的postgresql-11.5-2-windows-x64和postgis-bundle-pg11x64-setup-2.5.3-1,将原先已经安装好的pg10和postgis10卸载,然后重新安装了今天下载的postgres和postgis,同样也没有遇到原先的错误,顺利的安装成功了。注意,是在同一台以前有问题的机器上重新安装的。简直丧心病狂啊,那时候我足足花了两天的时间来验证这个安装啊。

根据显示,这个版本是在2019年8月24日更新的,创建这篇文章的时候是2019年8月14日,那个时候,我已经遇见了安装的问题了,应该是更新之前的事了。

有人说,在安装完postgres之后,要启动下,才能安装postgis,这个没有详细的实验过,看大家的情况吧。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。