У меня есть ортоизображение RGB с черной областью вместо NoData, как показано здесь:
Когда я использую инструмент SetNull, он удаляет черную область, но затем превращает ее в ортоизображение в оттенках серого, а это не то, что мне нужно.
Я знаю, что есть способ обойти это, используя инструмент Clip (Data Management), чтобы обрезать растр, и там вы можете установить значение NoData равным значению черных ячеек (0). Тем не менее, я создаю семинар для студентов, и я хотел бы использовать менее противоречивый метод.
Конечно, есть возможность запустить инструмент NoData для каждой полосы в отдельности и затем объединить три полосы вместе, однако мне нужно иметь условие, где band1, band2 и band3 все равны 0, чтобы установить его как NoData. Возможность сделать это в ModelBuilder была бы идеальной, но также было бы неплохо создавать сценарии с использованием ArcPy.
Я использую ArcGIS 10.2 Desktop с расширенной лицензией.
источник
Ответы:
Вам нужно установить Raster Properties в скрипте или изменить его вручную в ArcCatalog. Это не создаст новый растр и даже не займет очень много времени.
В питоне это немного сложно:
Поскольку нодата находится далеко внизу списка, мне проще это указать; параметры: Band Value; Band Value; ... до тех пор, пока не будут рассмотрены все полосы. Если в одной и той же папке у вас больше (или меньше) полос, вам придется использовать arcpy.Describe и свойство bandCount, чтобы установить нулевое значение для правильного количества полос:
В ArcCatalog щелкните правой кнопкой мыши слой и перейдите к свойствам:
нажмите кнопку редактирования:
Введите значения, затем нажмите OK, чтобы закрыть редактор NoData, и OK, чтобы применить изменения.
Теперь растр ничего не будет отображать в ArcMap, где значение ячейки равно 0,0,0.
источник
Если вы переходите к свойствам растра, и если символы установлены как составные RGB (которые кажутся), вы можете установить флажок Отображать значения фона (RGB) и установить все, что вам нравится, в качестве пустого фона. Так что просто установите 0 0 0 в качестве значения фона, и вы должны быть в бизнесе.
источник
Я думаю, что самый простой способ добиться этого - сначала создать растр с нулевым условием, а затем использовать этот растр для отдельного присвоения значений NoData каждой полосе.
Попробуйте запустить функцию Con, чтобы создать растр с нулевым условием.
Затем с помощью растрового условия с нулевым условием присвойте значения NoData каждому диапазону с помощью установленной функции Null . Вы должны быть в состоянии сделать это с помощью конструктора моделей или Python.
источник
Я считаю, что вы можете использовать три разные процедуры, которые теоретически должны работать. Растровый вычислитель, где вы можете использовать это выражение
SETNULL([raster] == value, [raster])
Переклассифицировать, где вы должны переклассифицировать только то значение, которое вы хотите. А используя ArcPy, вы можете использовать этот скрипт, который я нашел здесь https://gis.stackexchange.com/a/24578/47790источник