HOW TO

Neupositionieren eines vorhandenen Punktes in einem Polygon mit einem gemeinsamen Attribut mithilfe von ArcPy in ArcGIS Pro

Last Published: March 28, 2024

Zusammenfassung

In ArcGIS Pro ist das Platzieren von Punkten in Polygonen mit ähnlichen Attributen für eine Vielzahl von räumlichen Analysen wichtig, z. B. für die räumliche Aggregation und die Datenintegration. Ein allgemeines Attribut bezieht sich in der Regel auf ein Feld oder eine Eigenschaft, die von Features in einem Dataset gemeinsam genutzt wird.

Punkt-Features sind außerhalb der Polygon-Features platziert

In diesem Artikel wird der Workflow zum Platzieren eines Punktes in einem Polygon mit einem gemeinsamen Attribut mithilfe von ArcPy in ArcGIS Pro beschrieben.

Vorgehensweise

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. Öffnen Sie in ArcGIS Pro die Karte mit den Punkt- und Polygon-Feature-Layern.
  2. Öffnen des Python-Fensters Weitere Informationen finden Sie unter ArcGIS Pro: Python-Fenster.
  3. Führen Sie das folgende Skript aus:
Note:
This workflow creates a new point feature in the geodatabase that is not added into the map.
  1. Importieren Sie die erforderlichen Module, und erstellen Sie eine benutzerdefinierte Funktion, um ein neues Referenzpunkt-Feature für die Neuanordnung zu erstellen.
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. Fügen Sie der Referenz-Point-Feature-Class das Feld für das gemeinsame Attribut hinzu.
    arcpy.management.AddField(output_point_fc, common_attribute_field, "TEXT")
  1. Durchlaufen Sie die einzelnen Polygone in der Eingabe-Feature-Class, berechnen Sie den Punkt des Schwerpunkts innerhalb jedes Polygons, und fügen Sie ein Punkt-Feature in das Polygon-Feature ein, das denselben gemeinsamen Attributwert wie das entsprechende Polygon aufweist.
    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. Legen Sie die Eingabeparameter fest. Ersetzen Sie "<pathToPolygonFc>" und "<pathToPointFc>" durch die Pfade der Polygon- bzw. der Point-Feature-Class. Ersetzen Sie "<fieldName>" durch den Namen des allgemeinen Attributfelds.
input_polygon_fc = r"<pathToPolygonFc>"
output_point_fc = r"<pathToOriginalPointFc>"
common_attribute_field = "<fieldName>"
  1. Rufen Sie die Funktion auf, um Punkte innerhalb von Polygonen mit dem gemeinsamen Attribut zu platzieren.
place_points_inside_polygons(input_polygon_fc, output_point_fc, common_attribute_field)

Im folgenden Code-Block finden Sie das vollständige Skript.

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)

Die folgende Abbildung zeigt den Punkt, der mit ArcPy im Polygon mit einem gemeinsamen Attribut platziert wurde.

Die Punkte sind im Polygon-Feature platziert

Artikel-ID: 000032318

Holen Sie sich Unterstützung mit KI

Lösen Sie Ihr Problem schnell mit dem Esri Support AI Chatbot.

Beginnen Sie jetzt mit dem Chatten

Zugehörige Informationen

Weitere Informationen zu diesem Thema erkunden

Unterstützung durch ArcGIS-Experten anfordern

An den technischen Support wenden

Beginnen Sie jetzt mit dem Chatten

Zu Download-Optionen wechseln