ArcMap에서 동일한 지오메트리로 중복 피처를 제거 하시겠습니까?


15

피처 레이어에서 각 지오메트리를 고유하게 식별 할 수 있습니까?

기본적으로 동일한 지오메트리로 표현되는 많은 데이터 행이있는 다각형 피처 레이어가 있습니다. 고유 한 각 형상마다 1 행을 원합니다. 그래서 지오메트리의 모양을 기반으로 속성을 결합하는 기본 제공 방법론을 찾고 있습니다.

Postgres 세계에서 왔으며이 문제를 해결할 수는 있지만 ESRI 도구를 사용하여 프로그래밍 방식으로 수행하는 방법을 알 수는 없습니다.


당신은 동일한 지오메트리에 대한 여러 레코드가 있고 동일한 레코드 를 결합하고 싶다고 말하는가 ? 만약 그렇다면 ... 지역이나 그와 비슷한 것을 기초로 해산 할 수 있습니까? 어쩌면 여기에 질문이 없습니다.
Clickinaway

맞습니다. 공유 된 유일한 자연 속성이 지오메트리 자체 인 동일한 지오메트리입니다. 면적 작동 할 수 있지만 두 개의 서로 다른 형상이 동일한 면적을 가지고 있다고 보장 할 수는 없습니다.
Dylan Hettinger

내 게시물을 참조하십시오. 여러 필드에서 디졸브를 실행할 수 있습니다.
Paul

@Paul .... 입력 내용을 반영하도록 응답을 편집 한 것을 확인했습니다. 도움이 되었기를 바랍니다.
Clickinaway

답변:


22

고급 라이센스가있는 경우 동일 항목 찾기 또는 동일 항목 삭제를 사용할 수 있습니다 .

둘 다 동일한 속성을 가진 피처를 찾거나 삭제하거나 모양 필드가 지정된 경우 동일한 지오메트리를 찾는 데 사용할 수 있습니다.

고급 라이센스가없는 경우이 게시물 이 유용합니다.

요컨대, 속성 테이블에서 X, Y에 대해 두 개의 필드를 추가하고 해당 필드에서 Dissolve 를 실행 합니다.

동일한 중심을 공유하지만 기하학적으로 동일하지 않은 다각형이있는 경우 두 개의 다른 필드 (주변 및 면적)를 추가 할 수 있습니다. 거의 모든 일반적인 경우에 대해 동일한 형상을 식별하기에 충분해야합니다. 아래 @whuber의 의견을 참조하십시오.


포인트 데이터가 정확하다고 가정합니까? 먼저 중심을 만들 것을 제안하는 것에 대해 생각했습니다. 그는 여전히 같은 지오메트리의 많은 행이 있다고 말하고 있습니다. 그것은 거의 클래스 / 범위에 따라 분류하는 것처럼 들립니까? 그러나 그것은 또한 기하학의 모양을 말합니다 ... 그래서 나는 면적이나 둘레 (또는 비율을 달성하기 위해 두 가지의 조합)를 기반으로 해산에 기울고 있습니다.
Clickinaway

1
사실, 내가 링크 한 게시물은 다각형입니다. 동일한 중심을 갖는 동일하지 않은 두 개의 다각형이있을 가능성이있는 경우, 면적과 중심에서 분해 할 수 있습니다.
Paul

+1 정답입니다. 원칙적으로 중심, 둘레 및 면적은 여전히 ​​다각형을 고유하게 식별하지 않을 수 있지만, 반대의 예는 약간 고안되었습니다. 불규칙하거나 자연적이거나 수동으로 디지털화 된 객체를 고유 한 ID로 해싱하려면이 4 가지 값이 신뢰할 수 있어야합니다. 좀 더 쉽게 얻을 수있는 값을 원하면 피처의 경계 상자 좌표와 정점 수를 사용하십시오.
whuber

@whuber 모든 정점의 좌표를 비교하는 것이 동일한 지오메트리를 결정하는 유일한 확실한 방법입니까? 지오메트리의 배경은 매우 약하므로이 모든 것이 매우 매력적입니다.
Paul

질문에 대한 답은 "동일한"이라는 의미에 따라 다릅니다. 예를 들어, 다각형의 가장자리를 따라 새로운 정점을 삽입하려는 경우 "동일한"다각형입니까? 아마도 정점이 다르더라도 세계에서 동일한 기능 을 나타내는 의미입니다 . 이 관점에서 유일하게 확실한 테스트에 대한 것은 두 다각형의 (이론적 설정) 차이가 비어 있는지 여부입니다. 그러나 신원이 정점과 정점 간의 일치를 의미한다는 더 엄격한 견해를 취하면 하나의 다각형이 다른 지점에서 정점 목록을 시작할 수 있기 때문에 여전히 까다 롭습니다.
whuber

