10 votos

¿Cómo contar los polígonos superpuestos de un Shapefile?

Tengo un shapefile con 16400 polígonos. Cada polígono se muestra la expansión de una especie de ave para el mundo entero.

enter image description here

Ahora tengo que contar la superposición de polígonos. He probado con la unión y disolver (recuento de la unión), pero la unión no está funcionando por muchos polígonos. Entonces traté de clip continentes, pero esto es también sin trabajo a causa de la enorme cantidad de polígonos. Por otra parte he probado este método , también sin éxito. Por lo tanto, yo estoy pidiendo que me hay una manera de contar la superposición de polígonos si 16400 polígonos en un archivo shapefile? Estoy trabajando con la versión 10.0 y puede trabajar con 10.2. Una de ArcPy-Solución también es maravilloso. En el momento en que el pensamiento acerca de la creación de una red y iterar a través de las filas de la shp con la 16400 polygones y escribir 1 a un valor de campo de una red celular si el polígono es en esta celda y de tomar la siguiente fila (polígono) y si esto también está en la red el recuento de células +1. Pero no sé si esto es una buena solución y cómo darse cuenta de ello. O tengo que aprender R a el uso de este enfoque.

El resultado: debe ser una forma donde usted tiene nuevos polígonos de las superpuestas y un campo donde las coincidencias son contados. Así que al final debe haber un shapefile donde se puede ver cómo muchas especies de aves se encuentran en el mismo lugar.

10voto

Aaron Puntos 25882

Me gustaría recomendar el uso de la costumbre Recuento de la Superposición de Polígonos de la herramienta.

enter image description here

Descripción:

Este ejemplo contiene una caja de herramientas con una sola herramienta, el Conde de la Superposición de Los polígonos. Dada una capa o clase de entidad que contiene la superposición de polígonos, salidas de una nueva clase de entidad con las superposiciones eliminado y un Llamados join_count campo que contiene el número de la superposición de polígonos.

5voto

pd. Puntos 755

Utilizando fichas de geometría arcpy, usted podría intentar algo como esto:

enter image description here

import os
import arcpy

arcpy.env.workspace = r"" #path to workspace
arcpy.env.overwriteOutput = 1

polygon_fc = r"" #path to polygon fc

base = [row for row in arcpy.da.SearchCursor(polygon_fc,["OID@","SHAPE@"])]
compare = base

overlaps_stats = {}

for b in base:
    for c in compare:
        if b[1].overlaps(c[1]):
            #print "{0} overlaps {1}".format(b[0],c[0])
            if overlap_stats.has_key(b[0]):
                overlap_stats[b[0]].append(c[0])
            else:
                overlap_stats[b[0]] = [c[0]]

for key,value in overlap_stats.iteritems():
    print "Polygon {0}:  Overlaps: {1}.".format(key,len(value))

Para los datos del ejemplo anteriores, el código devolverá que el traslapo de la siguiente cuenta:enter image description here

El código es sólo devolverá cantidad de polígonos que tienen al menos una superposición.

2voto

Mark172 Puntos 177

He descargado y probado el "Recuento de la Superposición de Polígonos" de la herramienta. Podría funcionar, pero se necesita un muy largo período de tiempo (probablemente debido a que el tamaño del archivo, pero mi entrada FC sólo había < 5,000 registros).

Mientras yo estaba a la espera de que la herramienta se ejecute , me abre otra ventana de ArcMap y sólo tomó un par de pasos rápidos para obtener lo que quería. 1) unión Espacial usando la misma clase de entidad como Destino y Unirse a las Características y seleccionar la opción "Unirse a Uno a Muchos" opción. 2) Disolver - usando la salida de la última etapa. El uso de la "TARGET_FID", como la de disolver el campo y para las estadísticas que se pueden sumar los "llamados join_count" campo o CONTAR el "JOIN_FID campo". 3) En el archivo de salida a partir del paso 2, use la calculadora de campo restar 1 a partir de las estadísticas de campo ("SUM_Join_Count", o "COUNT_JOIN_FID") - ya que cada función se intersecta a sí misma.

Sugiero el uso de este método a través de la "cuenta de Superposición de Polígonos" de la herramienta. Empecé a correr de la COP de la herramienta de ~ 5 min antes de iniciar esta combinación->Disolver método y me dio el resultado con el tiempo suficiente para escribir esto antes de que el "Recuento de Superposición de Polígonos" herramienta había terminado aún.

Espero que esto ayude!

2voto

rkthkr Puntos 6651

Supongo que has probado este método: Cómo contar y rasterizar polígono se superpone en ArcGIS Desktop?

16,400 polígonos no se que muchos. Sin embargo, una posible solución es simplemente hacer un regular de unión Espacial. En la ArcMap toolbox, > Analysis Tools -> Overlap -> Spatial Join.

Establecer la target y join características para el mismo conjunto de datos y especificar una salida. Dejar el resto de la configuración.

Después de unos momentos, usted debe obtener un archivo de forma que contiene un "join" número de columna. Resta 1 de este (como obviamente cada función intersecta a sí misma), y que debe ser el número de "solapamientos "(en realidad se cruza) para cada polígono.

Me acaba de realizar en

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