st_frechetdistance函数报错解决(postgis)--Linux

st_frechetdistance函数报错解决(postgis)--Linux,第1张

概述st_frechetdistance函数报错解决(postgis)   一。问题描述   SELECT st_frechetdistance(‘LINESTRING(0 0,100 0)‘::geometry, ‘LINESTRING(0 0,50 50,100 0)‘::geometry);   ERROR:  The GEOS version this PostGIS binary was c st_frechetdistance函数报错解决(postgis)   一。问题描述   SELECT st_frechetdistance(‘linesTRING(0 0,100 0)‘::geometry,‘linesTRING(0 0,50 50,100 0)‘::geometry);   ERROR:  The GEOS version this PostGIS binary was compiled against (36) doesn‘t support ‘GEOSFechetdistance‘ function (3.7.0+ required) 错误: 此PostGIS二进制文件编译的GEOS版本(36)不支持‘GEOSFechetdistance‘功能(需要3.7.0+)   查看postgis版本,发现geos版本确实是36 select postgis_full_version(); POSTGIS="2.5.0 r16836" [EXTENSION] PGsql="100" GEOS="3.6.1-CAPI-1.10.1 r0" PROJ="Rel. 4.9.3,15 August 2016" GDAL="GDAL 2.1.2,released 2016/10/24" liBXML="2.9.7" liBJsON="0.13.1" topolOGY RASTER     二。解决思路   升级geos版本,卸载postgis(找到安装目录,用make uninstall卸载),重新安装postgis     三。具体做法(linux postgresql,postgis,geos等软件皆是源码安装)     1.停止postgresql服务   service postgresql stop     2.卸载geos(之前是安装到/usr/local/geos-3.6.1这边的)   cd /usr/local   rm -f -r geos-3.6.1   cd /usr/resource/pg/plugin   rm -f -r geos-3.6.1   rm -f -r geos-3.6.1.tar.bz2     3.重装更高版本的geos   wget http://download.osgeo.org/geos/geos-3.7.1.tar.bz2 tar -jxf geos-3.7.1.tar.bz2 cd geos-3.7.1 ./configure --prefix=/usr/local/geos-3.7.1 make make install     4. 卸载postgis,再重装或者升级     4-1. 配置ld.so.conf [ [email protected]_0_4_centos opt]# vi /etc/ld.so.conf #编辑内容如下(之前geos是3.6.1,现改成3.7.1)     include ld.so.conf.d/*.conf /usr/local/pgsql/lib /usr/local/proj-4.9.3/lib /usr/local/gdal-2.1.2/lib /usr/local/geos-3.7.1/lib /usr/local/Json-c-0.13.1/lib /usr/local/libxml2-2.9.7/lib     #编辑完成后wq!保存退出 #保存配置,重启生效 ldconfig -v   4-2. 卸载PostGIS,再安装(升级)   cd /usr/resource/pg/plugin/postgis-2.5.0   # 先卸载 make uninstall   # 删除之前的文件 cd ../ rm -f -r postgis-2.5.0   # 重新解压安装(或者升级) tar -zxvf postgis-2.5.0.tar.gz cd postgis-2.5.0 ./configure --prefix=/usr/local/pgsql --with-gdalconfig=/usr/local/gdal-2.1.2/bin/gdal-config --with-pgconfig=/usr/local/pgsql/bin/pg_config --with-geosconfig=/usr/local/geos-3.7.1/bin/geos-config --with-projdir=/usr/local/proj-4.9.3 --with-xml2config=/usr/local/libxml2-2.9.7/bin/xml2-config --with-Jsondir=/usr/local/Json-c-0.13.1 make make install     5.启动数据库,执行PostGIS插件更新语句   service postgresql start   接下来在各个空间数据库内,执行PostGIS插件更新语句:      alter extension postgis update     6.验证   6-1.依赖验证    ldd /usr/local/pgsql/lib/postgis_topology-2.5.so   发现postgis依赖已经指向新装的geos3.7.1  

  6-2.版本验证   select postgis_full_version();   geos也是变成了3.7.1   6-3.函数验证   SELECT st_frechetdistance(‘linesTRING(0 0,100 0)‘::geometry);   可以正常执行了 总结

以上是内存溢出为你收集整理的st_frechetdistance函数报错解决(postgis)--Linux全部内容,希望文章能够帮你解决st_frechetdistance函数报错解决(postgis)--Linux所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1022162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存