6 votos

¿Agregar rutas de ráster a shapefile con Python (ArcGIS)?

Tengo un problema y tal vez alguien es capaz de ayudarme o darme algunos consejos sobre cómo empezar.

Situación: Tengo un montón de trama y de cada trama que tengo el centro de coordenadas. De esta coordenada I crear un shapefile de tener la información sobre la ubicación aproximada de cada trama. Ahora me incluida la ruta de acceso para cada ráster en la tabla de atributos de la shapefile con la calculadora de campo.

Problema: Algunos de los raster son exactamente georreferenciados con una palabra de archivo. Quiero añadir un atributo nuevo campo para mostrar si hay un georreferencia o no. Para esto podemos usar el siguiente código (en el momento de la entrada cursor falta):

from arcpy import env

arcpy.env.overwriteOutput = 1

env.workspace = r'Z:\path'
path = env.workspace

# Create a table and add fields
table_name = "TempTable.dbf"
arcpy.CreateTable_management(path, table_name)
arcpy.AddField_management(path + "\\" + table_name, "RasterName", "TEXT")
arcpy.AddField_management(path + "\\" + table_name, "cs", "TEXT")

# Get the list of raster files
rasters = arcpy.ListRasters()

# Loop through the files and perform the processing
for ras in rasters:

    # Determine if the input has a defined coordinate system
    dsc = arcpy.GetRasterProperties_management(ras, "TOP")         

    if float(str(dsc.getOutput(0)).replace(",", ".")) > 100:

        row.cs = "y"     # Adds "x" to the row where the image has a georeference

    else:

        row.cs = "n"     # Adds "n" to the row where the image has no georeference

Ahora no sé cómo agregar la información en la forma correcta de la tabla de atributos (tal vez una combinación?). Espero que haya alguien que pueda ayudarme con esto.

3voto

Jürgen Zornig Puntos 1477

Cuando ya se tiene la trama de rutas en la tabla, no me gustaría recorrer los rásteres, pero iterar a través de sus entradas de la tabla con una actualización del cursor. De esta manera ronda puede llamar getRasterProperties para cada Ráster y, a continuación, inmediatamente llene los atributos de la fila.cs="y" ya es la forma correcta de hacerlo).

Yo no tengo ningún intérprete de python ahora mismo para la comprobación de sintaxis y así sucesivamente, pero el código debe tener este aspecto:

# Get the list of raster files
cur = arcpy.updateCursor(table_name)

# Loop through the files and perform the processing
for row in cur:

# Determine if the input has a defined coordinate system
dsc = arcpy.GetRasterProperties_management(row.RasterName, "TOP")         

if float(str(dsc.getOutput(0)).replace(",", ".")) > 100:

    row.cs = "y"     # Adds "x" to the row where the image has a georeference

else:

    row.cs = "n"     # Adds "n" to the row where the image has no georeference

Disculpe, si el código no es ejecutable de inmediato, tal vez hay algunos errores. No sé si se puede llamar GetRasterProperties de esa manera, por ejemplo.

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