2 votos

Eliminación de polígonos duplicados con diferentes valores de atributos utilizando ArcPy?

Estoy tratando de crear un national.shp para cubrir todo el territorio de los países. Hice un índice llamado "provincia" para ayudarme a actualizar la información en mi tabla de atributos desde el shapefile nacional.

La idea es crear primero los archivos de polígonos de cada provincia y luego fusionarlos con el archivo nacional.

El problema es que después de la fusión de datos, encontré que existe una superposición para mi archivo, (mismo polígono, dos valores). ¿Hay alguna manera de deshacerse de uno de los valores?

enter image description here

Intenté utilizar la herramienta de disolución, pero así tendré que perder el campo "provincia", que será necesario si quiero actualizar mi national.shp... Intenté rastrear el valor de la provincia, pero no pude encontrar un método.

3voto

Max_Guo Puntos 40

La forma más sencilla es utilizar la herramienta "borrar" del arcpy. Básicamente lo que sucede es que la herramienta "erase" encontrará la parte de unión de dos capas y quitará las áreas superpuestas de la capa de entrada. Luego puedes aplicar el proceso de fusión (el archivo fusionado no tendrá duplicados). Mi código de ejemplo es el siguiente:

        #-------------------Delete the duplicate areas --------------

        from arcpy import env
        env.workspace = strFolder
        eraseinput = "national.shp"
        erasefeature = newProvince +".shp"
        eraseOutput = strFolder + "/" + "national2.shp"
        arcpy.Erase_analysis(eraseinput, erasefeature, eraseOutput)

        #--------------- merge the polygons together ---------------- 

        # feature classes to be merged
        oldPoly = "national2.shp"
        newPoly = newProvince +".shp"

        # Create FieldMappings object to manage merge output fields
        fieldMappings = arcpy.FieldMappings()

        # Add all fields from both oldpolygon and polygon
        fieldMappings.addTable(oldPoly)
        fieldMappings.addTable(newPoly)

        # Add input fields "GRIDCODE" into new output field
        fldMap_lclass = arcpy.FieldMap()
        fldMap_lclass.addInputField(oldPoly,"GRIDCODE")
        fldMap_lclass.addInputField(newPoly,"GRIDCODE")
        # Set name of new output field "Land_Class"
        lclass = fldMap_lclass.outputField
        lclass.name = "LandClass"
        fldMap_lclass.outputField = lclass
        # Add output field to field mappings object
        fieldMappings.addFieldMap(fldMap_lclass)

        uptodatePoly = strFolder + "/new_national"
        arcpy.Merge_management([oldPoly, newPoly], uptodatePoly,fieldMappings)

        print ("The new national file is now created")

0voto

Andrew Shepherd Puntos 339

Puede que no le entienda bien, pero ¿tiene actualmente un número x de clases de características individuales, una por cada provincia, y quiere fusionarlas en una clase de características con un número x de características? Ignora lo que sigue si no es lo que quieres decir.

Una forma de hacerlo sería crear una clase de característica vacía national.shp y utilizar el Simple Data Loader para añadir los archivos individuales de las provincias. O simplemente copiar/pegar. Probablemente hay otros métodos también, sólo pensando en una manera rápida y fácil.

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