오픈 소스 도구를 사용하여 shapefile에서 다각형을 어떻게 분해합니까?


10

현재 프로젝트에서는 국가의 각 행정 구역에 대한 일부 값을 나타내는지도에 데이터를 시각화하고 있습니다. 이 국가의 shapefile을 받았는데, PolyMap과 함께 사용하기 위해 GeoJSON으로 변환하고 있습니다. 이제 작은 부분에 대한 데이터가 없지만 큰 부분에 대한 집계 된 데이터를 얻을 수 있기 때문에 여러 영역을 더 큰 영역으로 클러스터링해야합니다. 이러한 클러스터는 미리 정의되어 있으므로 (예 : A + B + C = D) 클러스터링 된 형상 파일을 생성하고 나중에 GeoJSON으로 변환하는 것이 더 쉬울 것이라고 생각했습니다.

그러나 자동화 된 오픈 소스 도구를 사용하여 이러한 클러스터를 어떻게 만들 수 있습니까? 다른 합리적인 방법도 물론 환영합니다.

답변:


5

내장 된 "선택한 기능 병합"도구를 사용하여 QGIS와 같은 오픈 소스 도구를 사용하여 모양 파일을 열고 기능을 병합 할 수 있습니다 (기능 선택, 병합을 클릭하고 속성을 선택하여 새 병합 된 기능에 상속 함).

물론 우리가 수백 또는 수천 개의 병합에 대해 이야기하고 있다면 이것은 의미가 없습니다. QGIS에서 "속성 별"기능을 병합 할 수 있는지 다른 날 궁금합니다.

편집 : 좋아, 나는 바보입니다, 당신이 당신이 "클러스터"하려고하는 모든 기능 (주 또는 카운티 이름과 같은)에 공통된 속성을 가지고 있다면 이것은 디졸브 도구의 경우입니다. 쉐이프 파일을 열고 디졸브 (QGIS에서 벡터> 지오 프로세싱 도구> 디졸브에 있음)를 선택하고 위에서 언급 한 일반 이름을 가진 열을 선택한 다음 프로세스를 시작하십시오. 이것은 내가 (당신을 오해하지 않은 경우) 당신이 찾고있는 결과를 기대해야합니다.


일반적으로 좋은 조언과 수동 작업이 모두 필요한 경우 설명 된 것처럼 QGIS로 해당 셰이프 파일을 만들 사람을 찾을 수 있습니다. 그러나 (예를 들어 NUTS 코드를 통해 FR413과 FR411을 _FRX1로 병합) 클러스터를 정의한 다음 클러스터 된 쉐이프 파일을 생성하는 스크립트를 실행하고 싶습니다. GUI 도구의 오버 헤드없이 오류를 수정하거나 빠른 추적 변경 사항을 수용하고 싶습니다. 언젠가 최종 사용자가 해당 클러스터를 정의 할 가능성이 있으므로 약간의 유연성이 필요합니다.
Nikolai Prokoschenko

나는 그것을 사용하지 않지만 QGIS에서 모든 것을 수행하기 위해 콘솔을 사용할 수 있다고 생각하므로 GUI가 필요하지 않습니다. 스크립팅 된 솔루션에 완전히 의존하더라도 항상 일종의 테이블에서 해당 클러스터를 정의해야합니다. 따라서이 테이블을 조인 한 다음 디졸브를 수행하여 shapefile을 혼란스럽게하지 않아도됩니다. 이것도 스크립트 가능할 것 같아요?
SAnderka

완벽하게 가능합니다. 저는 GIS의 모든 것에서 완전히 초보자입니다. QGIS 스크립팅을 살펴 보겠습니다. 감사합니다.
Nikolai Prokoschenko

2

수동 작업을 줄이려면 SpatiaLite를 살펴보십시오. 다음을 사용하여 shapefile을 쉽게 가져올 수 있습니다.

spatialite> .loadshp ~/maps/areas areas iso-8859-15
spatialite> UPDATE areas SET Geometry = SetSrid(Geometry,4326);
spatialite> SELECT RecoverGeometryColumn('areas','Geometry',4326,'POLYGON',2);

그런 다음 용해 부분의 경우 :

이러한 클러스터를 정의하고 싶습니다 (예 : NUTS 코드를 통해 FR413 및 FR411을 _FRX1로 병합).

여기서 필요한 함수는 GUnion ()입니다. 두 번째 테이블에서 "클러스터"를 정의 할 수 있습니다. 그런 다음 클러스터 및 영역 테이블을 조인하고 GROUP BY와 함께 GUnion ()을 사용하여 최종 union_table을 만들 수 있습니다.

그런 다음 .dumpshp를 사용하여 shapefile로 내보낼 수 있습니다

spatialite> .dumpshp union_table Geometry new_shapefile iso-8859-15 POLYGON

GeoJSON이 필요한 경우 지금 파일을 변환 할 수 있습니다.

예를 들어 이러한 모든로드, 조인 및 덤프를 처리하는 짧은 스크립트를 Python으로 작성할 수 있습니다.


매우 유망 해 보이며 실험 해 보겠습니다! 감사! 줄 UPDATESELECT줄이 무엇인지 설명해 주 시겠습니까?
Nikolai Prokoschenko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.