2010-07-04 4 views
2

방금 ​​PostGIS & Postgresql을 사용하기 시작했으며 모든 것이 원활하게 실행되고 있습니다. 포인트가있는 다중 폴리곤을 찾으려고 할 때 막혔습니다. 나는 하나의 내부에 거짓말을하고 데이터베이스 내에서 다중 폴리곤 데이터 타입의 유일한 두 개의 포인트를 가지고 있습니다. 그들은 같은 요점이 아니며 서로 다른 형식입니다.PostGIS 교차로 문제 해결

예제 1, 어떤 형식인지는 모르겠지만 예상 한대로 쿼리가 true 값을 반환합니다 (참고로, QGIS에 데이터 집합을로드하고 내부의 점을 가리키면이 값을 발견했습니다).

두 번째 예에서는 내가보고있는 도형 내부에있는 주소를 지오 코딩했습니다. 그러나 쿼리의 결과로 잘못된 값이 반환됩니다.

Shp2pgsql을 사용하여 셰이프 파일에서 직접 데이터베이스에 데이터를로드했습니다. 모양 파일의 SRID는 4269입니다 (GeomFromText 호출 중에 SRID를 지정하는 동안 아래 쿼리를 실행했지만 결과는 동일합니다).

두 좌표 세트의 차이점은 무엇입니까? lat/lon 값을 사용하는 POINTS를 사용하여 교차 테스트를 수행하려면 어떻게해야합니까?

1.) SELECT ST_Intersects ((gard = 37 인 wardstable에서 the_geom을 선택하십시오.) ST_GeomFromText ('POINT (1172539 1924462)'));

2.) SELECT ST_Intersects ((gard = 37 인 wardstable에서 the_geom을 선택하십시오.) ST_GeomFromText ('POINT (-87.6547884 41.96367)'));

감사합니다.

답변

1

ST_Intersects와 같은 공간 조작을 수행 할 때 다중 다각형과 점 데이터 세트가 모두 같은 프로젝션 (SRID)에 있어야합니다. 두 번째 예제에서 점의 좌표는 위도/경도 (4326)입니다. 당신은 ST_Transform를 사용하여 4269로 변환해야합니다

SELECT ST_Intersects((select the_geom from wardstable where gid=37), ST_Transform(ST_GeomFromText('POINT(-87.6547884 41.96367)',4326),4269)); 

편집 : 나는 ST_GeomFromText의 SRID 매개 변수를 놓쳤다.