CÓMO

Reubicar un punto existente en un polígono con un atributo común usando ArcPy en ArcGIS Pro

Last Published: March 28, 2024

Resumen

En ArcGIS Pro, colocar puntos dentro de polígonos que contienen atributos similares es importante para una variedad de análisis espaciales, como la agregación espacial y la integración de datos. Un atributo común normalmente hace referencia a un campo o propiedad compartida por entidades dentro de un dataset.

Las entidades de punto se colocan fuera de las entidades poligonales

En este artículo se proporciona el flujo de trabajo para colocar un punto en un polígono con un atributo común mediante ArcPy en ArcGIS Pro.

Procedimiento

Note:
This workflow requires a full script to run in the ArcGIS Pro Python window. All the indents are to be kept as portrayed in the code block.
  1. En ArcGIS Pro, abra el mapa que contiene las capas de entidades de puntos y polígonos.
  2. Abra la ventana de Python. Consulte ArcGIS Pro: ventana de Python para obtener más información.
  3. Ejecute el siguiente script:
Note:
This workflow creates a new point feature in the geodatabase that is not added into the map.
  1. Importe los módulos necesarios y cree una función definida por el usuario para crear una nueva entidad de punto de referencia para la reubicación.
import arcpy
import os

def place_points_inside_polygons(input_polygon_fc, output_point_fc, common_attribute_field):
    arcpy.management.CreateFeatureclass(
        out_path=os.path.dirname(output_point_fc),
        out_name=os.path.basename(output_point_fc),
        geometry_type="POINT",
        spatial_reference=input_polygon_fc
    )
  1. Agregue el campo de atributo común a la clase de entidad de punto de referencia.
    arcpy.management.AddField(output_point_fc, common_attribute_field, "TEXT")
  1. Recorra en iteración cada polígono de la clase de entidad de entrada, calcule el punto centroide dentro de cada polígono e inserte una entidad de punto en la entidad poligonal con el mismo valor de atributo común que el polígono correspondiente.
    with arcpy.da.InsertCursor(output_point_fc, ["SHAPE@", common_attribute_field]) as cursor:
        with arcpy.da.SearchCursor(input_polygon_fc, ["SHAPE@", common_attribute_field]) as search_cursor:
            for row in search_cursor:
                polygon_geom = row[0]
                common_attribute_value = row[1]
                point_inside_polygon = polygon_geom.centroid
                cursor.insertRow([point_inside_polygon, common_attribute_value])
  1. Establezca los parámetros de entrada. Reemplace <pathToPolygonFc> y <pathToPointFc> por las rutas de la clase de entidad poligonal y de punto, respectivamente. Reemplace <fieldName> por el nombre de campo de atributo común.
input_polygon_fc = r"<pathToPolygonFc>"
output_point_fc = r"<pathToOriginalPointFc>"
common_attribute_field = "<fieldName>"
  1. Llame a la función para colocar puntos dentro de polígonos con el atributo común.
place_points_inside_polygons(input_polygon_fc, output_point_fc, common_attribute_field)

El siguiente bloque de código demuestra el script completo.

import arcpy
import os

def place_points_inside_polygons(input_polygon_fc, output_point_fc, common_attribute_field):
    arcpy.management.CreateFeatureclass(
        out_path=os.path.dirname(output_point_fc),
        out_name=os.path.basename(output_point_fc),
        geometry_type="POINT",
        spatial_reference=input_polygon_fc
    )

    arcpy.management.AddField(output_point_fc, common_attribute_field, "TEXT")

    with arcpy.da.InsertCursor(output_point_fc, ["SHAPE@", common_attribute_field]) as cursor:
        with arcpy.da.SearchCursor(input_polygon_fc, ["SHAPE@", common_attribute_field]) as search_cursor:
            for row in search_cursor:
                polygon_geom = row[0]
                common_attribute_value = row[1]
                point_inside_polygon = polygon_geom.centroid
                cursor.insertRow([point_inside_polygon, common_attribute_value])

input_polygon_fc = r"C:\Users\Documents\ArcGIS\Projects\MyProject40\MyProject40.gdb\Polygon"
output_point_fc = r"C:\Users\Documents\ArcGIS\Projects\MyProject40\MyProject40.gdb\Pointsss"
common_attribute_field = "Distance"

place_points_inside_polygons(input_polygon_fc, output_point_fc, common_attribute_field)

La siguiente imagen muestra el punto colocado en el polígono con un atributo común mediante ArcPy.

Los puntos se colocan en la entidad poligonal

Id. de artículo: 000032318

Obtenga soporte con IA

Resuelva su problema rápidamente con el chatbot de inteligencia artificial de soporte de Esri.

Empieza a chatear ahora

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Empieza a chatear ahora

Ir a opciones de descarga