Erstellen eines quadratischen Puffers um ein Punkt-Feature mit ArcGIS for Desktop?

Ich möchte einen quadratischen Puffer aus einem Punkt-Feature erstellen, verstehe aber den darin enthaltenen Code nicht.

Ähnliche Fragen wurden auf der Website forums.esri gestellt, aber das war vor über 10 Jahren, und es hat nicht funktioniert, als ich den Code ausprobiert habe.

Wie erstelle ich ein Quadrat? Puffer von einer Punktfunktion?

Kommentare

  • gis.stackexchange.com/questions/12479 / … ist im Wesentlichen ein Duplikat (da es sich um eine Verallgemeinerung dieser Frage handelt), aber da es hier bereits gute Antworten gibt, die spezifisch für quadratische Puffer sind, scheint es am besten zu sein beide Threads offen und getrennt zu lassen, anstatt sie zusammenzuführen. Aber wenn Sie noch mehr Lösungen wollen, lesen Sie auch den anderen Thread!
  • OK, danke whuber. Ich habe diese Website erst gestern gefunden und ‚ mache mich immer noch damit vertraut. Ich ‚ werde versuchen, dies mit meinen zukünftigen Posts / Fragen zu tun. Ich ‚ mag diese Site viel besser als die ArcGIS-Foren.
  • Ich habe diesen Kommentar nicht ‚ gemeint Als Kritik in irgendeiner Weise, Kimball: Es war da, um das Zusammenführen der beiden Threads zu verhindern, das ‚ alles ist. Willkommen in unserer Community! (Und bitte erzählen Sie Ihren Freunden von uns, insbesondere denen in den ArcGIS-Foren. 🙂
  • Richtig. Ich weiß, dass Sie ‚ es nicht so gemeint haben. Ich genieße diese Community sehr und habe bereits begonnen, anderen von diesem neuen Forum zu erzählen.
  • Vielen Dank für Ihren bedeutenden Anteil. Ich frage mich, wie ich mithilfe einer Reihe von Felddaten in Punktfunktionen Rechteckpuffer mithilfe des von Ihnen bereitgestellten Skripts erstellen kann, ohne deren Koordinaten manuell eingeben zu müssen. Danke

Antwort

Versuchen Sie diese Schritte mit ArcMap 10:

  1. Puffer Ihre Punktfunktion (ArcToolbox> Analyse-Tools> Nähe> Puffer). Stellen Sie sicher, dass Sie im Feld Lineareinheit den richtigen Abstand auswählen.
  2. Geben Sie Ihre neu erstellten Puffer in das Werkzeug Feature Envelope to Polygon (Daten) ein Management Tools> Features> Feature Envelope to Polygon). Stellen Sie sicher, dass das Kontrollkästchen „Mehrteilige Features erstellen“ aktiviert ist, wenn Sie mehrere Punkte haben.

Für eine Python-Lösung:

Verwenden von SearchCursor und InsertCursor zum Erstellen quadratischer Puffer

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • +1 Antworten, die zeigen, dass die Lösung funktioniert, sind die besten.

Antwort

Eine mögliche Lösung wäre, Ihre „normalen“ runden Puffer mit dem Standard-ESRI-Pufferwerkzeug mit einem beliebigen Radius zu erstellen und dann einen Feature Envelope To Polygon für diese resultierende Feature-Class von Puffern auszuführen. Dadurch wird ein quadratisches Hüllkurvenmerkmal um die Ausdehnung jedes Merkmals erstellt. Der Feature-Umschlag für Polygon befindet sich unter Datenverwaltung> Features. Das Modell des Modellbauers sieht folgendermaßen aus:

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • Ausgezeichnete Lösung! Indem Sie die Ausgabe des Puffers als in_memory-Ebene (in_memory \ tmpBuffer) erstellen und vermeiden, dass nicht benötigte Daten auf die Festplatte geschrieben werden, können Sie den Vorgang erheblich beschleunigen.

Antwort

Da das am Ende von Aarons Code verknüpfte Skript nur für quadratische Puffer verwendet werden kann und das neuere arcpy.da-Modul nicht verwendet, I. „Ich habe ein Skript geschrieben, mit dem Rechteckpuffer erstellt werden können. In einem 10k-Zufallspunkt-Dataset wurde es in 10 Sekunden abgeschlossen:

