겹치는 다각형을 녹이는 방법?


10

ArcGIS 9.3에서 다각형 피처의 분해에 관한 쿼리가 있습니다. 베어 본 라이센스와 VB에 대한 기본 지식 만 가지고 있습니다.

약 4500 개의 다각형이있는 대형 shapefile이 있고 겹치는 것을 해산 할 수 있는지 알고 싶습니다. 기본적 으로이 레이어를 별도의 영역이 포함 된 모양 파일로 바꾸고 싶습니다. 따라서 하나의 다각형이있는 경우 그대로 유지되지만 여러 다각형이 겹치는 부분은 1로 분해됩니다. 각 개별 영역에는 고유 한 특성 세트가 있습니다. 셰이프 파일은 지금까지 매우 자주 변경되어 편집기 도구를 사용하여 겹치는 영역을 모두 해결하고 수동으로 해결했지만 훨씬 빠른 방법이 있습니다!

이것이 어떻게 이루어질 수 있는지에 대한 통찰력이 있습니까?


디졸브 도구를 사용하고 내 보낸 속성 테이블을 조인했는데 완벽하게 작동합니다! 디졸브 도구는 공간 위치가 아닌 속성에서만 작동하므로 알기 매우 유용하다고 생각했습니다. 또한 ModelBuilder 코드는


좋은 답변입니다. Brad Nesom, 원래 속성 테이블 값을 용해 된 shapefile에 어떻게 얻습니까?
Gunnar

나는 당신이 한 일이 필요하지만 디졸브 도구를 실행할 때 모든 모양을 내 모양으로 병합하므로 작동하지 않습니다. 어떻게 운영 했습니까?
Federico Gómez

답변:


13

뭔가 빠졌을 수도 있지만 기본 Dissolve 도구 (데이터 관리 도구 상자의 어딘가에 있음)가이 작업을 수행하지 않습니까? artwork21의 답변에서와 같이 코드를 망칠 필요가 없습니다. 디졸브 툴을 열고 피처 클래스를 선택하고 디졸브 할 필드를 선택하지 않은 다음 '다 부분 포 이곤 생성'을 선택 취소하면 모든 폴리가 하나의 큰 멀티 파트 폴리가됩니다.

나는 지금 내 앞에 아크가 없지만 질문을 올바르게 읽고 있다면이 방법을 사용하기 전에이 작업을 수행했습니다. 여기서 유일한 관심사는 테이블의 속성입니다. 데이터를 알고 있으므로 도구의 통계 필드 부분에서 각 필드를 결합하는 방법을 선택해야합니다.

이 프로세스가 매우 자주 수행되거나 자동으로 수행되도록하려면 모델 빌더를 사용하여이를 수행하고 스크립트로 내보내십시오. 그러나이 도구를 작성하려면 10 초가 소요됩니다.


14

@Tom Parker-MWrenn이 정확합니다.
분해 할 속성을 선택하는 옵션이 있습니다 (속성 제거를 수행함). 또는 속성 없음 (공간적 분해를 수행함).

통계 및 원하는 속성을 선택하십시오. (이것은 원하는대로 작동하지 않을 것입니다).

옵션

디졸브를하기 전에. 새 필드를 작성하고 FID를 계산하십시오.
그런 다음 속성의 dbf를 내 보내면 나중에 다각형과 다시 결합 할 수 있습니다.

이에 대한 도움이 필요하면 알려 주시면 더 많은 스크린 샷을 게시하거나 arcgis.com 리소스 센터에서 도움을 받으십시오.

다음 스크린 샷에서 이름은 모든 다각형에서 동일합니다 (9.3.1은 아크 맵에서 올바르게 용해되지 않는 것 같습니다). arccatalog에서 사용해보십시오.

애터 디졸브

다른 사람이 더 나은 방법을 가질 수 있습니다.

내가 생각할 수있는 유일한 다른 방법은 위치 (서로 교차하는 다각형)로 선택하는 것입니다.
그것들을 별도의 파일로 내 보낸 다음 용해하십시오.
그런 다음 각 파일이 디졸브 된 후 자유 병합 레이어를 사용할 수 있습니다 (et-geo-wizards).


4

Model Builder에서 모델을 작성하고 스크립트를 내 보낸 다음 해당 스크립트를 ArcMap vba의 UIButtonControl에 복사하여 붙여 넣을 수 있습니다. 아래 스크립트 예제를 참조하십시오.

Private Sub Dissolve_Click()

' Create the Geoprocessor object
set gp = CreateObject("esriGeoprocessing.GPDispatch.1")

' Load required toolboxes...
gp.AddToolbox "C:/Progra~1/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx"

' Local variables...

Dim test_shp as string

test_shp = "C:\Temp\test.shp"
Output_Feature_Class = "C:\Temp\test_Dissolve.shp"

' Process: Dissolve...
gp.Dissolve_management test_shp, Output_Feature_Class, "", "", 
  "MULTI_PART", "DISSOLVE_LINES"

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