Abrufen der Grenze des Rasterbilds als Polygon in ArcGIS Desktop?


28

Ich habe ein rechteckiges Rasterbild in ArcGIS Desktop.

Wie kann ich ein Polygon erzeugen, das genau die Ausdehnung des Rasterbilds hat?

Das heißt, ich möchte eine Polygonebene mit einem einzigen Viereck haben, das der Rand des Bildes ist.

Ich habe versucht, einfach eine Raster-> Polygon-Konvertierung durchzuführen, aber dies versucht, die Daten im Bild zu verwenden, um den Umriss zu generieren - alles, was ich möchte, ist der Umriss des Bildrandes.

Ich verwende ArcGIS Desktop 10.

Antworten:


33

Wenn Sie über Spatial Analyst verfügen, haben Sie folgende Möglichkeiten :

  1. Multiplizieren Sie das Raster mit 0, um mit dem Raster-Rechner ein Raster mit konstantem Wert zu erstellen. (Stellen Sie sicher, dass Sie es in einen Integer-Typ konvertieren, da sonst Schritt 2 nicht funktioniert.)
  2. Konvertieren Sie das Ergebnis von Schritt 1 mit dem Werkzeug "Raster in Polygon" in ein Polygon.

Eine andere Lösung:

Wenn Sie über eine 3D Analyst- Lizenz verfügen , können Sie das Raster Domain-Tool unter 3D Analyst> Conversion> from raster verwenden (es verfügt jedoch nicht über die Smooth-Funktion).


11

Was ist damit, es einfach zu digitalisieren? Klick-Klick-Klick-Klick erledigt.


8
Ich bin mir nicht sicher, warum diese Option abgelehnt wurde. Sie können die Koordinaten der Ausdehnungsecken finden und an diesen Koordinaten Eckpunkte erstellen. Es kann sogar zur Analyse verwendet werden. Wenn es nur zur Anzeige ist, funktioniert Click-Click-Click-Click großartig.
Baltok

3
Ich würde sagen, weil das Raster eine unregelmäßige Form haben und, abhängig von der Komplexität, zu einem ziemlich mühsamen Digitalisierungsjob führen könnte
Phil Henley,

4
Aber das OP sagte, es sei rechteckig. Scheint mir ein ziemlich einfacher Job zu sein. Durch Heranzoomen und Genauigkeit ist der Unterschied zwischen dem tatsächlichen Rasterumriss und dem digitalisierten Umriss für jede reale Anwendung vernachlässigbar.
Matt

11

Mit dem Werkzeug "Rasterdomäne" von 3D Analyst können Sie ein Polygon mit der gleichen Ausdehnung wie Ihre Rasterdaten erstellen


Willkommen bei der GIS SE! Könnten Sie bitte Referenzen zu Ihrer Antwort hinzufügen? Auf diese Weise wäre es solider.
RK

Das Raster Domain Tool hat den Job perfekt gemacht! Erstellt einen Umriss oder eine Grenze der Rasterdaten.

1
Ein warnendes Wort zu diesem Werkzeug: Das erzeugte Begrenzungspolygon gibt den Umfang der Rasterdaten an, die im Pixel-CENTER beginnen und enden, nicht am äußeren Rand der Pixel. Ich habe es gerade ausprobiert und dachte, es käme zum äußeren Begrenzungsrahmen des Rasters, aber wenn Sie hineinzoomen, sehen Sie, dass der Begrenzungsrahmen in der Pixelmitte beginnt.
fbiles

Es gibt tatsächlich einen Parameter für die IRasterDomainExtractor.ExtractDomain-Methode, mit dem gesteuert wird, ob der mittlere oder der äußere Rand der Pixel / Zellen verwendet wird.
Preston

Dies ist perfekt! Ein Werkzeug und ich haben einen Polygonumriss meines Rasters. Vielen Dank!
User3281667

10

Sie können das Build Footprint-Tool in der Data Management Toolbox verwenden. Sie müssen ein Mosaik-Dataset aus Ihrem Raster erstellen.

Erstellen Sie ein neues Mosaik in einer File-Geodatabase und fügen Sie Ihr Raster hinzu.

Öffnen Sie Ihr Mosaik in ArcMap und extrahieren Sie den Footprint.

Das würde ich tun.


8

Ich benutze dieses einfache Python-Skript, es erstellt eine Polygon-Feature-Class mit der Ausdehnung des gesamten in einem Ordner vorhandenen Rasters. Um es zu verwenden, können Sie ein Werkzeug in ArcToolbox erstellen oder einfach die Variablen InFolder und Dest (Destination) ändern.

import arcpy,os

InFolder = arcpy.GetParameterAsText(0)
Dest=arcpy.GetParameterAsText(1)

arcpy.env.workspace=InFolder
#The raster datasets in the input workspace
in_raster_datasets = arcpy.ListRasters()

arcpy.CreateFeatureclass_management(os.path.dirname(Dest),
                                   os.path.basename(Dest),
                                   "POLYGON")
arcpy.AddField_management(Dest,"RasterName", "String","","",250)
arcpy.AddField_management(Dest,"RasterPath", "String","","",250)

cursor = arcpy.InsertCursor(Dest)
point = arcpy.Point()
array = arcpy.Array()
corners = ["lowerLeft", "lowerRight", "upperRight", "upperLeft"]
for Ras in in_raster_datasets:
    feat = cursor.newRow()  
    r = arcpy.Raster(Ras)
    for corner in corners:    
        point.X = getattr(r.extent, "%s" % corner).X
        point.Y = getattr(r.extent, "%s" % corner).Y
        array.add(point)
    array.add(array.getObject(0))
    polygon = arcpy.Polygon(array)
    feat.shape = polygon
    feat.setValue("RasterName", Ras)
    feat.setValue("RasterPath", InFolder + "\\" + Ras)
    cursor.insertRow(feat)
    array.removeAll()
