Wie teile ich Punkte mit ArcGIS Desktop nach Polygon?

8

Ich suche nach einer Möglichkeit, Punkte durch eine County-Polygon-Feature-Class zu teilen. Das angehängte Bild zeigt zwei Feature-Classes: eine aus Punkten und die andere eine County-Polygon-Feature-Class. Das Teilungswerkzeug wäre ideal, wenn es Punkte zulässt. Ich würde eine saubere Ausgabe ohne zusätzliche Felder bevorzugen, die den Punktattributen hinzugefügt werden. Außerdem möchte ich den County-Namen aus der Polygon-Feature-Class haben, die die neuen Punkt-Feature-Classes definiert (z. B. Kiowa, Clark, Comanche). Ich freue mich über Lösungen und Ratschläge.

In diesem Beispiel sollte das Endprodukt aus drei Punktmerkmalsklassen mit den Namen "Kiowa", "Clark" und "Comanche" bestehen, die aus einer größeren Punktmerkmalsklasse hergestellt wurden. Eine automatisierte Lösung wäre ideal, da ich viele, viele FCs mit zusammengeführten Punkten in Dutzenden von Landkreisen habe, mit denen ich arbeiten kann (ungefähr über den Bundesstaat KS).

Geben Sie hier die Bildbeschreibung ein

