오픈 소스 도구를 사용하여 중복 다각형 제거


13

중복 형상이 있지만 형상이 다른 형상 (예 : 속성이 XX 인 다각형 및 속성이 XY 인 동일한 다각형)을 포함하는 shapefile이 있습니다. 중복을 식별 한 다음 올바른 속성을 가진 것을 선택하여 다른 것을 삭제하고 싶습니다.

OpenJump / Kosmo에서 토폴로지 도구를 사용해 보았지만 성공하지 못했습니다. 그들은 내가 원하는 것을 수행하는 '복제본 삭제'도구를 가지고 있습니다. 단지 유지할 ​​기능을 선택하게하지 않고 기능 중 하나를 임의로 삭제하는 것 같습니다.

QGIS, OpenJUMP, Kosmo 등에 액세스 할 수 있으며 필요한 경우 다른 오픈 소스 / 무료 도구를 설치할 수 있습니다.

생각?

답변:


7

PostGIS 외에도 토폴로지 오픈 소스 GIS (GRASS)를 사용할 수도 있습니다.

  1. 다운로드 및 설치
  2. 위치 관리자를 시작하고 선택하고 도구를 사용하여 SHAPE 파일 ( "GRASS 위치"라고 함)에서 새 프로젝트 데이터베이스를 생성하십시오. 단계별 안내서 는 여기를 참조하십시오.
  3. SHAPE 파일 가져 오기
  4. 일련의 옵션을 제공하는 "v.clean"도구 를 사용하십시오.
  5. "v.out.ogr"을 사용하여 맵을 SHAPE 파일 형식으로 다시 내보내기

(!) 참고 : 우리는 당신이 우리의 웹 포털을 통해 데이터를 연마 할 수 있도록 이것에 대한 WPS를 제공 할 계획이다.


v.clean을 사용하면 사용자가 토폴로지 오류를 하나씩 '대화식으로'식별하고 수정할 수 있다고 생각하지 않습니다. 내가 틀렸다면 정정 해주세요.
Darren Cope

나는 당신이 대화식으로하고 싶었던 것을 놓쳤다. v.digit 디지타이저가 사용하는 도구입니다.
markusN

Markus, v.digit를 빠르게 돌리면 원하는대로 작동하지 않습니다. v.digit를 사용하여 작업을 수행하는 방법에 대한 예를 들어 줄 수 있습니까?
대런 코프

1
실제로, shapefile을 GRASS로 가져 오기만하면 2_polygon 레이어와 겹치는 다각형 레이어가 만들어집니다. 나는 이것이 나에게 충분할 것이라고 생각한다!
대런 코프

3

이 경우에 내가 사용하는 것입니다. 내가 알기로는 올바른 속성을 가진 것을 결정하기 위해 수동 검사를 수행해야합니다. 그런 다음 두 단계로 수행합니다. 먼저 폴리곤이 복제 된 PostGIS에서 테이블 또는 뷰를 만든 다음 복제본을 삭제하려는 원래 레이어와 함께 데스크탑 GIS에서이 테이블을 엽니 다. 그러면 중복 테이블을 통해 복제본으로 연결되며 원래 테이블이나 shapefile 또는 그 무엇이든 삭제할 수 있습니다.

중복을 찾는 쿼리는 gid라는 고유 ID와 the_geom이라는 기하학 열이있는 경우 다음과 같습니다.

create table duplicates as
select a.the_geom, a.gid, b.gid from mytable a, mytable b 
where ST_Equals(a.the_geom, b.the_geom) and a.gid!=b.gid;

ST_Equals에는 몇 가지 변형이 있지만 ST_Equals가 원하는 것으로 생각합니다. 그러면 중복 형상과 다각형의 첫 번째 및 두 번째 경우의 gid (id)가있는 테이블이 제공됩니다. 그래도 같은 쌍의 복제본을 두 번 얻을 수 있지만 그 위치를 보여주기를 원하기 때문에 중요하지 않습니다.

HTH 니켈 라스


3

PostGIS 1.5.x를 사용하는 경우 ST_HausdorffDistance () 함수를 확인하십시오.
중복 형상은 0의 값을 생성합니다. 언급 된 자체 결합과 같이 사용하십시오. 다각형 모양을 비교하는 데 매우 깔끔합니다.


0

더 간단한 방법입니다. 데스크탑 GIS에서 면적을 계산하고 면적 오름차순 또는 내림차순으로 정렬하십시오. 이제 속성 표에서 복제 된 객체를 보려면 모든 줄을 확인해야합니다. 그것은 때로는 잘못 될 수 있지만 복제되지 않은 객체에 대해 정확히 동일한 영역을 가지고 있지 않다는 가정에 근거합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.