Значения NoData распознаются в растре в ArcGIS Desktop, но не соответствуют правилам символики?

9

У меня есть растр GeoTIFF в ArcGIS Desktop, который можно скачать по следующим двум ссылкам:

  1. http://www.rtwilson.com/downloads/MODIS_MOD04_16-06-2006_Subset.tfw
  2. http://www.rtwilson.com/downloads/MODIS_MOD04_16-06-2006_Subset.tif

Если вы загрузите их в ArcGIS Desktop, вы увидите большие однородные области. При щелчке по этим областям с помощью инструмента «Информация» значение пикселя будет «Нет данных». Однако если вы решите отображать значения Нет данных как прозрачные (или любого другого цвета) в настройках Символы для слоя, значения Нет данных не будут следовать этому правилу.

Интересно, что значения No Data за пределами основной области изображения следуют правилу (установите цвет на красный, чтобы увидеть это), но значения внутри изображения - нет.

Я действительно изо всех сил пытался решить эту проблему - и не могу понять, как это сделать вообще.

У кого-нибудь есть идеи?

robintw
источник

Ответы:

3

Я скачал файл и преобразовал его в пустой массив, и когда я перебираю значения в массиве, я вижу, что я получаю -3.40282347e + 38 и NaN в качестве значений узлов. Возможно, вы могли бы переклассифицировать их в значения одного или другого, чтобы все значения узлов были одинаковыми.

Вы можете использовать инструмент переклассификации, arcpy.sa.setnullили я уверен, что у numpy есть некоторые необычные функции, которые могут сделать это, если вы преобразуете изображение в массив numpy.

Gdal translate также может быть полезен, если вы хотите пойти по пути с открытым исходным кодом.

данго
источник
У вас есть идея, как я могу реклассифицировать эти значения? Кажется, я не могу заставить ArcGIS распознавать что-либо для NaN, и, похоже, он не имеет дело с очень низким значением (в основном, NaN, так как это диапазон поплавков в Arc).
robintw
Если бы это был я, я бы конвертировал каждое изображение в массив numpy, зацикливал массив, конвертируя все значения узлов в -9999 или что-то еще, и затем передавал массив обратно в изображение. Я уверен, что есть более разумный способ сделать это, но я не слишком много работал с NumPy.
данго
если вы решите использовать метод, который я предложил выше, вы можете рассмотреть использование функции python math.isnan () для определения значений NaN.
Данго
4

С этим файлом / данными определенно происходит что-то очень прикольное.

Вы правы в том, что ArcGIS показывает два разных типа NoData, хотя оба атрибута показывают одно и то же. QGIS делает это тоже. Я абсолютно не знаю, что происходит с данными (но я предполагаю, что за кулисами используются два разных значения «noData», одно может быть «нулевым», а другое «-9999», например), но мне было бы интересно знать, может быть, кто-то еще может просветить нас.

Тем не менее, есть несколько возможных обходных путей:

Экспортировать данные - если вы экспортируете данные, не забывая «использовать рендерер», они начнут работать правильно. Если вы не отметите use-renderer, у вашего нового файла будут те же проблемы. С другой стороны, это преобразует его в 8-битные данные (0-255). Некоторый другой инструмент может быть в состоянии повторно визуализировать его, сохраняя данные в виде 32-битных операций с плавающей запятой.

Использовать Классифицированный - Кажется, что метод классифицированных символов правильно отображает оба типа NoData (т.е. как одно и то же), поэтому используйте его, если это возможно, и вы не хотите изменять данные. Stretched показывает вашу ошибку, а «Уникальные значения» ничего не показывает.

(Использование ArcGIS 9.3.1)

ГИС-Jonathan
источник
Спасибо за ответ - я рад, что не только я думаю, что это странно. К сожалению, классифицированные символы не будут подходить для того, что мне нужно сделать, но сейчас я буду выполнять экспорт с использованием средства визуализации. Огорчает то, что это происходит со всеми файлами, которые я получаю со спутника MODIS, используя систему онлайн-обработки MODIS. Я думаю, что проблема может быть в двух разных типах NoData - я думаю, что в этом случае они могут быть «нулевыми» и NaN, но я не знаю.
robintw
Я думаю, что «Использовать объявление» является наименее обременительным из всех предложенных методов, чтобы обойти эту ошибку. Вы можете аппроксимировать практически все, что вы можете сделать в меню «Растягивание» в меню «Засекреченное».
Александр
2

Я просто столкнулся с той же проблемой - и нашел «решение». Если вы умножите растр на 1,0 с помощью растрового калькулятора, ArcMap распознает значения NoData.

Hellski
источник
1

Была такая же проблема с 32-битными сетками ESRI. 16-битные работали нормально, а NoData была невидима, но для 32-битных отображалась черным цветом. Исправили это, экспортируя по отдельности и изменяя значение nodata на -32768, в отличие от -2147483647, которое обычно имеют 32-битные.

Кай
источник
1

У меня такая же проблема. Что мне помогло, так это экспортировать растр в папку базы геоданных. Если растр экспортируется в базу геоданных, arcmap правильно отображает значения NoData.

Фернандо Рибейро
источник
0

У меня похожая проблема с изображениями Landsat 8-OLI при выполнении мозаики. Значения «NoData» на внешней стороне (фон) ничего не делают, но любые недостающие блоки данных, такие как удаление облаков / теней на внутренней стороне, изменят цвет эталонного слоя мозаики. Я выполнил это в ERDAS и Arcmap, и тот же результат. По какой-то причине это влияет на символы, но если вы используете инструмент «Идентификация», значения пикселей будут правильными. Если вы идете за результатами, а не отображать, у вас все будет хорошо.

Zman3
источник