다각형 / 다중 다각형 기능을 갖춘 괜찮은 모양의 파일이 있습니다 (파일 크기는 약 500MB). 실제로 해안선을 나타내는 지형지 물이있는 전 세계의 형태 파일입니다. 이 데이터를 그리드를 사용하여 나눌 필요가 있습니다. 분명히하기 위해 데이터를 '정렬'하고 싶지 않지만 실제로 다각형을 타일로 자릅니다. 나는이 질문이 전에 요청되었지만 내가 찾은 해결책이 효과가 없다는 것을 알고 있습니다.
난 노력 했어:
QGIS를 사용하고 모양 파일 내용을 벡터 격자와 교차하면 결과가 끔찍합니다. 작은 땅 덩어리가 때때로 그것을 만드는 것처럼 보이지만 대부분의 주요 대륙은 마술처럼 사라집니다. 이 방법은 훨씬 간단한 데이터 (즉, 적은 포인트)로 실제로 잘 작동한다는 점에 유의해야합니다.
OGR의 교차 도구 사용 나는 ogr2ogr을 통해 그리고 심지어 내 자신의 C ++ 도구를 굴려서 시도했다. 둘 다 QGIS와 같은 문제가 있습니다. 또한 간단한 파일에는이 문제가 나타나지 않지만보다 복잡한 파일에는 실패합니다. 참고로 20MB 이하의 호주와 뉴질랜드의 쉐이프 파일을 사용하고 있는데 QGIS와 OGR 모두 '그리드 화'에 실패했습니다.
누군가 교차점 기능이 있기 때문에 PostGIS 사용을 한 번에 제안했지만 PostGIS의 ST_Intersect는 OGR과 동일한 GEOS 백엔드를 사용합니다. 실제로 그들은 둘 다 내가 알 수있는 한 동일한 기능을 호출하므로 PostGIS가 다른 결과를 낳을 것이라고 생각하지 않습니다.
나는 내가 시도 할 수있는 다른 것에 대한 제안을 찾고 있었다. 매우 상세한 모양 파일을 타일로 나눌 수있는 강력한 응용 프로그램 또는 툴킷이 필요합니다.
편집 : 더 많은 정보 추가
심바 만구 님의 질문에 답변 :
shapefile은 기본적으로 OpenStreetMap의 해안선 데이터입니다. 'processed_p'파일 (타일로 나뉘 지 않음)의 병합 된 버전으로 개발자 목록을 이메일로 보냅니다. 타일을 겹치는 부분 (100km x 100km 청크로 겹침)이 반드시 원하는 것은 아닙니다. 겹치는 것을 원하지 않으며 그리드 크기를 자유롭게 선택할 수 있습니다. 기본 processing_p.
기본적으로 해안선 데이터에는 QGIS에서보고 한 지오메트리 오류가 있습니다. 이 문제를 구체적으로 해결하기 위해 고안된 코드를 사용하여 작성한 작은 도구로 이러한 오류를 수정합니다 (해안선 데이터의 지오메트리 오류 복구 : https://github.com/tudelft-gist/prepair ). 이 도구로 파일을 실행하면 QGIS에서 발생하는 거의 모든 오류가 수정됩니다. 파일을 청소 한 후에 만 교차를 시도합니다.
정확히 QGIS를 사용하여 수행 한 작업 : 데이터를 열어 QGIS에서 제대로 표시되는지 확인하십시오. 지정된 간격으로 벡터 그리드를 사용하여 타일 레이어를 만든 다음 두 레이어를 교차시켜 타일로 나눕니다. 작은 데이터 세트를 사용해보십시오. 오세아니아 (Aus, NZ)의 기능을 선택하여 더 작은 데이터 세트를 사용해보십시오.이 모양 파일의 크기는 <20mb입니다. 다시 나누면 작동하지 않습니다.
OGR로 수행 한 작업 : spat_extent와 함께 '-spat'및 '-clipsrc'옵션을 직접 사용하는 ogr2ogr 또한 WKT에서 작동하는 작은 C ++ 도구를 작성 했으므로 ogr2ogr을 사용하여 shapefile을 WKT로 변환 한 다음 텍스트 파일을 내 응용 프로그램에 공급합니다. 파일을 통해 실행되며 http://www.gdal.org/ogr/classOGRGeometry.html에 설명 된 Intersection () 메소드를 호출합니다 . 나는 그것이 ogr2ogr을 직접 사용하는 것과 똑같은 일을 끝내는 것으로 생각합니다.
브렌트에 대한 답변 :
- 그렇습니다. 모든 것은 WGS84 Lat / Lon에 있습니다.
- 주어진 그리드 타일 세트의 경우 각 타일에 더 공간적으로 지역화 될 수있는 조각난 피처가 아닌 하나의 거대한 다중 다각형을 교차시키는 데 시간이 더 오래 걸리지 만 그 반대가 사실이라고 생각했을 것입니다. 흥미로운 제안입니다. 다시 시도하고 다시 신고하겠습니다.
- 프로세스 중에 속성 필드가 유지되지 않으며 지오메트리에만 관심이 있습니다.
- 확실하지 않지만 주어진 그리드 타일과 겹치는 다각형을 선택한 다음 교차를 수행해야한다고 말하고 있다고 생각합니다. QGIS에서는 수동으로 너무 번거 롭습니다. 내 도구는 이미 경계 상자 확인을 통해 어느 정도까지이 작업을 수행합니다. 약간의 속도 향상이 있지만 최종 결과는 여전히 좋지 않으며 눈에 띄게 다르지 않습니다.
- 이것은 옵션이 아닙니다. 지금은 데이터를 1 lat x 1 deg lon으로 나누려고 노력하고 있으며 모든 경우에 작동하는 일반 / 강력한 방법을 찾고 있습니다. 더 나은 결과를 얻을 수 있는지 확인하기 위해 그리드 크기 (예 : 10x10)를 늘리려 고했지만 그리드 크기와 출력 품질 사이에 상관 관계가 없습니다.
편집 # 2 :
나는 이것을 더 많이 사용해 보았고 일반적으로 GEOS와 QGIS (fTools를 사용하는 경우 결과가 GEOS를 다시 사용하는지 여부는 알 수 없음)를 사용하여 결과를 신뢰할 수없는 것처럼 보입니다. 그리드의 크기가 결과와 아무 관련이 없다고 말하는 것이 잘못되었습니다. 그리드가 클수록 결과가 더 좋습니다 (알아도 좋지만 여전히 해결책은 아닙니다). 다음은 주로 작동하지만 실제로는 타일 하나에서 일부 실패한 그리드의 스크린 샷입니다.
형상이 깨끗합니다. QGIS는 "유효성 검사"도구를 사용하여 0 개의 오류를 표시합니다. 나는이 문제를 단계적으로 접근하려고하지 않는다. 시각적으로 명확하지 않고 (더 작은 타일이 아닌) 데이터 집합의 교차점에서 특정 기능이 실패했는지 여부를 확인하는 것은 실용적이지 않습니다.