4 votos

La eliminación de la superposición de líneas utilizando ArcGIS Desktop?

Tengo un archivo de forma que tiene la mayoría de las líneas espaciadas a intervalos regulares. Sin embargo, hay algunas líneas que se superponen unos con otros, o a muy poca distancia el uno del otro (figura de la ilustración). Necesito ser capaz de encontrar las líneas y los borre automáticamente. Por ejemplo, tengo que eliminar la Línea 1 o la Línea 2 (no estoy centrando mucho en que para mantener en el momento, pero puede ser que necesite para pensar una vez que resolver este problema).

Para solucionar este problema, he utilizado "Generar Cerca de la Mesa" con un mismo archivo de entrada y cerca de la función de archivo. Especifica una distancia de búsqueda menos que la media de la distancia entre dos líneas (en mi caso, las líneas fueron típicamente espaciados en el 0,7 metros, así que he usado la mitad de esta distancia (o.35) para buscar las líneas que podría ser innecesario). Esto me da las líneas que han de distancia <0.35. Eso quiere decir que incluye tanto las Líneas 1 y 2, y las Líneas 3 y 4. Aunque las direcciones de parte del problema, no resuelve el problema completo. Ahora me falta averiguar cómo para seleccionar la Línea 1 o la Línea 2 (o la Línea 3 o la Línea 4), pero no ambos.

Cuando creamos una cerca de la tabla, obtenemos la IN_FID, NEAR_ID y NEAR_DIST atributos. Creo que debo tratar a los registros que tienen las mismas combinaciones de IN_FID y NEAR_ID (es decir, si la Línea 1 ha IN_FID= 1 y NEAR_ID =2, y la Línea 2 ha IN_FID=2 y NEAR_ID=1) de la misma. No sé cómo hacerlo a través de programa. Una vez que lo hacemos, creo que puede utilizar Eliminar Idéntica función a deshacerse de esas líneas.

alguien ha estado en la misma situación y me puede ayudar aquí.enter image description here

2voto

GeoWill Puntos 91

He aquí una posible solución python. No tengo arco en la computadora de mi casa así que no probados - copia de seguridad de sus datos antes de intentar...

Utiliza una actualización del cursor y una lista de tuplas que se han eliminado. Si una característica tiene un vecino cercano, y la tupla (neigbour_id, feature_id) no está en el borrado de la lista, a continuación, la tupla (feature_id, neighbour_id) se añade a la eliminada de la lista y se elimina la entidad.

Lo que esto supone que cerca de la relación siempre será mutua, es decir, no habrá una fila con dos vecinos más próximos, y si el vecino más cercano es B, entonces B del vecino más cercano es A.

Si ese no es el caso, entonces usted necesita para crear un diccionario de neigbours para determinar cuáles conservar o desechar. Cómo crear el diccionario se describe aquí.

Código:

import arcpy
lines_fc = r"path/to/your/feature/class"
search_radius = 0.35
arcpy.Near_analysis(lines_fc, lines_fc, search_radius)
deleted = []

#NB "OID@" should select your object id field.
cursor = arcpy.UpdateCursor(lines_fc, ["OID@", "NEAR_FID"] as rows:
for row in cursor:
    if row[1] != -1 and (row[1], row[0]) not in deleted:
        deleted.append((row[0],row[1]))
        cursor.deleteRow(row) 

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