Finden Sie den Schnittpunkt zweier Raster


9

Ich habe zwei Rasterbilder, Boolesch klassifiziert (1 oder 2). Sie überlappen sich in bestimmten Bereichen.

Ich brauche ein Raster, das nur aus überlappenden Abschnitten besteht.

Verwenden von Arcinfo 10. Answer kann nur Rastermethoden verwenden, keine Konvertierung in Polygone, Punkte usw.Nur als Referenz hier ein Screenshot.


Beide Antworten sind richtig, die erste ist eleganter, aber ich habe mich entschieden, die zweite zu würdigen, da sie für mich am hilfreichsten war.
Thad

Antworten:


8

Dies scheint eine ziemlich einfache Beschneidungsoperation zu sein. Verwenden Sie das Clip- Tool (Datenverwaltung) .

Aus der Hilfedokumentation:

Eine vorhandene Raster- oder Vektorebene kann als Clip-Ausdehnung verwendet werden. Wenn Sie eine Feature-Class als Ausgabebereich verwenden, können Sie das Raster nach dem minimalen Begrenzungsrechteck der Feature-Class oder nach der Polygongeometrie der Features ausschneiden. Wenn die Beschneidungsgeometrie verwendet wird, kann die Pixeltiefe der Ausgabe erhöht werden. Daher müssen Sie sicherstellen, dass das Ausgabeformat die richtige Pixeltiefe unterstützt.

Dies sollte tatsächlich einfacher sein als Ihre Anforderung, da Kernfunktionen verwendet werden und nicht einmal die Spatial Analyst- Erweiterung erforderlich sein sollte , wie dies bei anderen Methoden der Fall sein könnte.

-------------- Bearbeiten

Wenn Sie andererseits ein Raster erstellen möchten, das anzeigt, wo beide Eingaben null waren oder entweder eine einen Wert oder beide einen Wert hatten, verwenden Sie die Raster-Multiplikation . Dadurch wird im Wesentlichen ein Ausgabe-Raster erstellt, dessen Werte das Vielfache der Werte der Eingabe-Raster sind. Beachten Sie, dass für das Folgende die Erweiterung Spatial Analyst erforderlich ist.

Ein Beispiel in Ihrem Fall mit booleschen Rastern.

Raster 1:  1,2  
Raster 2:  1,2

Output Raster:  Possible combinations:  1x1,1x2,2x1,2x2 with output values: 1,2,4  
Value 1:  Both Boolean False  
Value 2:  1 or the other, Boolean True  
Value 4:  Both Boolean True

Wenn Sie feststellen möchten, welche Ihrer Eingaben einen echten Wert hat, müssen Sie einen der Eingabe-Raster neu klassifizieren, damit Ihre multiplizierten Werte vollständig eindeutig sind. Beide Eingaben müssen neu klassifiziert werden, damit kein Wert von "1" vorhanden ist, da dies doppelte Werte in einem multiplizierten Raster ermöglicht.

Beispiel:

Raster 1: 1,2 - Use [Raster Addition][4], with a constant of 1 - Output Raster 3  
Raster 2: 1,2 - Use [Multiply Raster][5], with constant of 2 - Output Raster 4  
Raster 3: 2,3  
Raster 4: 2,4

Now, multiply Raster 3 and Raster 4  
Output Raster:  Possible Combinations:  2x2,3x2,4x2,4x3 with output values: 4,6,8,12

Value 4:  Both Boolean False  
Value 6:  Raster 3 True, Raster 4 False  
Value 8:  Raster 4 True, Raster 3 False  
Value 12: both Boolean True

Sie können eine Kombination dieser Operationen ausführen, bei der Sie einen der Raster nach dem anderen abschneiden, um nur den überlappenden Bereich anzuzeigen. Klassifizieren Sie dann die Raster neu und multiplizieren Sie sie, um zu zeigen, wo beide falsch sind, der eine oder der andere wahr ist oder beide wahr sind.

Hoffe das hilft.


Ich erhalte immer wieder einen Ausgabefehler. Oder ein Maskenfehler. So frustrierend ... Nie zuvor darauf gestoßen.
Thad

nvm. Ich glaube, ich habe ein Projektionsproblem. dh diese Funktionen unterstützen keine spontane Projektion ... daher überlappen sie sich nicht in Bezug auf die betreffenden Funktionen.
Thad

@Thad - Ich würde dann versuchen, eines der Raster neu zu projizieren, um es an die Projektion des anderen anzupassen. Verwenden Sie das Projekt-Raster- Tool unter den Datenverwaltungstools. Oder verwenden Sie den Python-Code, um dies programmgesteuert als Teil Ihres Workflows zu tun.
Holen Sie sich Spatial

Ja, das habe ich gemacht und es hat perfekt funktioniert.
Thad

9

Ich gehe davon aus, dass Sie in Ihren Rastern den Wert 1 für Weiß (in gewisser Weise Nodata-Bereich) und 2 für Blau / Grün haben.

Sie müssen also Bereiche erhalten, in denen beide Raster den Wert 2 haben.

Dies kann problemlos mit Raster Calculator in ArcGIS durchgeführt werden.

Der Ausdruck sieht folgendermaßen aus:

("raster1" == 2) & ("raster2" == 2)

oder

Con(("raster1" == 2) & ("raster2" == 2), 1, 0)

PS Dieses Tool erfordert die Erweiterung Spatial Analyst


0

Ich denke, diese Methode kann Ihnen helfen:

  1. arctoolbox >> Data management tools >> Raster >> Rasterprocessing >> Clip Ziehen Sie Ihr Raster per Drag & Drop in die Ein- und Ausgabe (egal welches). Jetzt haben Sie ein Shapefile aus Ihrem Überlappungsbereich (wir haben es überlappend.shp genannt).
  2. Verwenden des Extrakts nach Maske für beide Raster arctoolbox >> Spatial analyst tools >> Extraction >> Extract by mask:: Eingabe: Raster 1, Maskendaten: Überlappung.shp. Jetzt haben Sie ein Raster von Überlappungsraster 1 (wir haben es Überlappung1 genannt). arctoolbox >> Spatial analyst tools >> Extraction >> Extract by mask: Eingabe: die Raster 2. Maskendaten: die Überlappung.shp. Jetzt haben Sie ein Raster von Überlappungsraster 1 (wir haben es Überlappung2 genannt).
  3. Der letzte Schritt arctoolbox >> Spatial analyst tools >> Map algebra:: Drag & Drop Overlap2 & Overlap1.

Jetzt können Sie alles tun. Alle Statistiken, die Sie benötigen.

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.