2014-07-08 3 views
0

나는이 질문이 단순 해 보일 수도 있도록 POstGis에 익숙하지 않지만 실제로 붙어 있습니다. 그래서 4 개의 중요한 행이있는 테이블이 있습니다 : startLon, startLat, endLon, endLat 모두 배정도 유형입니다.PostGis ST_Distance_Spheroid confuch

첫번째 행은 좌표 (이 2 점으로부터 약 7m이고) 보유 :

StartLon: 103.776047 
StartLat: 1.292149 
EndLon: 103.776070 
EndLat: 1.292212 

I를 이용하여 각각의 행에 2 점 사이의 거리를 calculte하려고하면

SELECT ST_Distance_Spheroid(
       ST_GeomFromText('POINT(' || StartLon || ' ' || Startlat || ')',4326), 
       ST_GeomFromText('POINT(' || EndLon || ' ' || Endlat || ')',4326), 
       'SPHEROID["WGS 84",6378137,298.257223563]') 
FROM i3_building.floordata; 

결과가 :

2.87254682929478 

해결되지 않는

,

하지만 수동으로 수행하려고 할 때 :

SELECT ST_Distance_Spheroid(
       ST_SetSRID(st_makepoint(103.776047, 1.292149),4326), 
       ST_SetSRID(st_makepoint(103.77607, 1.292212),4326), 
       'SPHEROID["WGS 84",6378137,298.257223563]'); 

밖으로 주어진 결과는 올바른 :

7.42160512978493 

의 모든 좌표 SRID가 4326 이 도와주세요 수 있어야하므로 GoogleMap으로를 사용하여 발견 나, 감사합니다 :)

답변

0

그냥 결과 2.872 ... 첫 번째 줄의 결과가 아님 id와 같은 키를 사용하여 결과를 정렬하지 않으면 결과가 나타납니다무작위. 좋은 직장 동료로부터 배우십시오 :) PostGIS의 초보자 인 나 같은 다른 사람들을 도울 수 있기를 바랍니다.