簡體   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