4 votos

Se desplazan automáticamente la superposición de funciones uso de ArcGIS Desktop?

Estoy utilizando ArcGIS 10.4.1. Puedo hacer un mapa. Yo soy de tener dos archivos: una polilínea y un polígono. La polilínea es una carretera y el polígono es un edificio.

Los shapefiles se superponen. Quiero resolver automáticamente la superposición de funciones. Quiero hacer un "Después" de la imagen.

Si el polígono es colocado en el centro de la línea, no importa en qué dirección se mueve. Usted sólo necesita mover a cualquier lado. Quiero mover distancia es probable que el 15m-20m de distancia de la carretera. El edificio debe estar situado a sólo cerca de la carretera, como se muestra.

Me pregunto si ArcGIS, automáticamente el cambio de los edificios por carretera.

No tengo conocimientos de programación. Sin embargo, el programa SIG está bien utilizado.Espero que para resolver este problema con ArcGIS.

Cómo mover automáticamente la superposición de funciones?

enter image description here

La figura de arriba es una sola línea y la figura de abajo es de tres líneas. Las tres líneas de la media de la línea central de la carretera y los dos fuera de la media de la anchura de la carretera

4voto

Anton8000 Puntos 165

Script a continuación, utilice Cerca de herramienta para calcular el ángulo y la distancia desde el polígono de centroides más cercana a la línea y, a continuación, moverlos, ya sea más cerca o más lejos, según especificada en la distancia deseada. Crear una Geodatabase de Archivos e importar los archivos de forma y uso como insumos en la secuencia de comandos.

Usted puede ejecutar el código en la ventana de Python en ArcMap.

import arcpy,math
#Inputs, change paths and fc names to match your data
polygon_fc=r'C:\TEST.gdb\Sample_points_buffer'
line_fc=r'C:\TEST.gdb\Line'
#Output, change path (and fc name if you want)
output_polygon_fc=r'C:\TEST.gdb\Sample_points_buffer_near'
#Desired distance from polygon centroids to nearest line. Change
desired_distance=200

temp_points=r'in_memory\points'

def bearing_to_radians(bearing):
    return math.radians((450-bearing)%360)

#Create centroid points, calculate near distance and angle and join this to polygons
arcpy.FeatureToPoint_management(in_features=polygon_fc, out_feature_class=temp_points)
arcpy.Near_analysis(in_features=temp_points, near_features=line_fc,location=True, angle=True, method='PLANAR')
arcpy.MakeFeatureLayer_management(in_features=polygon_fc, out_layer='polygon_lyr')
arcpy.AddJoin_management(in_layer_or_view='polygon_lyr', in_field='OBJECTID', join_table=temp_points, 
                        join_field='OBJECTID')
arcpy.CopyFeatures_management(in_features='polygon_lyr', out_feature_class=output_polygon_fc)

#Move the polygons
with arcpy.da.UpdateCursor(output_polygon_fc,['SHAPE@X','SHAPE@Y','points_NEAR_DIST','points_NEAR_ANGLE']) as cursor:
    for row in cursor:
        newx=row[0]+(row[2]-desired_distance)*math.sin(bearing_to_radians(row[3]))
        newy=row[1]+(row[2]-desired_distance)*math.cos(bearing_to_radians(row[3]))
        row[0]=newx
        row[1]=newy
        cursor.updateRow(row)

enter image description here

Cómo crear una Geodatabase de Archivos e importar shapefiles:

enter image description here

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