Tengo un shapefile con 16,400 polígonos. Cada polígono muestra la expansión de una especie de ave para todo el mundo.
Ahora tengo que contar los polígonos superpuestos. Lo intenté con unión y disolución (cuenta la unión), pero la unión no funciona para tantos polígonos.
Luego intenté recortar continentes, pero esto tampoco funciona debido a la gran cantidad de polígonos. Además probé este método , también sin éxito.
Por lo tanto, le pregunto si hay una manera de contar polígonos superpuestos si 16400 polígonos están en un archivo de forma.
Estoy trabajando con 10.0 y puedo trabajar con 10.2. Una solución ArcPy también es maravillosa.
En este momento estoy pensando en crear una red de pesca e iterar sobre las filas de la shp con los 16400 polígonos y escribir 1 en un campo de valor de una celda de red si el polígono está en esta celda y luego tomar la siguiente fila (polígono) y si esto también está en el recuento de células de red +1.
Pero no sé si esta es una buena solución y cómo realizarla. O tengo que aprender R para usar este enfoque.
El resultado: debe ser una forma en la que tenga nuevos polígonos de los superpuestos y un campo donde se cuenten las superposiciones.
Por lo tanto, al final debe haber un archivo de forma en el que pueda ver cuántas especies de aves se encuentran en el mismo lugar.
Respuestas:
Recomendaría usar la herramienta Contar características superpuestas (Análisis) .
fuente
Usando tokens de geometría arcpy, puedes probar algo como esto:
Para los datos de muestra anteriores, el código devolverá los siguientes recuentos de superposición:
El código tal como es solo devolverá los recuentos de polígonos que tengan al menos una superposición.
fuente
Un método muy simple es:
join_count
campo.fuente
Supongo que ha probado este método: ¿ Contar y rasterizar superposiciones de polígonos en ArcGIS Desktop?
16,400 polígonos no son tantos. Sin embargo, una posible solución es simplemente hacer una unión espacial regular. En el
ArcMap toolbox, > Analysis Tools -> Overlap -> Spatial Join
.Establezca las características
target
yjoin
en el mismo conjunto de datos y especifique una salida. Deje el resto de la configuración.Después de unos momentos, debería recuperar un archivo de forma que contiene una columna de "conteo de unión". Reste 1 de esto (ya que obviamente cada entidad debe intersectarse a sí misma), y ese debería ser el número de "superposiciones" (en realidad se cruza) para cada polígono.
Acabo de realizarlo en
fuente
Descargué y probé la herramienta "Contar polígonos superpuestos". Puede funcionar, pero lleva mucho tiempo (probablemente debido al tamaño del archivo, pero mi FC de entrada solo tenía <5,000 registros).
Mientras esperaba que se ejecutara esa herramienta, abrí otra ventana de ArcMap y solo tomé un par de pasos rápidos para obtener lo que quería. 1) Unión espacial: utilizando la misma clase de entidad que las funciones de destino y unión y seleccionando la opción "Unir uno a muchos". 2) Disolver: utilizando la salida del último paso. Use "TARGET_FID" como campo de disolución y para las estadísticas puede SUMAR el campo "Join_Count" o COUNT el campo "JOIN_FID". 3) En el archivo de salida del paso 2, use la calculadora de campo reste 1 del campo de estadísticas ("SUM_Join_Count" o "COUNT_JOIN_FID"), ya que cada entidad se intersecta.
Sugiero usar este método sobre la herramienta "Contar polígono superpuesto". Comencé a ejecutar la herramienta COP ~ 5 minutos antes de comenzar este método Unir-> Disolver y me dio el resultado con suficiente tiempo para escribir esto antes de que la herramienta "Contar polígono superpuesto" hubiera terminado.
¡Espero que esto ayude!
fuente