del feat
del cursor  

kann uns im Detail erklären, wie man diesen Code benutzt. Ich möchte es für .asc-Rasterdateien verwenden. Meine Bilder sind unterschiedliche Unterordner.
GIS Data Butcher

1
Antwort von jeb hat für mich funktioniert, habe nicht genügend Repräsentanten, um ihn zu wählen. @GIS Data Butcher Speichern Sie die gesamte Quelle in einer script.py-Datei und führen Sie sie in ArcMap im Python-Fenster aus. Sie können folgenden Befehl in Python Window verwenden, um ein Skript aus einer Datei auszuführen. > execfile (r'd: \ temp \ script.py ')
Asad

perfekt!! Ich frage mich, gibt es eine Möglichkeit, das Tool auch Unterordner zu lesen?
Raffael

@raphael, natürlich müssen Sie nur das Standard-Python os.listdir oder os.walk im Skript implementieren.
27.

@jeb ja, ich verstehe das Konzept ... bot ich bin sehr neu in diesem Bereich und konnte es nicht zum Laufen bringen ... kannst du etwas helfen?
Raffael

4

Eine einfache Möglichkeit ist auch die Verwendung des Reklassifizierungswerkzeugs, bei dem Sie auf die Schaltfläche Klassifizieren klicken und die Anzahl der Klassen auf 1 ändern sollten. Klicken Sie auf OK. Das Ausgabe-Raster kann jetzt einfach mit dem Konvertierungs-Tool "Raster in Polygon" konvertiert werden. ;)


4

Ich denke, dass das Umklassifizieren und Konvertieren des Rasters in ein Polygon viel zu zeitaufwändig sein kann. Meiner Meinung nach ist der einfachste Weg dies zu tun:

  • Holen Sie sich maxX, maxY, minX, minY (dies kann in Python mit dem Befehl describe erfolgen)
  • Führen Sie Create Fishnet mit der oben angegebenen Ausdehnung und der Anzahl der Zeilen / Spalten als 1 aus

Wenn Sie viele Raster haben, sollte dies in Python geschehen und kann in Sekundenschnelle Hunderte von Fußabdrücken erzeugen.


0

In ArcCatalog können Sie einen Raster-Katalog in einer .gdb-Datei erstellen (Data Management Tools-> Raster). Nicht verwaltet ist in Ordnung. Klicken Sie dann mit der rechten Maustaste und laden Sie (wenn sich die Raster nur in einem Ordner befinden, klicken Sie auf "Aus Arbeitsbereich laden". Wenn Sie den Raster-Katalog in ArcMap laden, können Sie mit der rechten Maustaste auf "Daten" klicken und den Footprint als Formdatei oder Feature-Class exportieren. Die Formdatei enthält ein Namensfeld mit dem Namen des Rasters.

Der Raster-Katalog zeigt automatisch die Extents an, aber ich musste die Extents an jemanden senden, der ArcGIS nicht verwendete.


0

Verwenden Sie das Werkzeug "Raster in Polygon" in der Toolbox der Konvertierungswerkzeuge. Stellen Sie sicher, dass das Kontrollkästchen "Polygone vereinfachen" deaktiviert ist. Dadurch wird genau das erstellt, was Sie möchten.


8
Sind Sie sicher, dass dies nicht nur zu einem großen Durcheinander von Polygonen führt, eines für jeden zusammenhängenden Satz gleichwertiger Pixel im Originalbild?
whuber

Sie können danach jederzeit eine Überblendung hinzufügen, um das Ausmaß der Poly zu erhalten. Ich wette jedoch, dass die von @jeb aufgeführte Python-Lösung schneller ist.
GeoJohn

0

Das Werkzeug "Rasterdomäne" erstellt ein Polygon um ein unregelmäßig geformtes Raster. Ich glaube, es erfordert eine Lizenz für die 3D-Analyst-Erweiterung.


0

Die Verwendung von ArcCatalog ist die beste Option. Erstellen Sie ein Mosaik-Dataset aus verfügbaren Rastern. Definieren Sie im Mosaik "NO VALUE", um zu verhindern, dass der Hintergrund des Rasters in das Polygon aufgenommen wird. Erstellen Sie Fußabdrücke mit der radiometrischen Methode. Öffnen Sie das Mosaik-Dataset in ArcGIS und exportieren Sie Footprints in eine SHP-Datei. Tolle Möglichkeit, die Mosaikgrenzen zu bestimmen ...


0

Wenn Sie versuchen, den Umriss eines DEM-Rasters abzurufen, müssen Sie die folgenden Schritte ausführen

Wenn Sie über Spatial Analyst und 3D Analyst verfügen, haben Sie folgende Möglichkeiten:

  1. Multiplizieren Sie das Raster mit 0, um mit Raster Calculator ein Raster mit konstantem Wert zu erstellen.
  2. Konvertieren Sie die Ergebnisse von Schritt 1 mit "INT (Tool)" in eine Raster-Ganzzahl. Dies ist für den nächsten Schritt erforderlich.
  3. Konvertieren Sie das Ergebnis von Schritt 2 mit dem Werkzeug "Raster in Polygon" in ein Polygon (funktioniert nur mit Raster-Ganzzahlen).

Hallo Seamster02, willkommen bei GIS Stack Exchange :) Wie geschrieben, unterscheidet sich dies nicht wesentlich von der akzeptierten Antwort gis.stackexchange.com/a/22016/108 .
Matt Wilkie
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.