Найти пересечение двух растров

9

У меня есть два растровых изображения, классифицированных как логические (1 или 2). Они перекрываются в определенных областях.

Мне нужен растр, который состоит только из перекрывающихся секций.

Использование Arcinfo 10. Ответ может использовать только растровые методы, без преобразования в полигоны, точки и т. Д.Просто для справки вот скриншот.

Тад
источник
Оба ответа верны, первый из них более элегантный, но я решил дать второй балл, так как он был наиболее полезным для меня.
Thad

Ответы:

8

Это похоже на довольно простую операцию отсечения. Используйте инструмент Clip (Управление данными) .

Из справочной документации:

Существующий растровый или векторный слой может использоваться как экстент клипа. Если вы используете класс пространственных объектов в качестве выходного экстента, у вас есть возможность обрезать растр по минимальному ограничивающему прямоугольнику класса пространственных объектов или по геометрии полигона объектов. Если используется геометрия отсечения, то может быть увеличена глубина вывода в пикселях. Поэтому вам необходимо убедиться, что выходной формат поддерживает правильную глубину пикселей.

На самом деле это должно быть проще, чем ваши требования, поскольку он использует основные функции и даже не требует расширения Spatial Analyst , как могли бы другие методы.

-------------- Редактировать

С другой стороны, если ваша цель - создать растр, который показывает, где оба входа были нулевыми, или один из них имел значение, или оба имели значение, тогда вы должны использовать Raster Multiplication . По сути, это создает выходной растр, значения которого кратны значениям входных растров. Обратите внимание, что для дальнейшего использования требуется расширение Spatial Analyst.

Пример, в вашем случае, с булевыми растрами.

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

Если вы хотите иметь возможность определить, какой из ваших входных данных имеет истинное значение, вам нужно будет переклассифицировать один из входных растров, чтобы ваши умноженные значения были полностью уникальными. Оба входа необходимо будет реклассифицировать, чтобы не было значения «1», так как это позволит дублировать значения в умноженном растре.

Пример:

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

Вы можете выполнить комбинацию этих операций, когда вы обрезаете один из растров другим, чтобы показать только перекрывающуюся область. Затем переклассифицируйте и умножьте растры, чтобы показать, где оба имеют значение False, один или другой имеют значение True или оба имеют значение True.

Надеюсь это поможет.

Получить Пространственный
источник
Я продолжаю получать ошибку экстента вывода. Или ошибка маски. Так расстраивает .... Никогда не сталкивался с этим раньше.
Thad
NVM. Я думаю, что у меня есть проблема с проекцией. то есть эти функции не поддерживают проецирование на лету ... поэтому они не пересекаются в отношении соответствующих функций.
Thad
@Thad - тогда я бы попытался перепроектировать один из растров, чтобы соответствовать проекции другого. Используйте инструмент Project Raster, который находится под инструментами управления данными. Или используйте код Python, чтобы сделать это программно как часть вашего рабочего процесса.
Получите Пространственное
да, я сделал это, и это сработало отлично.
Тад
9

Я предполагаю, что в ваших растрах у вас есть значение 1 для белого (в некотором роде области nodata) и 2 для синего / зеленого.

Итак, вам нужно получить области, где оба растра имеют значение 2.

Это можно легко сделать с помощью Raster Calculator в ArcGIS.

Выражение будет выглядеть так:

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

или

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

PS этот инструмент требует расширения Spatial Analyst

Алекс Марков
источник
0

Я думаю, что этот метод может помочь вам:

  1. arctoolbox >> Data management tools >> Raster >> Rasterprocessing >> Clip перетащите свой растр на вход и выход (независимо от того, какой). Теперь у вас есть шейп-файл из области перекрытия (мы назвали его overlap.shp).
  2. используя извлечение по маске, для обоих растров:: arctoolbox >> Spatial analyst tools >> Extraction >> Extract by maskinput: Raster 1, data mask: overlap.shp. Теперь у вас есть растр перекрытия 1 (мы назвали его перекрытием 1). arctoolbox >> Spatial analyst tools >> Extraction >> Extract by mask: input: растровые 2. маски данных: overlap.shp. Теперь у вас есть растр перекрытия 1 (мы назвали его перекрытием 2).
  3. последний шаг: arctoolbox >> Spatial analyst tools >> Map algebraперетаскивание перекрытия 2 и перекрытия 1.

Теперь вы можете делать все что угодно. Каждая статистика, которая вам нужна.

unpointseul
источник