2014-06-05 2 views
0

마이그레이션 포스트 그레스 9.1-8.4 나는이 오류 나는 그 PostGIS와 문제가 될 수보고 인터넷 검색을기능 makepoint의 PostgreSQL의 9.1 오류 PostGIS와

ERROR: function makepoint(unknown, unknown) does not exist LINE 4: distance_sphere(makepoint('14.2995419','41.0310868'),mak...^HINT: No function matches the given name and argument types. You might need to add explicit type casts.

을 얻을 새 서버로 내 프로젝트를 이동 ... 다음 내가 가진

아무것도 작동하지 않습니다 ... 내가 미친되기의 위험에 처해 있어요 ...이 가이드 http://trac.osgeo.org/postgis/wiki/UsersWikiPostGIS20Ubuntu1204src을 따라 내가 서버에있는 모든 설치 ... 는 사람이 그것을 해결하는 방법을 알고 있나요!?

+2

어쩌면 [ST_distance_sphere] (http://www.postgis.org :

정말 간단한 해결책 중 하나를 당신의 template_postgis (경우에 사용) 또는 같은 것을 사용하여 대상 데이터베이스에 legacy.sql 기능을 추가하는 것입니다 /docs/ST_Distance_Sphere.html)? – DrColossos

+0

@DrColossos가 맞습니다. ['ST_MakePoint'] (http://postgis.refractions.net/docs/ST_MakePoint.html). PostGIS 공간 함수의 전부 또는 적어도 대부분은'ST_'라는 접두어를 얻었습니다. – elrobis

답변

1

오류로 인해 포인트를 따옴표로 묶어서 알 수없는 알 수없는 것에 대한 불만을 표시하는 것처럼 보일 수 있습니다. ST_Makepoint는 2 개의 배정도 숫자를 입력으로 기대합니다. 주석에 언급 된 것처럼 모든 공간 함수 앞에 ST_를 접 두어 야합니다.

당신은 A 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_ 표준의 준수로 간주됩니다. 오라클은 Postgres/Postgis와 마찬가지로 모든 공간 함수 이전에 ST_를 사용합니다. MySQL은 ST_와 직선 함수 이름을 모두 지원하며 Microsoft는 SQL Server 2008에서 spatial sql을 구현할 때 밑줄을 모두 삭제하기로 결정했습니다. 예를 들어 STUnion이 있습니다.

2

앞에서 지적했듯이이 기능은 이전에 "makepoint"및 "distance_sphere"라고했지만 나중에 "ST_"접두어 (ST = "공간 유형")로 바뀌 었습니다.

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

흥미로운 아이디어와 OP의 즉각적인 문제를 해결할 것입니다. 필자의 경험에 비추어 볼 때, 깔끔하게 업그레이드하는 것이 더 좋으며, 일부 기능은 새로운 버전에서 향상 될 것입니다. –