2011-12-28 2 views
1

내 애플리케이션에서 위치 기반 계산을 위해 PostGis를 사용하고 있습니다. 테이블에 나는 지형 (Point (lon lat)) ...에있는 'location'이라는 컬럼을 가지고있다. 테이블에있는이 행의 수와 같다. 포인트 (포인트 (lon lat))를 전달하고 모든 포인트에서이 포인트 (i passed)와 위치 컬럼 사이의 거리를 확인하고 싶습니다. 거리가 5m 미만이면 .... 포인트의 이름. 이것을 쿼리하는 방법.PostGis에서 포인트 열과 점 사이의 거리를 묻는 쿼리

답변

2

데이터의 당신의 SRID가 있다고 가정하면 4326 당신이 찾고있는 쿼리는 다음과 같습니다 ST_DWithin의 단위 (0.0008)이 4326 경우, 영사 같은 단위에 있는지

SELECT the_geom FROM mytable WHERE ST_DWithin(the_geom,ST_GeomFromEWKT("srid=4326;POINT(lon lat)"), 0.0008); 

주 그들은 학위입니다. 투영 데이터가 미터 단위 인 경우 미터를 사용할 수 있습니다.

프로덕션 응용 프로그램의 경우 지오메트리 유형을 사용해야하므로 빠릅니다. question 이전 다음 유래에서 :

짧은 답변 : 지리은 장거리에게 거리 측정을 지원하는 새로운 데이터 유형입니다. 지리학을 사용하는 경우 에 평면 좌표계에 대해 자세히 배울 필요가 없습니다. 지리는 일반적으로 입니다. 거리 및 길이를 측정하는 것이 가장 중요하다면 에 데이터가 있습니다. 기하 데이터 유형은 이전 데이터 인 을 지원하는 많은 기능을 가지고 있으며 서드 파티 도구에서 큰 지원을받습니다. 공간 참조 시스템에 매우 익숙하거나 모든 데이터가 단일 공간 참조 시스템 (SRID)에 들어있는 지역화 된 데이터를 처리하고 있거나 이 많은 공간 처리를 수행해야하는 경우에 가장 좋습니다. 8.35, "PostGIS 함수 지원 매트릭스"에서 현재 지원되는 내용과 이 아닌 것을 확인하십시오.

-3

큰. 감사합니다. 그것은 데이터베이스에서 잘 작동합니다. PHP에서 다음과 같은 코드가 있습니다. 쿼리 실패 :
$ locationresult = pg_query ($ con, "SELECT id, name FROM gps.locationnames WHERE ST_DWithin (location, ST_GeographyFromText ('POINT (lon lat)')), 500) ") 또는 die ('Query Failed :'. pg_last_error ($ con));

여기에서 문제가 무엇입니까?

+0

다른 질문으로 게시해야합니다. 오류 메시지 란 무엇입니까? –

+0

새 질문을 입력하고 PHP로 태그를 지정하십시오 – Twelfth

관련 문제