5 votos

Campo de texto de la calculadora a un nuevo shapefile

Tengo características de punto que son seleccionadas por una característica de polígono y copiadas a su propio shapefile. También tengo ciertos valores de la característica de polígono que se aplican al archivo de puntos recién creado. El archivo de puntos ya tiene los campos requeridos que necesitan ser rellenados. Los campos enteros/flotantes se copian correctamente, pero el único valor del campo de cadena (SfcType)/fila[4] no se aplica. Me doy cuenta de que esto tiene que ver con el hecho de que es una cadena, pero no puedo encontrar la sintaxis correcta.

¿Alguien puede señalar mi (obvio) error?

from arcpy import * import os
arcpy.env.overwriteOutput = True

#Make feature layer of feature classes to allow selection
MakeFeatureLayer_management (inPolyfc, "Polylyr")
MakeFeatureLayer_management (inPointfc, "Pointlyr")

#Get name of OID field for sql expression
polyOIDfld = Describe ("Polylyr").OIDFieldName

#iterate through polygons with cursor
cursor = da.SearchCursor ("Polylyr", ["OID@", PolyIDfld, "Slope", "endelev", "SfcType", "NearID"])
for row in cursor:
#sql to select individual polygon
sql = '"{0}" = {1}'.format (polyOIDfld, str(row[0]))
    #select individual polygon
SelectLayerByAttribute_management ("Polylyr", "", sql)

#select intersecting points
SelectLayerByLocation_management ("Pointlyr", "", "Polylyr")

#Check to make sure points are selected, ie at least one point actually intersects polygon
if Describe ("pointlyr").FIDSet:
    FeatureClassToFeatureClass_conversion ("Pointlyr", outPath, str(row[1]))
    print "Created Shapefile Named: " + str(row[1])
    Fc = outPath + "/"+ str(row[1]) + ".shp"
    arcpy.CalculateField_management (Fc, "Slope", str(row[2]))
    print "Added SLope to " + Fc
    Fc = outPath+ "/" + str(row[1]) + ".shp"
    arcpy.CalculateField_management (Fc, "endelev", str(row[3]))
    print "Added Rwy End Elev to " + Fc
    Fc = outPath+ "/" + str(row[1]) + ".shp"
    arcpy.CalculateField_management (Fc, "SfcType", str(row[4]))
    print "Added Sfc Type to " + Fc
    Fc = outPath+ "/" + str(row[1]) + ".shp"
    arcpy.CalculateField_management (Fc, "NearID", str(row[5]))
    print "Added NearID to " + Fc
    #Create empty feature class if no points intersect
else:
    print "No points were under the " + str(row[1]) + " surface"

7voto

overstay_info Puntos 11

El error se produce porque no se cita el valor correctamente. Para enviar una cadena a la calculadora de campo utilizando un script, tiene que enviar una cadena entrecomillada con caracteres de comillas dobles en la cadena, '"El perro marrón"'.

Así que creo que la sintaxis correcta para esa línea es:

arcpy.CalculateField_management (Fc, "SfcType", '"{0}"'.format(str(row[4])))

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