Mehr

Wählen Sie Raster aus einem Ordner aus, die die Kacheln eines Polygon-Shapefiles überschneiden


Idealerweise möchte ich in ArcGIS ModelBuilder ein Modell erstellen, das einen Ordner mit Rastern iteriert und diejenigen ausgibt, die Polygonkacheln überschneiden, in einem anderen Shapefile.

Ich habe die Polygon-Shapefiles an einem Dateispeicherort gespeichert und kann sie in das Modell einlesen. Ich habe einen Iterator, der den Ordner der Raster liest.
Mit welchem ​​Werkzeug (sofern vorhanden) kann ich die Raster ausgeben, die die Polygone im Shapefile schneiden?

Kachelindex

Auswahl aus dem Kachelindex: Gewünschte Raster zum Ziehen aus dem Ordner

Attributtabelle der Auswahl aus dem Kachelindex. Die hervorgehobene Namensspalte entspricht der Namenskonvention von Raster-DEMs

Raster-DEM-Ordner, im Arc-Katalog erweitert

BEARBEITEN: Ich konnte einen Stapelprozess ausführen, da die Namen der Polygonkacheln mit den korrelierten Namen der Raster-DEMs übereinstimmten: Erstellen Sie eine Dateiliste für Stapelprozesse Erstellen Sie eine Dateiliste (Attributtabelle als dbf in ArcMap exportieren) Öffnen Dateiliste in Excel öffnen (alle Spalten außer dem allgemeinen Namensfeld löschen)

Spalte B - Geben Sie die Kopie ein „ “ geben Sie den Speicherort der Dateien ein, die Sie kopieren möchten

Bsp.: Y:DataRasterDEMs kopieren

Spalte C - Spezialspalte A ALS WERTE kopieren/einfügen Löschen Sie den Inhalt von Spalte A

Spalte D - .*

Spalte E - Geben Sie den Speicherort für die zu speichernden Dateien ein

Spalte F - verketten Sie die Spalten B - E Bsp: =CONCATENATE(B1,C1,D1," ",E1)

Blatt 2, Spalte A - Kopieren/Einfügen der speziellen Spalte F AS VALUES

Speichern Sie Sheet 2 als tabulatorgetrennte .txt Schließen Sie Excel und öffnen Sie Sheet2.txt Speichern unter mit der Erweiterung .bat (Batch-Datei) doppelklicken Sie auf diese Datei und es sollte das CMP-Feld öffnen und starten

[ “ “ = Leerzeichen]

Für diejenigen, die die Daten sehen wollten, habe ich die Bilder hinzugefügt.

Ich verwende ArcGIS 10.3.1-Erweiterungen: Spatial Analyst 3D Analyst


Dies ist ein Problem, auf das ich oft gestoßen bin, wenn ich eine Disc voller Kacheln bekomme und diejenigen finden muss, die sich in/in der Nähe eines Bereichs befinden, um die Raster für die Erstellung von VRT, Mosaik-Datasets oder Mosaiken (je nach Anforderungen) zu subsetieren…

Mir ist kein Tool in Model Builder bekannt, das dabei hilft, es gibt eine Grenze für die Möglichkeiten im Model Builder, jedoch ist diese Art von Operation in Python sehr einfach:

import os, sys, arcpy AOI = sys.argv[1] # der Interessenbereich, um die Raster für rFolder = sys.argv[2] zu finden # der Ordner, der die zu durchsuchenden Raster enthält oFolder = sys.argv[3] # der zu kopierende Ordner nach desc = arcpy.Describe(AOI) # die Ausdehnung des AOI abrufen sExt = desc.extent arcpy.env.workspace = rFolder für ThisRas in arcpy.ListRasters(): rDesc = arcpy.Describe(ThisRas) rExt = rDesc.extent # prüfen, ob diese Ausdehnung räumlich verwandt ist # mit not disjoint if sExt.disjoint(rExt): arcpy.AddMessage("Raster %s ist außerhalb" % (ThisRas)) else: arcpy.AddMessage("Raster % s überlappt" % (ThisRas)) outFile = os.path.join(oFolder,ThisRas) arcpy.Copy_management(ThisRas,outFile)

Dies ist ein sehr reduziertes Werkzeug, das ich regelmäßig verwende; Vorsicht vor dem AOI und den Rastern Muss im selben Koordinatensystem sein… Sie können dies im Model Builder verwenden, nachdem Sie Ihre eigene Toolbox erstellt und ein Python-Skriptwerkzeug hinzugefügt haben. Die Parameter sind Feature-Class, Ordner und Ordner (der Einfachheit halber alle Eingaben machen).

Ich verwende sys.argv[] über arcpy.GetParameterAsText() - beide machen dasselbe, aber weniger Tippen.

Dies kann mit den Geometrien in der Datei (Punkt, Linie oder Polygon - egal) weiter verfeinert werden:

import os, sys, arcpy AOI = sys.argv[1] # der Interessenbereich, um die Raster für rFolder = sys.argv[2] zu finden # der Ordner, der die zu durchsuchenden Raster enthält oFolder = sys.argv[3] # der Ordner, der nach desc = arcpy.Describe(AOI) kopiert werden soll # die Ausdehnung des AOI abrufen sExt = desc.extent arcpy.env.workspace = rFolder # könnte hierher gehen, um diesen Ordner und alle Unterordner für ThisRas in arcpy.ListRasters zu erstellen (): rDesc = arcpy.Describe(ThisRas) rExt = rDesc.extent # prüfen, ob diese Ausdehnung räumlich verwandt ist # mit not disjoint if sExt.disjoint(rExt): arcpy.AddMessage("Raster %s ist außerhalb" % ( ThisRas)) else: arcpy.AddMessage("Raster %s ist ein Kandidat" % (ThisRas)) outFile = os.path.join(oFolder,ThisRas) # Verfeinern Sie die Geometrie mit arcpy.da.SearchCursor(AOI,"SHAPE .) @") as sCur: IntersectsShape = False for ft in sCur: if not ft[0].disjoint(rExt): IntersectsShape = True break if IntersectsShape: arcpy.AddMessage("Copy Raster %s" % (ThisRas)) arcpy. Copy_management(ThisRas,outFile)

Danke Michael, ich habe dein Python verwendet, aber ich habe den folgenden Fehler erhalten:

FEHLER 000840: Der Wert ist kein Datenelement. Fehler beim Ausführen (Kopieren).

Ich habe mich gerade geändertarcpy.Copy_management(ThisRas,outFile)zuarcpy.Copy_management(os.path.join(rFolder,ThisRas),outFile)

und es funktioniert jetzt gut.


Schau das Video: Reclassify u0026 Convert Raster to Shapefile Polygon u0026 Calculate Area Using ArcGIS (Oktober 2021).