Instrução

Realocar um ponto existente em um polígono com um atributo comum usando ArcPy no ArcGIS Pro

Last Published: March 28, 2024

Resumo

No ArcGIS Pro, posicionar pontos dentro de polígonos contendo atributos semelhantes é importante para uma variedade de análises espaciais, como agregação espacial e integração de dados. Um atributo comum normalmente se refere a um campo ou propriedade compartilhado por feições dentro de um conjunto de dados.

As feições de ponto são posicionadas fora das feições de polígono

Este artigo apresenta o fluxo de trabalho para inserir um ponto em um polígono com um atributo comum usando ArcPy no ArcGIS Pro.

Procedimento

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. No ArcGIS Pro, abra o mapa que contém as camadas de feição de ponto e polígono.
  2. Abra a janela Python. Consulte ArcGIS Pro: Janela Python para obter mais informações.
  3. Execute o seguinte script:
Note:
This workflow creates a new point feature in the geodatabase that is not added into the map.
  1. Importe os módulos necessários e crie uma função definida pelo usuário para criar uma nova feição de ponto de referência para realocação.
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. Adicione o campo de atributo comum à classe de feição de ponto de referência.
    arcpy.management.AddField(output_point_fc, common_attribute_field, "TEXT")
  1. Itere por meio de cada polígono na classe de feição de entrada, calcule o ponto centróide dentro de cada polígono e insira uma feição de ponto na feição de polígono com o mesmo valor de atributo comum que o polígono correspondente.
    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. Defina os parâmetros de entrada. Substitua <pathToPolygonFc> e <pathToPointFc> pelos caminhos da classe de feição de polígono e ponto, respectivamente. Substitua <fieldName> pelo nome do campo de atributo comum.
input_polygon_fc = r"<pathToPolygonFc>"
output_point_fc = r"<pathToOriginalPointFc>"
common_attribute_field = "<fieldName>"
  1. Chame a função para posicionar os pontos dentro de polígonos com o atributo comum.
place_points_inside_polygons(input_polygon_fc, output_point_fc, common_attribute_field)

O bloco de código abaixo demonstra o 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)

A imagem abaixo mostra o ponto posicionado no polígono com um atributo comum usando ArcPy.

Os pontos são posicionados na feição de polígono

ID do Artigo: 000032318

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download