Trouver l'intersection de deux rasters

9

J'ai deux images raster, classées booléennes (1 ou 2). Ils se chevauchent dans des domaines donnés.

J'ai besoin d'un raster qui n'est que les sections qui se chevauchent.

Utilisation d'Arcinfo 10. Answer ne peut utiliser que des méthodes raster, pas de conversion en polygones, points, etc ...Juste pour référence, voici une capture d'écran.

Thad
la source
Les deux réponses sont correctes, la première est plus élégante mais j'ai décidé de donner le deuxième crédit car c'était le plus utile pour moi.
Thad

Réponses:

8

Cela semble être une opération de découpage assez simple. Utilisez l' outil Clip (Gestion des données) .

Dans la documentation d'aide:

Un calque raster ou vectoriel existant peut être utilisé comme étendue de clip. Si vous utilisez une classe d'entités comme étendue de sortie, vous avez la possibilité de découper le raster par le rectangle de délimitation minimal de la classe d'entités ou par la géométrie polygonale des entités. Si la géométrie de découpage est utilisée, la profondeur de pixels de la sortie peut être favorisée. Par conséquent, vous devez vous assurer que le format de sortie peut prendre en charge la profondeur de pixels appropriée.

Cela devrait en fait être plus simple que vos besoins car il utilise des fonctions de base et ne devrait même pas nécessiter l' extension Spatial Analyst , comme le pourraient d'autres méthodes.

-------------- Éditer

D'un autre côté, si votre objectif est de créer un raster qui montre où les deux entrées étaient nulles, ou si l'une avait une valeur, ou les deux avaient une valeur, alors vous utiliseriez la multiplication raster . Cela crée essentiellement un raster en sortie qui a des valeurs qui sont les multiples des valeurs des rasters en entrée. Notez que ce qui suit nécessite l'extension Spatial Analyst.

Un exemple, dans votre cas, avec des rasters booléens.

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

Si vous voulez pouvoir déterminer laquelle de vos entrées a une valeur réelle, vous devrez reclasser l'un des rasters en entrée afin que vos valeurs multipliées soient complètement uniques. Les deux entrées devront être reclassées de sorte qu'il n'y ait pas de valeur "1", car cela permettra des valeurs en double dans un raster multiplié.

Exemple:

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

Vous pouvez effectuer une combinaison de ces opérations où vous coupez l'un des rasters par l'autre, pour n'afficher que la zone qui se chevauche. Ensuite, reclassifiez et multipliez les rasters pour montrer où les deux sont faux, l'un ou l'autre est vrai, ou les deux sont vrais.

J'espère que cela t'aides.

Obtenez spatial
la source
Je reçois toujours une erreur d'étendue de sortie. Ou une erreur de masque. Tellement frustrant .... Jamais rencontré cela auparavant.
Thad
nvm. Je pense que j'ai un problème de projection. c'est-à-dire que ces fonctions ne prennent pas en charge la projection à la volée ... donc elles ne se chevauchent pas en ce qui concerne les fonctions concernées.
Thad
@Thad - J'essaierais alors de reprojeter l'un des rasters pour qu'il corresponde à la projection de l'autre. Utilisez l' outil Project Raster situé sous les outils de gestion des données. Ou, utilisez le code python pour le faire par programme dans le cadre de votre flux de travail.
Obtenez Spatial
ouais je l'ai fait et cela a parfaitement fonctionné.
Thad
9

Je suppose que dans vos rasters, vous avez la valeur 1 pour le blanc (en quelque sorte la zone nodata) et 2 pour le bleu / vert.

Vous devez donc obtenir des zones où les deux rasters ont une valeur 2.

Cela peut être facilement effectué avec Raster Calculator dans ArcGIS.

L'expression ressemblera à:

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

ou

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

PS cet outil nécessite l'extension Spatial Analyst

Alex Markov
la source
0

Je pense que cette méthode peut vous aider:

  1. arctoolbox >> Data management tools >> Raster >> Rasterprocessing >> Clip faites glisser et déposez votre raster en entrée et en sortie (peu importe lequel). Vous avez maintenant un fichier de formes de votre zone de chevauchement (nous l'avons appelé overlap.shp).
  2. en utilisant l'extraction par masque, pour les deux rasters:: arctoolbox >> Spatial analyst tools >> Extraction >> Extract by maskentrée: le Raster 1, données de masque: le overlap.shp. Vous avez maintenant un raster de chevauchement raster 1 (nous l'avons appelé overlap1). arctoolbox >> Spatial analyst tools >> Extraction >> Extract by mask: entrée: les données du masque Raster 2.: le overlap.shp. Vous avez maintenant un raster de chevauchement raster 1 (nous l'avons appelé chevauchement2).
  3. la dernière étape:: arctoolbox >> Spatial analyst tools >> Map algebrafaites glisser et déposez overlap2 & overlap1.

Vous pouvez maintenant tout faire. Toutes les statistiques dont vous avez besoin.

unpointseul
la source