1

설문 조사 데이터를 기반으로하는 데이터 세트가 있습니다. 내 문제는 새로운 설문 조사 샷을 가져 오기 전에 이전 기능이 항상 제거되지는 않는다는 것입니다. 따라서 우리는 서로 다른 지오메트리로 '중복'되었습니다. 12000 피처 데이터 셋에서이를 확대하고 식별하기는 어렵습니다. ArcMap Basic 10.2 사용 : 여기에 내가 만든 해키 모델이 있습니다.

  1. 원래 레이어의 각 피처 버퍼 (입력 반경 포함) (선택 또는 비 선택)
  2. 버퍼 계층의 각 기능에 대해 반복
  3. 관계에 따라 원본 레이어에서 선택
  4. "행 수"선택된 기능
  5. 버퍼 레이어에 대한 필드 계산 행 수 값 = 원래 피처의 반경 내에있는 피처 수

나는 바퀴를 다시 발명했다. 또한 모델 빌더에 좌절하고 기본적으로 모든 것을 불독했습니다. 더 우아한 솔루션이 있어야합니다. 나는 비판과 제안을 기꺼이 받아 들일 것이다.

또한 이것은 Model Builder 내에서만 올바르게 실행되는 것 같습니다. 도구 상자에서 실행하며 버퍼 계층을 저장하지 않습니다.

중복 피처 찾기


1

나는 겹치는 버퍼 다각형 문제를 평평하게하는 것을 극복하기 위해 얼마 동안 같은 질문에 대한 답을 찾고 있었고 그에 대한 강력한 해결책을 찾았다 고 생각합니다. 사실 @Whuber의 의견,

원칙적으로 중심, 둘레 및 면적은 여전히 ​​다각형을 고유하게 식별하지는 않지만 반대의 예는 약간 고안되었습니다.

@Paul의 대답은 계속 노력해야 할 주요 동력이었습니다. Spatial Join 도구의 ARE_IDENTICAL_TO 연산자를 사용합니다. 이는 다른 동일한 검출기 중에서 가장 효율적이기 때문입니다. 단계는 다음과 같습니다.

  • 모든 모양을 서로 다르게 유지하기 위해 입력을 자기 조합하십시오.
  • EX_OID 와 같은 행의 원래 OBJECTID (예 : OID 필드 유형)를 유지 / 복사하는 더미 필드를 작성하십시오 .
    • 대상 및 결합 기능 매개 변수로 처리하려는 기능 클래스에서 공간 결합을 실행하십시오. 이전에 생성 된 더미 필드 (두 번 나타남)의 필드 매핑에 FIRST (기본값 또는 LAST 선택)의 병합 규칙이 있는지 확인합니다. 다른 필드는 오버랩 요약을 사용하므로 원하는 출력을 제공하지 않을 수 있습니다. 이 단계는 모든 겹쳐지는 맨 위에있는 공통 모양 OBJECTID를 선택합니다 (즉, FIRST).

다음 단계는 Python 또는 WITHOUT의 두 가지 방법으로 수행 할 수 있습니다.

피톤과 함께

  • 아래 코드를 사용하여 찾으려는 고유 ID를 추출하십시오.

print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")])).

필자의 경우 EX_OID_1 인 더미 OID 필드의 두 번째 사본을 사용하고 있습니다.

  • 이 코드의 출력을 복사하여로 처리 된 원래 피쳐 클래스 의 정의 쿼리 에 붙여 넣습니다 OBJECTID IN (<PASTE_COPIED_VALUES_HERE>). 결과는 겹치는 부분의 통합 된 특징을 보여줍니다. 여기에는 30,000 자 크기 제한이 있습니다. 이 문제를 해결하려면 "파이썬없이"단계를 따라야합니다.

피톤없이

  • 빈도 도구를 사용하여 더미 OID 필드의 두 번째 사본에 고유 값을 나열하십시오. 필자의 경우 EX_OID_1입니다.

  • 마지막으로 "일치하는 레코드 만 유지"옵션을 선택하여 빈도 도구의 EX_OID_1 출력과 함께 원래 피쳐 클래스의 OBJECTID 필드에 가입 하십시오.

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