繁体   English   中英

函数makepoint postgresql 9.1错误postgis

[英]function makepoint postgresql 9.1 error postgis

将Postgres 8.4迁移到9.1并将项目移到新服务器上时出现此错误

错误:函数makepoint(未知,未知)不存在第4行:distance_sphere(makepoint('14 .2995419','41.0310868'),mak ... ^提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

谷歌搜索,我发现这可能是postgis的问题...然后我遵循了该指南http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1204src ,我将所有内容都安装在服务器上...

什么都行不通...而且我有变得发疯的危险...有人知道如何修复它!

如前所述,这些函数以前称为“ makepoint”和“ distance_sphere”,但后来用“ ST_”前缀重命名(ST =“空间类型”)。

一个非常简单的解决方案是使用以下方法将legacy.sql函数添加到template_postgis (如果使用)或目标数据库中:

sudo -u postgres psql -d template_postgis -f /usr/share/postgresql/9.1/contrib/postgis-2.0/legacy.sql

从错误看来,您似乎将要点括在引号中,因此抱怨未知,未知。 ST_Makepoint将期望使用两个双精度数字作为输入。 如注释中所述,您还应在所有空间函数之前加上ST_。

如果从psql提示符下运行以下命令:

\df ST_MakePoint

您将看到支持2、3和4尺寸的3个版本,所有版本均加倍。

例如:

select st_distance_sphere(st_makepoint(14.2995419,41.0310868), st_makepoint(15.2995419,40.0310868)) as dist;

返回139665.10 m

对于有价值的产品,ST_被认为是符合标准的。 Oracle在其所有空间函数之前都使用ST_,Postgres / Postgis也是如此,MySQL支持ST_和直接函数名,并且Microsoft决定在SQL Server 2008中实现空间sql时完全删除下划线,因此您拥有STUnion。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM