2013-02-21 1 views
2

PostGIS의 두 지역 간 교차에 문제가 있습니다. wgs84의 다중 다각형으로 채워진 geography-column이있는 table1이 있습니다 선). 두 번째 테이블 2에는 wgs84에서 한 줄에 하나씩 여러 개의 다각형으로 채워진 지형 열도 있습니다. 그렇다면 둘 사이의 교차 (select (..) where ST_Intersects()).PostGIS : 두 지역 간의 ST_Intersects()가 거짓 결과를 반환합니다.

일부 경우에는 (매우 드문 경우) 교차가 false를 반환하기 때문에 올바르게 작동하지 않습니다. table1의 한 줄에서 지리를 나타내는 재현 된 tif가 있습니다. 탄자니아의 큰 지역을 다룹니다. Table2의 한 줄에 대해 재 투영 된 tif가 있습니다. 일부 km²의 작은 영역 만 커버합니다. ArcMap에서 둘 다 교차하지만 작은 영역은 큰 가장자리에 있지만 PostGIS는 ST_Intsersect (geog1, geog2)에 대해 false를 반환합니다.

table1을 덤퍼를 통해 shapefile로 내보내는 경우 지형의 구석 점이 큰 선의 부분이 아닌 직선으로 연결됩니다. 다음과 같은 결과가 나타납니다. 이제 table2의 영역이 table1의 영역 밖에 있습니다. 그래서 PostGis는이 단순화 된 다각형을 계산하지만, 지리학이란 직선 대신 커다란 원의 일부를 계산한다는 의미로 이해합니다.

두 테이블 모두 실제로 지리가 아니라 지오메트리로 채워지는 것을 확인하기 위해 모든 것을 시도했지만 지형으로의 명시 적 캐스트도 결과를 변경하지 않았습니다.

이전에 이런 일이 발생 했습니까? 아니면 내가 잘못했는지 생각 했습니까? table2에도 기하학과 래스터 열 (= 3 개의 공간 열 모두)이있는 것이 문제 일 수 있습니까?

+0

SRID는 무엇입니까? 둘 다 확인해 봤어? – azzaxp

+0

예, geography-cols에 대한 srid는 두 테이블 모두에서 동일합니다 (WGS84의 경우 4326). –

답변

1

실제 지오메트리를 보지 않고서는 확실히 말할 수는 없지만 큰 원을 그리는 방법이 잘못 해석되어 PostGIS가 올바르게 이해하고 있습니다. 특히 경계 근처의 관계를 다루는 경우 특히 그렇습니다 . 예를 시각화하기 위해 Google 어스 라인 문자열 (폴리곤이 아닌, 큰 원으로 렌더링되지 않은)을 사용하면 상황이 시각적으로 어떻게 작동하는지 명확히하는 데 도움이 될 수 있습니다.

+0

이 모든 모양을 상상하기는 정말 어렵지만 최소한 하나의 프로그램이 틀렸어 야합니다 : PostGIS 또는 파일을 GeoTif로 재 투영 한 NASA의 명령 줄 도구입니다. 두 파일 모두 동일한 파일에 대해 다른 테두리를 생성하기 때문에 두 번째 모양과 교차하는 결과). 문제는 PostGIS가 실제로하고있는 것을 볼 수 없다는 것입니다. 셰이프 파일을 가져 오기 위해 덤퍼 만 사용할 수는 있지만 물론 PostGIS가 지리를 사용할 때 내부적으로 사용하는 것과 같은 모양 일 필요는 없습니다. –

+0

내가 말하는 것을 해석한다면, 그 모양 자체는 정사각형입니다. 또는 더 정확하게는 네 모서리로 정의 된 객체입니다. 소프트웨어간에 차이점은 이러한 구석을 연결하는 선을 어떻게 해석하는지입니다. –

+0

네, 코너가 4 개 있습니다. 그리고 내가 이해하는 한, 기하학은 평면과 같은 직선과 지형을 연결해야하며 지리학은 지구의 큰 원의 일부와 연결해야합니다. 덤퍼는 포인트가 직선으로 연결되어있는 형상 파일을 제공하고, 재 투영 된 파일은 큰 원의 일부인 테두리를 표시합니다. 내가 모르는 것은 PostGIS가 2 지리와 교차 할 때 내부적으로 수행하는 작업입니다. –