Geben Sie hier die Bildbeschreibung ein

 import os, arcpy point_FC = arcpy.GetParameterAsText(0) w = float(arcpy.GetParameterAsText(1)) h = float(arcpy.GetParameterAsText(2)) output_FC = arcpy.GetParameterAsText(3) def rect(coord, w, h): #Given XY coordinates and rectangle dimensions, #return a polygon object of a rectangle centered about the point x,y = coord w *= 0.5 h *= 0.5 xmin,xmax = x-w, x+w ymin,ymax = y-h, y+h poly = ((xmin, ymax), (xmax, ymax), (xmax, ymin), (xmin, ymin)) return arcpy.Polygon(arcpy.Array(arcpy.Point(*p) for p in poly)) #Create output feature class. spatref = arcpy.Describe(point_FC).spatialReference folder, base = os.path.split(output_FC) arcpy.CreateFeatureclass_management(folder, base, "POLYGON", spatial_reference=spatref) #Get field object for every field in input except OID and Shape. fields = [f for f in arcpy.ListFields(point_FC) if f.type not in ("OID", "Geometry")] for field in fields: arcpy.AddField_management(output_FC, field.name, field.type, field.precision, field.scale, field.length, field.aliasName, field.isNullable, field.required, field.domain) #Get field names to be inputted to cursors. #Need SHAPE@XY token to read point coords and SHAPE@ token to write polygon coords. fnames = [f.name for f in fields] fields_in = fnames[::] fields_out = fnames[::] fields_in.append("SHAPE@XY") fields_out.append("SHAPE@") #Create buffers and write attributes to output FC, if any. count = int(arcpy.GetCount_management(point_FC)[0]) arcpy.SetProgressor("step", "Buffering...", 0, count, 1) with arcpy.da.SearchCursor(point_FC, fields_in) as Scursor, arcpy.da.InsertCursor(output_FC, fields_out) as Icursor: for i,row_in in enumerate(Scursor): #"Convert" point to rectangle arcpy.SetProgressorPosition(i) feature = list(row_in) feature[-1] = rect(feature[-1], w, h) Icursor.insertRow(feature)  

Antwort

Angenommen, Sie verwenden ArcObjects (verwenden Sie die Tags, um die Sprache und API anzugeben, die Sie verwenden), können Sie , um einen quadratischen Puffer aus der Hüllkurve eines Punkts zu erstellen, wie in diesem Beispiel: Alle Funktionen aus der Punktsuche in GeoFea abrufen tureLayer-Snippet

 ESRI.ArcGIS.Geometry.IEnvelope envelope = point.Envelope; envelope.Expand(searchTolerance, searchTolerance, false);  

Antwort

Als Alternative zu Aarons Antwort verwenden Sie für Benutzer ohne erweiterte Lizenz das Tool Minimum Bounding Geometry . Schritte unten (geändert von Aaron):

  1. Puffer Ihre Punktfunktion (ArcToolbox> Analyse-Tools> Nähe> Puffer). Stellen Sie sicher, dass Sie im Feld Lineareinheit den richtigen Abstand auswählen.
  2. Geben Sie Ihre neu erstellten Puffer in das Tool Minimum Bounding Geometry ein (Datenverwaltungswerkzeuge> Features> Minimum Bounding Geometry). Verwenden Sie „RECTANGLE_BY_AREA“ oder „RECTANGLE_BY_WIDTH“. Die anderen Optionen sind nur mit einer erweiterten Lizenz verfügbar.

EDIT : Mit dieser Option können Sie die Ausrichtung der resultierenden quadratischen Puffer nicht steuern, ohne die Option“ ENVELOPE „zu verwenden (für die eine erweiterte Lizenz erforderlich ist). Aktivieren Sie dazu das Kontrollkästchen“ Geometrieeigenschaften als Attribute zur Ausgabe hinzufügen „( optional) „Option – Der resultierende Offset wird in der Ausgabe-Feature-Class als“ MBG_Orientation „aufgezeichnet. Auf diese Weise können die Features bei Bedarf wieder in die Mitte gedreht werden – siehe Drehen Polygone nach Wert aus der Attributtabelle mit ArcPy? für eine mögliche Lösung.

Geben Sie die Bildbeschreibung ein hier

Kommentare

  • Bei meiner speziellen Feature-Class werden die Quadrate mithilfe dieses Workflows in verschiedene Richtungen gedreht. Vielleicht weil ich habe überlappende Pufferkreise. Nicht sicher. Ich ließ Esri die oben beschriebene Methode von Aaron ‚ für dieselbe Feature-Class verwenden und die gepufferten Kreise wurden nicht gedreht.
  • @ Andrew, yep you ‚ ist richtig, das ist eine Einschränkung des Tools ohne erweiterte Lizenz. Die Verwendung der Option ENVELOPE würde das gleiche Ergebnis wie die oben beschriebene Methode von Aaron ‚ zurückgeben, benötigt jedoch auch eine erweiterte Lizenz. Eine mögliche Problemumgehung besteht darin, die Option ‚ Geometrieeigenschaften als Attribute hinzufügen ‚ anzukreuzen und herauszufinden, um wie viel sie gekippt werden (sollte konsistent sein) ) und drehen Sie dann die resultierenden quadratischen Puffer in einer Bearbeitungssitzung um diesen Betrag. Habe ‚ dies noch nicht versucht.

Antwort

Dies site beschreibt, wie CSV mithilfe von Geographiclib-JavaScript und js2shapefile in Quadrat-, Rechteck- oder Kreispuffer konvertiert wird.

Sie können nachsehen, ob es gelöst wird Ihr Problem.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.