21 votos

¿Arreglar miles de pequeños polígonos superpuestos?

Utilizo ArcMap 10.3.

Tengo una capa de diferentes tipos de uso del suelo. He descubierto que muchos polígonos se solapan entre sí y, como resultado, el mismo polígono tiene dos tipos de uso del suelo diferentes.

Utilizando Respuesta de @radouxju He creado una topología para la capa de uso del suelo (con la regla de no solapamiento). A continuación, he utilizado la fusión para corregir los polígonos que se solapaban.

Sin embargo, tengo miles de pequeños polígonos superpuestos. Puedo arreglarlos todos manualmente, lo que me llevará mucho tiempo.

¿Hay alguna forma más rápida de solucionar todos estos errores?

enter image description here

enter image description here


He actualizado el mapa para mostrar todos los tipos de uso del suelo. Los polígonos se superponen unos a otros; no son astillas.

8voto

Daniel Murray Puntos 41

Si sus polígonos son astillas, el comando eliminar funciona bien para fusionarlos en el polígono de área mayor o en el borde más largo.

Si los polígonos están superpuestos puede haber una manera más fácil, pero yo seleccionaría los solapamientos en una capa separada, luego los uniría de nuevo, creando las astillas y utilizando el comando eliminar.

6voto

user62196 Puntos 6
  1. Seleccione un área pequeña y conviértala en dos archivos de forma para ver si este proceso funciona.
  2. Cree un nuevo campo llamado test (número) en s1 y s2.
  3. Interseca dos archivos de forma S1 y S2.
  4. Las zonas que se solapen se identificarán en un archivo independiente denominado, por ejemplo, Común1 (zona sombreada en la figura).
  5. Calcula la prueba de campo como 1 en Común.
  6. Unión S1 y Común
  7. Seleccionar 1 enter image description here del campo de prueba y elimine el área sombreada.
  8. Ahora Fusiona s2 y común. El comando Borrar se puede utilizar para borrar el área común.

6voto

user68492 Puntos 231

¿Ha considerado la posibilidad de dividir las clases de uso del suelo en shapefiles separados para trabajar con ellos de esa manera? Primero pensé en ejecutar una intersección, pero vi que falló más arriba. Sin embargo, si tienes siete shapefiles separados, es posible que puedas manipularlos más fácilmente.

La principal pregunta que tengo es si hay solapamiento, ¿tiene una jerarquía para qué clase gana y debe mostrar al final? Por ejemplo: si se solapan Cropping y Dairy, ¿con cuál se queda? Una vez que haya establecido esta jerarquía, intersecte 2 clases a la vez, empezando por la más baja y terminando por la más alta. Si la salida está vacía en una intersección dada, significa que no se intersecan.

6voto

FelixIP Puntos 4035

La preocupación planteada por @Adam Cara es muy válida. Sin embargo, cuando miré a la auto-intersección que parecía que la mayoría de ellos son o bien bits flacos en el límite entre 2 polígonos masivos O trozos/islas desconectados de un polígono grande dentro de otro. En este caso, borrar los solapamientos y asignar a los solapamientos disueltos el atributo de vecino más próximo (lo que ocurra primero) puede funcionar.

Proceso:

arcpy.Intersect_analysis("Landuse2b #","D:/Scratch/mpart.shp","ALL","#","INPUT")
arcpy.MultipartToSinglepart_management("mpart","D:/Scratch/spart.shp")
arcpy.Dissolve_management("spart","D:/Scratch/dissolved_1.shp","#","#","SINGLE_PART","DISSOLVE_LINES")
arcpy.Erase_analysis("Landuse2b","dissolved_1","D:/Scratch/erased.shp","#")
arcpy.DeleteField_management("spart","FID_Landus;OBJECTID;Lnduse2013;Shape_Leng;Shape_Area")
arcpy.SpatialJoin_analysis("spart","erased","D:/Scratch/sj_1.shp","JOIN_ONE_TO_ONE","KEEP_ALL"…..)
arcpy.Merge_management("sj;erased","D:/Scratch/merge_1.shp"….)
arcpy.Dissolve_management("merge_1","D:/Scratch/dissolved.shp","Lnduse2013","#","SINGLE_PART","DISSOLVE_LINES")

Prueba:

arcpy.Intersect_analysis("dissolved #","D:/Scratch/test.shp","ALL","#","INPUT")

Mensaje:

  • Ejecutando: Intersect "disuelto #" D:\Scratch\test.shp TODOS # ENTRADA
  • Hora de inicio: vie abr 22 10:16:07 2016
  • Características de lectura...
  • Características...
  • Características de montaje...
  • ADVERTENCIA 000117: Advertencia salida vacía generada.
  • Con éxito en Fri Apr 22 10:16:09 2016 (Tiempo transcurrido: 2.34 segundos)

Tenga en cuenta que este mensaje significa que no hay auto-intersecciones en el resultado final de Disolver

Resultado:

https://drive.google.com/file/d/0B6B33FrGNitPT0FvbVdHQm0xMDg/view?usp=sharing

5voto

xenny Puntos 670

Una vez que haya creado una topología, habrá identificado los errores.

En la lista que muestra los errores, puede seleccionar todos los errores del mismo tipo, hacer clic con el botón derecho en esta lista y elegir una "solución". En su caso, la corrección sería "crear característica", que creará un nuevo polígono donde dos polígonos se superponen. Este es el primer paso (tenga en cuenta que puede conseguir un resultado similar utilizando la herramienta de unión con su capa de uso del suelo como entrada única, luego la herramienta de multiparte a parte única (pero entonces los solapamientos seguirán solapándose, por lo que necesitará eliminar uno de los valores de atributo), o convertir su polígono en líneas y luego de nuevo en polígono (pero entonces perderá atributos, necesitará una unión espacial para recuperar los atributos)).

El segundo paso consistiría en eliminar los polígonos pequeños. El problema es que en realidad no tienes una regla para decidir qué valor de atributo quieres conservar. Mi herramienta favorita es entonces el eliminar herramienta , donde puede elegir a qué polígono vecino se fusionarán los polígonos pequeños (basándose en el mayor límite compartido o en la mayor área).

Última observación: si tiene una regla para la clase de uso del suelo prioritario, seleccione iterativamente los polígonos pequeños (que no tienen etiqueta) por ubicación para asignar cada clase de uso del suelo por orden decreciente de prioridad y utilice la calculadora de campo para asignar su etiqueta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X