나는 당신에게 무엇이 도움이 될지 생각합니다. 몇 가지 가정을 기반으로 할 것이지만 가능한 동일한 기능 목록을 좁히는 데 도움이됩니다. 자동화 된 프로세스는 아니지만 수동으로 복제본을 확인해야합니다. 주석을 기반으로 자동화 된 도구가 속성을 비교하지 않는 것처럼 보이므로 실수로 기능을 삭제하지 않을 수 있습니다.
ArcMap 사용
(1) 상황이 잘못 될 경우에 대비하여 쉐이프 파일을 복사하십시오.
(2) 셰이프 파일에 열을 이중으로 추가합니다.
(3) 가능한 가장 설명적인 (가장 정확한) 형식을 사용하여 각 지형지 물의 면적을 계산하십시오. 반올림이 문제가되지 않을 수 있습니다.
(4) 해당 열에서 요약을 실행하십시오 (요약). 요약에서 고유 식별자를 선택하고 첫 번째와 마지막을 모두 표시하십시오.
(5) 출력 테이블에서 개수 필드가 1보다 큰 레코드를 찾으십시오 .
(6a) 기능을 수동으로 확인하고 더 이상 중복이 없을 때까지 프로세스를 반복하십시오.
(6b) 고유 한 ID 목록을 만들고 arcpy를 통해 지형지 물을 삭제할 수는 있지만 동일한 영역에서 동일하지 않은 두 지형지 물이있을 가능성이 있습니다.
ArcPy를 사용하는 다른 기술
위의 답변을 구성 하면서이 데이터의 여러 작성자가 실제로 중복 된 기능에 대해 동일한 고유 식별자를 사용했을 가능성이 있다고 생각했습니다. 경우 그런 경우가, 당신은 arcpy에서 루프를 통해 중복을 찾을 수 있습니다.
ArcPy를 사용 하여이 작업을 수행하는 방법은 시스템에 부담을 줄 수 있으며 약간의 시간이 걸릴 수 있습니다.
(1) shapefile의 사본을 작성하십시오 (다시의 경우).
(2) 중복을 나타내는 새 열을 추가하십시오. 'y'또는 'n'또는 0 또는 1 또는 어떤 것이 든 작동하는 것.
(3) 고유 식별자를 저장하기 위해 파이썬으로 목록을 만듭니다.
(4) 업데이트 커서 ( arcpy.UpdateCursor('LAYERNAME')
)를 실행하십시오 . 각 레코드에 대해 목록에 해당 식별자가 포함되어 있는지 확인하고 열이 있으면 중복으로 표시하십시오.
myList = []
rows = arcpy.UpdateCursor("layername")
for row in rows:
if str(row.UniqueIdentifier) in myList:
#value duplicated
row.DuplicateColumnName = "y"
else:
#not there, add it
myList.append(row.UniqueIdentifier)
rows.updateRow(row)
(5) 그런 다음 표시된 열과 원하는 것을 비교하거나 수행 할 수 있습니다.
이러한 비교를 수행하는 더 좋은 방법이있을 수 있지만, 두 가지 방법이 효과가 있거나 최소한 시작해야한다고 생각합니다.
편집하다
elrobis 의 주석을 기반으로 최소 경계 사각형을 사용하여 잘못된 피처를 제거 할 가능성을 더욱 줄일 수 있습니다.
ArcMap을 사용하면 데이터 관리에서 최소 경계 지오메트리 도구를 실행할 수 있습니다 . 옵션을 확인한 후 CONVEX_HULL 옵션을 사용하는 것이 가장 좋습니다.
당신이 비교하는 경우 MBG_APodX / Y1 , MBG_APod_X / Y2의 와 함께 필드를 MBG_Orientation 중복, 당신은 중복 된 기능의 좋은 아이디어를 얻을 수 있어야합니다. 위에서 설명한 Summarize 방법을 사용하여 비교 하는 것이 좋습니다 . 경계 사각형에서 정점 (좌표) 중 하나를 선택하여 복제본을 찾습니다. 부수적 인 '일치'가 발생할 수 있지만 다른 정점과 방향을 추가하면 결과 기능이 중복되는 것이 상당히 안전합니다.
나는 그것을 사용하지 않고이 도구의 결과를 확신하지 못하지만 ArcMap에서 요약 통계 도구 를 사용하면 결과 모양 파일을 쉽게 검사 할 수 있습니다 . 내 단일 열 옵션 대신 여러 열을 요약 할 수있는 것처럼 보입니다.
중복되지 않은 기능을 삭제할 가능성에 대한 걱정없이 완전히 자동화 된 방법이 있다고 생각하지 않습니다. 이러한 방법은 수동으로 검토해야하는 기능의 수를 제한하는 데 도움이됩니다.