Aaron
quelle
3
Diese Operation ist den Benutzern der ESRI-Software als räumliche Verknüpfung bekannt . Siehe auch gis.stackexchange.com/questions/11047 und gis.stackexchange.com/questions/23398 .
whuber
@whuber Ich stelle mir mindestens 5 Schritte mit dem räumlichen Verknüpfungsansatz vor: 1) räumliche Verknüpfung 2) Punkte basierend auf County auswählen 3) neue FCs basierend auf Auswahl erstellen, 4) FCs basierend auf County umbenennen 5) neue Felder löschen (z. B. "Join_count" "). Ich muss einen Weg finden, um den Prozess zu automatisieren (einer Ihrer Links ist vielversprechend). Ich hatte auch gehofft, dass ich einen einfacheren Ansatz übersehen würde, ähnlich dem, was "Teilen" für Polygon-Feature-Classes bewirken wird. Ich fürchte, ich muss möglicherweise die Cursorroute gehen.
Aaron
Puis-je avoir le lien en langue française?
Aaron, dein Kommentar passt nicht ganz zu deiner Frage. Die Frage scheint nicht darauf hinzudeuten, dass Sie einen Ausgabe-FC für jedes Bundesland wünschen. Die anderen Schritte sind nicht erforderlich: Erstellen Sie ein für alle Mal eine Kopie des County FC, dessen einziges Attribut ein County-Name ist. Die räumliche Verknüpfung mit Ihren Punkten beendet den Job. Wenn Sie zuerst alle Punktdatensätze zusammengeführt haben (was im Allgemeinen ein intelligentes Datenbankdesign ist), kann Ihr gesamtes Projekt in nur zwei Schritten abgeschlossen werden: (1) räumliche Verknüpfung (2) Aufteilen der Ausgabe nach County-Namen: siehe Antwort von blah238.
whuber
@KhalilouWAGUE le lien de la Jointure räumlich en fr help.arcgis.com/fr/arcgisdesktop/10.0/help/index.html#//…
Geogeek

Antworten:

4

Versuchen Sie, nachdem Sie Spatial Join oder Intersect verwendet haben, um das County-Namensattribut für jeden Punkt abzurufen , das in der Geoverarbeitungsmodell- und Skript-Tool-Galerie verfügbare Werkzeug " Ebene nach Attributen teilen" von Dan Patterson zu verwenden .

Alternativ können Sie ModelBuilder verwenden, um dies mithilfe eines anderen Ansatzes zu automatisieren, bei dem Ebene nach Standort auswählen ausgewählt wird (klicken Sie auf das Miniaturbild, um das vollständige Bild anzuzeigen).

Geben Sie hier die Bildbeschreibung ein

Aus diesem Thread in den ESRI-Foren entfernt: Stapelauswahl nach Speicherort und Exportieren von Shapefiles

blah238
quelle
3

Viel einfacher mit dem Befehl intersect.
Schalten Sie unerwünschte Felder aus.
1. Schneiden Sie mit einer neuen Ausgabe.
2. Verbinden Sie die Ausgabe mit der ursprünglichen OID.
3. Berechnen Sie ein neues Feld mit dem Namen cnty.

In ettools finden Sie einige erweiterte Versionen der räumlichen Verknüpfung und Aufteilung nach Standort.

Brad Nesom
quelle
2

Nach dem, was ich gelesen habe, würde ich einfach eine Überlagerung (ArcToolbox-Analysetools - Überlagerung - und entweder Identität, Schnittmenge oder räumliche Verknüpfung) Ihrer Punkte mit einem County-Polygon-Dataset ausführen. In ArcMap können Sie die in der County-Ebene angezeigten Felder auf das Feld mit dem County-Namen beschränken, und nur dieses Feld wird dem Ergebnis hinzugefügt. Wenn selbst dieses hinzugefügte Feld zu groß ist, berechnen Sie seine Werte in das übereinstimmende Feld in der Punktetabelle und löschen Sie das hinzugefügte Feld.

Johns
quelle
2

Mit Python können Sie eine "Ebene nach Ort auswählen" schleifen, um die Punkte zu erfassen, die die einzelnen Counties überlappen, und sie dann als Shapefile speichern. Es wäre ungefähr so:

import arcgisscripting
# starts geoprocessing
gp = arcgisscripting.create()
gp.OverWriteOutput = 1

# Variable iniciation
points = u"Path for your point shape"
counties = u"Path for counties shape"
outDir = u"path for output directory"

#Load points as a layer
gp.MakeFeatureLayer(points, "points")

# Go county by county
rows = gp.searchcursor(counties)
row = rows.next()

# loop County by county overlap
while row.countyName: #adapt to your countie table of attributes
    # Make a layer from the feature class
    gp.MakeFeatureLayer(counties, "counties lyr", "[countieName]='" + row.countieName + "'")
    # Select all points that intersect the current countie polygon
    gp.SelectLayerByLocation(points, "intersect", "counties_lyr", 0, "new_selection")
    outSHP = outDir + row.counties + u".shp"
    gp.CopyFeatures_management(points, outSHP)
    print(outSHP)
    row = rows.next()
 # End of loop

 del rows, row, gp

 #END

Ich habe es nicht getestet. Sie müssen es wahrscheinlich an Ihren Fall anpassen.

Bearbeiten: Select_analysis von CopyFeatures_management gemäß den Empfehlungen von @ blah238 geändert.

Alexandre Neto
quelle
1
Ich würde Select_analysis wahrscheinlich in CopyFeatures_management oder ähnliches ändern - Sie führen die Auswahl bereits durch, sodass sie redundant ist.
blah238
Sie haben Recht, obwohl das Ergebnis das gleiche ist, habe ich es bearbeitet, um es klarer zu machen.
Alexandre Neto
Danke für dieses Skript. Gibt es eine Möglichkeit, dies außerhalb des lokalen Speichers zu tun? Das Problem bei meinen Datensätzen ist, dass 7,5 Millionen Punkte nicht gerne als Ebene hinzugefügt werden.
Aaron
Sie fügen als Ebene nur einen Teil der Punkte hinzu (aus jedem Landkreis). Wenn Sie das Skript außerhalb von ArcMap ausführen, müssen Sie es nicht einmal anzeigen, damit es auf irgendeine Weise funktioniert. Aber Sie können eine andere Sache versuchen. Beginnen Sie mit einem räumlichen (oder Schnittpunkt) zwischen den Punkten und Polygonen. Dadurch wird eine temporäre Datei mit den Punktinformationen + dem County-Namen erstellt. Dann schleifen Sie die Counties und verwenden Select_analysis (SpatialJoint_temp, outSHP, "[countieName] = '" + row.countieName + "'"). Ich denke, das wird auch funktionieren, aber ich weiß nicht, ob es mehr oder weniger effizient ist als die erste Lösung.
Alexandre Neto
0

Es gibt jetzt ein eLearning-Video-Tutorial (nicht kostenlos, aber relativ günstig) mit dem Titel Verwenden von ArcPy-Cursorn zum Teilen nach Attributen und Speicherorten, in dem Folgendes gezeigt wird:

Schreiben Sie ein Python-Skript, um eine Feature-Class mithilfe einer Polygon-Feature-Class in eine Feature-Class pro Feature aufzuteilen, das sich an den einzelnen Polygonpositionen befindet

Ich denke, es geht um die Anforderungen dieser Frage.

Haftungsausschluss : Ich bin der Autor und Moderator dieses eLearning-Video-Tutorials

PolyGeo
quelle