1 votos

exportar un polígono de un archivo de capa a una característica de geodatabase de archivo en arcpy

Tengo un script que crea Áreas de Servicio (SA) utilizando Network Analyst. Necesito utilizar el polígono de la SA más adelante en el script. Necesito hacer un análisis utilizando cada SA resultante individualmente. El MakeFeatureLayer_management da un error que la entrada no es compatible por lo que asumo que sólo necesito el polígono no el archivo de capa. Desafortunadamente, el script crea un archivo de capa para el SA. No puedo averiguar cómo seleccionar o crear sólo el polígono del archivo de capa. ¿Existe una función "obtener característica de la capa" o "obtener polígono"? Abajo está el script.

Estoy utilizando ArcGIS 10.2 Desktop. Mi espacio de trabajo es un filegeodatabase.

with arcpy.da.SearchCursor(PL_Fac, PL_fld) as SAcursor:
    for SArow in SAcursor:
        #print('{0}, {1}'.format(SArow[0], SArow[1]))
        SArow_new = str(SArow[1])
        whereClause = 'Add_PNTID =' +SArow_new
    # Process: Make Feature Layer
        PL_Fac_MakeLay = arcpy.MakeFeatureLayer_management(PL_Fac, PL_Fac_Lay, whereClause)
    # Process: Make Service Area Layer
        result_object = arcpy.MakeServiceAreaLayer_na(ns_RoutingNetwork_ND, "SA_Lay", impedance, "TRAVEL_FROM", "25", "SIMPLE_POLYS", "NO_MERGE", "DISKS", "NO_LINES", "OVERLAP", "NO_SPLIT", "", "", "NO_UTURNS", "'One Way';Restricted", "NO_TRIM_POLYS", "100 Meters", "NO_LINES_SOURCE_FIELDS", "USE_HIERARCHY", "")
    #Get the layer object from the result object. The service layer can now be referenced using the layer object.
        layer_object = result_object.getOutput(0)
    #Get the names of all the sublayers within the service area layer.
        sublayer_names = arcpy.na.GetNAClassNames(layer_object)
    #Stores the layer names that we will use later
        facilities_layer_name = sublayer_names["Facilities"]
    #Load the fire stations as facilities using default field mappings and
    #default search tolerance
        arcpy.na.AddLocations(layer_object, facilities_layer_name, PL_Fac_MakeLay, "", "")
    #Solve the service area layer
        arcpy.na.Solve(layer_object)

    #Save the solved service area layer as a layer file on disk
        layer_object.saveACopy(output_SAlay)

1voto

Alex Tereshenkov Puntos 13433

Tiene que acceder a los SAPolygons (nombre de la clase na) como último paso:

#Get the polygons sublayer from the service area layer
polygonsSublayer = arcpy.mapping.ListLayers(serviceAreaLayer,
                                            naClasses["SAPolygons"])[0]

#Export the polygons sublayer as a feature class
arcpy.management.CopyFeatures(polygonsSublayer, outputPolygons)

La página de ayuda de Esri para este ejemplo es ici

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