Кодировщик для ввода изображения в компьютер в виде растровой таблицы

Обновлено: 21.11.2024

Указывает, должен ли выходной файл иметь значения, разделенные запятыми (csv).

Файл XYZ ASCII

По умолчанию: [Сохранить во временный файл]

Спецификация выходного файла. Один из:

Сохранить во временный файл

Здесь также можно изменить кодировку файла.

Результаты¶

Файл XYZ ASCII

Таблица, содержащая значения, экспортированные из растрового канала.

PCT в RGB¶

Преобразует 8-битное изображение с палитрой в 24-битное RGB. Он преобразует полосу псевдоцвета из входного файла в файл RGB нужного формата.

Этот алгоритм основан на утилите GDAL pct2rgb.

Меню по умолчанию: Растр ‣ Преобразование

Параметры¶

Входной слой

Введите 8-битное растровое изображение

Номер группы

По умолчанию: первая полоса входного слоя

Если растр многоканальный, выберите канал, который вы хотите преобразовать

Создать файл RGBA

Указывает, должен ли выходной файл иметь тип RGBA.

PCT в RGB

По умолчанию: [Сохранить во временный файл]

Спецификация выходного файла. Один из:

Сохранить во временный файл

Здесь также можно изменить кодировку файла.

Результаты¶

PCT в RGB

24-битное растровое изображение RGB

Полигонизация (растр в вектор)¶

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

Этот алгоритм основан на утилите GDAL polygonize.

Меню по умолчанию: Растр ‣ Преобразование

Параметры¶

Входной слой

Входной растровый слой

Номер группы

По умолчанию: первая полоса входного слоя

Если растр многоканальный, выберите нужный канал

Имя поля для создания

Укажите имя поля для атрибутов подключенных регионов.

Векторизованный

По умолчанию: [Сохранить во временный файл]

Указание выходного (полигонального) векторного слоя. Один из:

Сохранить во временный файл

Здесь также можно изменить кодировку файла.

Результаты¶

Векторизованный

Выходной векторный слой

Переставить полосы¶

Создает новый растр, используя выбранные каналы из заданного растрового слоя. Алгоритм также позволяет переупорядочивать каналы вновь созданного растра.

Этот алгоритм основан на утилите перевода GDAL.

Параметры¶

Входной слой

Входной растровый слой

Выбранные группы

[растровая полоса] [список]

Упорядоченный список каналов для создания нового растра

Дополнительные параметры создания

Для добавления одной или нескольких опций создания, которые управляют создаваемым растром (цвета, размер блока, сжатие файла…). Для удобства вы можете использовать предопределенные профили (см. раздел параметров драйвера GDAL ).

Тип выходных данных

Определяет тип данных выходного растрового файла. Варианты:

0 — использовать тип данных входного слоя

Конвертировано

По умолчанию: сохранить во временный файл

Спецификация выходного растра. Один из:

Сохранить во временный файл

Здесь также можно изменить кодировку файла.

Результаты¶

Конвертировано

Вывод растрового слоя с измененными каналами.

RGB в PCT¶

Преобразует 24-битное изображение RGB в 8-битное изображение с палитрой. Вычисляет оптимальную таблицу псевдоцветов для данного RGB-изображения, используя алгоритм медианного отсечения на гистограмме RGB с пониженной дискретизацией. Затем он преобразует изображение в псевдоцветное изображение, используя таблицу цветов. Это преобразование использует сглаживание Флойда-Стейнберга (рассеивание ошибок) для максимального визуального качества выходного изображения.

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

Этот алгоритм основан на утилите GDAL rgb2pct.

Меню по умолчанию: Растр ‣ Преобразование

Параметры¶

Входной слой

Входной (RGB) растровый слой

Количество цветов

Количество цветов, которые будут содержаться в результирующем изображении. Возможно значение от 2 до 256.

PCIDSK – это структура данных для хранения цифровых изображений и связанных с ними данных, таких как справочные таблицы (LUT), спектральные характеристики, наземные контрольные точки (GCP) и другие типы данных. Каждая база данных PCIDSK представляет собой файл на диске с отдельным именем. У вас может быть любое количество файлов PCIDSK, ограниченное только емкостью диска компьютера. Файлы PCIDSK можно использовать на различных компьютерных платформах.

Сегменты — это части базы данных PCIDSK, в которых хранятся данные, связанные со снимками в базе данных. В отличие от каналов изображений, дисковое пространство не выделяется для сегментов во время создания базы данных; скорее, дисковое пространство выделяется динамически всякий раз, когда запускается программа, генерирующая сегменты.База данных может хранить до 1024 сегментов, если у вас достаточно места на диске.

Следующие типы информации хранятся в виде сегментов:

Растровые изображения [Тип 101:BIT]

Сегменты растрового изображения представляют собой растровые слои и имеют те же размеры в пикселях и линиях, что и данные изображения в файле PCIDSK. Каждый пиксель имеет глубину 1 бит со значением 0 или 1. Это означает, что значение серого пикселя растрового изображения может быть равно нулю (пиксель «выключен») или 1 (пиксель «включен»). Предполагается, что пространственная привязка, связанная с растровыми слоями, применима к растровым слоям. Одним из примеров использования сегментов растрового изображения является маскирование изображений при создании областей обучения во время классификации.

Векторы [Тип 116:VEC]

Векторные слои или сегменты хранят набор связанных векторов и могут быть точками, ломаными линиями (дугами), целыми многоугольниками, топологическими многоугольниками или дополнительными записями базы данных. Они используются для представления объектов, таких как речные сети, сети дорог и политическое деление.

Векторные объекты называются фигурами. Фигура имеет уникальный числовой идентификатор (ShapeID), который больше или равен нулю. Каждая фигура имеет связанную запись атрибутов, хранящихся в слое как часть фигуры. Каждая фигура имеет список вершин со значениями x, y и z. Вершины — это координаты в векторной системе пространственной привязки.

Подписи [Тип 121:SIG]

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

Текст [Тип 140:TEX]

Географическая привязка [Тип 150:GEO]

Сегменты с географической привязкой хранят математические преобразования, которые сопоставляют все местоположения пикселей в изображении из базы данных с системой координат с географической привязкой, такой как UTM.

Орбита [Тип 160:ORB]

Сегменты орбиты хранят спутниковые эфемерные данные, используемые в процессе ортотрансформирования. Эта информация считывается из исходного источника данных или из текстового файла.

Таблица поиска [Тип 170:LUT]

В сегментах таблицы поиска (LUT) хранятся числовые таблицы, которые сопоставляют уровни серого изображения с новыми уровнями серого.

Таблица псевдоцветов [Тип 171:PCT]

Сегменты псевдоцвета (PCT) хранят числовые таблицы, которые сопоставляют значения цифрового номера (DN) изображения с определенным цветом. Цвета определяются значением интенсивности (от 0 до 255) для каждого из красного, зеленого и синего компонентов.

Двоичный [Тип 180:BIN]

Двоичные сегменты создаются и используются программами PCI. Они содержат только внутреннюю информацию, такую ​​как модели ортотрансформирования и нейронные сети.

Массив [Тип 181:ARR]

Сегменты массива хранят массив чисел. Они создаются и используются программами PCI. Они содержат такую ​​информацию, как смещения усиления SAR и таблицы масштабирования усиления.

Система [Тип 182:SYS]

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

Наземные опорные точки [Type 214:GCP]

Сегменты наземных опорных точек (GCP) хранят пары положений координат x и y, которые определяют местоположение точки на изображении и некоторой другой системе отсчета, такой как векторный сегмент, карта, другое изображение или ввод координат с клавиатуры для коррекция изображения, регистрация и создание мозаики.

Каждый сегмент имеет числовой код. Например, сегменты GCP имеют тип 214. Этот числовой код помогает вам найти определенный сегмент в базе данных. При составлении списка сегментов с помощью программы ASL вы можете создать список по типу сегмента.

Таблицы псевдоцветов

Таблицы поиска

Наземные контрольные точки

Сегменты GCP используются для связывания координат проекции с местоположениями на нескорректированном необработанном изображении.

Опорные точки также можно использовать для связи местоположений в любых двух системах пространственной привязки: в координатах необработанного изображения и в системе пространственной проекции. Определения систем географической привязки хранятся в виде 16-символьных строк единиц карты.

Параметры проекции не сохраняются. Можно использовать только те проекции, которые полностью определены строкой модуля карты; например, UTM, долгота/широта или METRE. Сложные проекции, такие как поперечная проекция Меркатора, использовать нельзя.

Каждая контрольная точка может иметь высоту, связанную с местоположением на изображении. Строка единиц высоты сохраняется для каждой системы со значениями в метрах или футах.

Earth Engine отличается от традиционной обработки изображений, ГИС или другого настольного программного обеспечения, используемого для анализа геопространственных данных. Алгоритмы, которые вы создаете в Earth Engine, работают в облаке Google, распределенном по множеству компьютеров. Отладка может быть сложной, поскольку ошибки могут возникать либо в коде JavaScript на стороне клиента, либо при выполнении закодированных инструкций на стороне сервера, а также в результате проблем масштабирования, а также синтаксических или логических ошибок.Части программы, работающие где-то в облаке, недоступны для проверки, если только вы не попросите их. В этом документе представлены стратегии отладки, инструменты и решения, которые помогут вам устранять распространенные ошибки и отлаживать скрипты Earth Engine.

Синтаксические ошибки

Синтаксические ошибки в клиентском JavaScript обычно обнаруживаются редактором кода, который предупреждает вас об их наличии с помощью значка в левой части панели редактора. Наведение курсора на значок даст подсказку об источнике ошибки. Например, на рис. 1 показано, что происходит, когда список неправильно закодирован. В частности, без закрывающей скобки ( ] ) список указан неправильно, проблема, которую редактор кода объясняет как ожидаемое ']' для соответствия '[' из строки 1 и видел ';'. Рис. 1. Редактор кода предоставляет информацию о синтаксических ошибках в JavaScript.

Ошибки на стороне клиента

Несмотря на синтаксически правильный JavaScript, могут быть ошибки, связанные с непротиворечивостью или логикой скрипта. В следующих примерах демонстрируются ошибки из-за использования несуществующей переменной и метода:

Ошибка — этот код не работает!

Первая ошибка информирует вас о том, что переменная bandNames не определена в той области, в которой на нее есть ссылка. В качестве решения установите переменную или укажите аргумент списка для параметра полосы. Вторая ошибка демонстрирует, что происходит при вызове несуществующей функции selfAnalyze(). Поскольку это не настоящий метод для изображений, ошибка говорит вам, что это не функция. В обоих случаях ошибка описывает проблему.

Кастинг

Ошибка ". is not a function" может возникнуть из-за того, что Earth Engine не знает тип переменной. Общие проявления этой проблемы возникают из-за:

  • Что-то делать с объектом, возвращенным функцией first() (тип элементов в коллекции неизвестен).
  • Выполнение каких-либо действий с объектом, возвращенным функцией get() (тип элемента, хранящегося в свойстве, неизвестен).
  • Выполнение каких-либо действий с аргументом функции (в самой функции), когда тип аргумента неизвестен.

Пример первого:

Ошибка — этот код не работает!

Решение во всех случаях состоит в том, чтобы привести объект неизвестного типа к конструктору известного типа. Продолжая предыдущий пример, решение заключается в приведении к ee.Image :

Решение — используйте приведение!

Редактор кода (JavaScript)

(Стоит отметить, что здесь вы можете безопасно вызывать любой метод Element, потому что Earth Engine считает, что это именно так).

Избегайте одновременного использования клиентских и серверных функций

Следующий пример менее очевиден:

Ошибка — этот код не делает того, что вы хотите

Предположим, что автор этого кода намеревался добавить 2 к каждому пикселю изображения, это неправильный способ сделать это. В частности, этот код ошибочно смешивает объект на стороне сервера ( изображение ) с оператором JavaScript на стороне клиента ( + ). Результаты могут быть неожиданными. В первом случае, печатая бессмыслицу, JavaScript выполнит запрошенную операцию ( + ), преобразуя изображение и 2 в строки, а затем объединив их. Результирующая строка является непреднамеренной. Во втором случае, добавляя ерунду на карту, выводится загадочное g.eeObject.name is not a function error, потому что добавляемый на карту объект, ерунда, является строкой, а не объектом EE. Чтобы избежать возможных непредвиденных результатов и неинформативных ошибок, не смешивайте серверные объекты и функции с объектами, примитивами или функциями JavaScript. Решением этого примера является использование серверной функции:

Решение — используйте функцию сервера!

Редактор кода (JavaScript)

Для получения более подробной информации о клиенте и сервере в Earth Engine см. эту страницу и/или это руководство.

Блокировка браузера

Ой, щёлкни! Если вы столкнулись с ошибкой, которая привела к блокировке браузера Chrome, вы можете увидеть окно, подобное рис. 2.

Рисунок 2. Блокировка браузера.

Это часто происходит из-за слишком долгого выполнения JavaScript в клиенте или ожидания чего-то от Earth Engine. Двумя распространенными источниками этой ошибки являются циклы for и/или getInfo() в вашем коде, с наихудшим сценарием getInfo() внутри цикла for. Циклы for могут привести к блокировке браузера, потому что код выполняется на вашем компьютере. С другой стороны, getInfo() синхронно запрашивает результат вычисления у Earth Engine, блокируя его до тех пор, пока результат не будет получен. Если вычисление занимает много времени, блокировка может привести к блокировке вашего браузера. Избегайте циклов for и getInfo() . Подробнее см. на этой странице.

Ошибки на стороне сервера

Несмотря на логическую последовательность в клиентском JavaScript, могут быть ошибки, которые проявляются только во время выполнения на сервере.В следующем примере показано, что происходит при попытке получить несуществующий диапазон:

Ошибка — этот код не работает!

В этом примере ошибка информирует вас об отсутствии группы с именем nonBand . Возможно, очевидным решением является указание имени группы, которое действительно существует. Вы можете узнать названия групп, распечатав изображение и просмотрев его в консоли, или распечатав список названий групп, возвращаемый функцией image.bandNames() .

Неизменяемость

Объекты на стороне сервера, которые вы создаете в Earth Engine, являются неизменяемыми. (Любой ee.Object является серверным объектом). Это означает, что если вы хотите внести изменения в объект, вы должны сохранить измененное состояние в новую переменную. Например, это не сработает для установки свойства изображения Sentinel-2:

Ошибка — этот код не делает того, что вы хотите!

В этом примере s2image.set() возвращает копию изображения с новым свойством, но изображение, хранящееся в переменной s2image, не изменяется. Вам нужно сохранить изображение, возвращаемое s2image.set(), в новой переменной. Например:

Решение — записать результат в переменную!

Редактор кода (JavaScript)

Сопоставленные функции

Еще один контекст, в котором клиентские и серверные функции не смешиваются, — сопоставленные функции. В частности, операции, указанные сопоставленной функцией, выполняются в облаке, поэтому клиентские функции, такие как print() , getInfo() или любой метод Map , Chart или Export не будут работать в сопоставленных функциях. Например:

Ошибка — этот код не работает!

Эта несколько загадочная ошибка возникает из-за процесса, который Earth Engine использует для преобразования этого кода в набор инструкций, которые можно выполнять на серверах Google. В частности, это означает, что Earth Engine не может найти серверную функцию с именем print() , потому что ее нет. В более общем случае клиентские функции и управляющие структуры нельзя использовать для работы с изображением аргумента, переданным сопоставленной функции. Чтобы избежать этой ошибки, избегайте использования клиентских функций в сопоставленных функциях. См. эту страницу, чтобы узнать больше о различиях между функциями клиента и сервера.

Сопоставленные функции имеют дополнительные требования, все из которых должны быть выполнены во избежание ошибок. Например, отображаемые функции должны что-то возвращать. Хотя редактор кода обнаруживает эту проблему и выдает ошибку, она характерна для сопоставленных функций, которые выполняются на сервере:

Ошибка — этот код не работает!

Возможно, очевидное решение — что-то вернуть. Но он не может вернуть любой тип вещей. В частности, функции, сопоставленные с ImageCollection или FeatureCollection, должны возвращать Image или Feature . Например, вы не можете вернуть дату из функции, сопоставленной с ImageCollection:

Ошибка — этот код не работает!

Чтобы избежать этого, возвращайте входное изображение с новым набором свойств. Затем, если вам нужен список дат изображений в коллекции, вы можете использоватьaggregate_array() :

Решение — задайте свойство!

Редактор кода (JavaScript)

Ошибки масштабирования

Хотя сценарий может быть действительным JavaScript без логических ошибок и представлять собой допустимый набор инструкций для сервера, при распараллеливании и выполнении вычислений результирующие объекты могут быть слишком большими, слишком многочисленными или выполняться слишком долго. . В этом случае вы получите ошибку, указывающую на невозможность масштабирования алгоритма. Эти ошибки, как правило, труднее всего диагностировать и устранять. Примеры ошибок этого типа включают:

  • Время ожидания вычислений истекло.
  • Слишком много одновременных агрегаций.
  • Превышен лимит пользовательской памяти
  • Произошла внутренняя ошибка

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

уменьшить область()

Несмотря на то, что метод reduceRegion() жадно потребляет достаточное количество пикселей, чтобы вызвать множество захватывающих ошибок, существуют также параметры, предназначенные для управления вычислениями, чтобы вы могли избежать ошибок. Например, рассмотрим следующее нежелательное сокращение:

Ошибка — этот код не работает!

Этот глупый пример просто для демонстрации. Цель этой ошибки — спросить вас, действительно хотите ли вы уменьшить 80300348117 (это 80 миллиардов) пикселей. Если нет, соответственно увеличьте масштаб (размер пикселя в метрах) или установите для параметра bestEffort значение true, чтобы автоматически пересчитать больший масштаб. Подробнее об этих параметрах читайте на странице reduceRegion().

Время ожидания вычислений истекло

Предположим, вам нужны все эти пиксели для вычислений. Если это так, вы можете увеличить параметр maxPixels, чтобы обеспечить успешное вычисление. Однако для завершения вычислений Earth Engine потребуется некоторое время.В результате может возникнуть ошибка «время ожидания вычислений истекло»:

Плохо — не делайте этого!

Эта ошибка означает, что Earth Engine подождал около пяти минут, прежде чем остановить вычисления. Экспорт позволяет Earth Engine выполнять вычисления в среде с более длительным допустимым временем работы (но не больше памяти). Поскольку возвращаемое значение из функции reduceRegion() представляет собой словарь, вы можете использовать словарь для установки свойств объекта с нулевой геометрией:

Хорошо — используйте экспорт!

Редактор кода (JavaScript)

Слишком много одновременных агрегаций

Агрегатная часть этой ошибки относится к операциям, распределенным по нескольким компьютерам (например, к сокращениям, которые охватывают более одной плитки). Earth Engine имеет ограничения, чтобы предотвратить одновременный запуск слишком большого количества таких агрегаций. В этом примере ошибка «Слишком много одновременных агрегаций» вызвана сокращением на карте:

Плохо — не делайте этого!

Предполагая, что целью этого кода является получение статистики по каждому изображению, одним из возможных решений является экспорт результата. Например, используя тот факт, что ImageCollection также является FeatureCollection , метаданные, связанные с изображениями, можно экспортировать в виде таблицы:

Хорошо — используйте экспорт!

Редактор кода (JavaScript)

Превышен лимит пользовательской памяти

Одним из способов распараллеливания алгоритмов в Earth Engine является разделение входных данных на плитки, выполнение одних и тех же вычислений отдельно на каждой плитке, а затем объединение результатов. Как следствие, все входные данные, необходимые для вычисления выходного тайла, должны помещаться в памяти. Например, когда вход представляет собой изображение со многими каналами, это может в конечном итоге занять много памяти, если в вычислениях используются все каналы. Чтобы продемонстрировать, этот пример использует слишком много памяти, заставляя (ненужно) всю коллекцию изображений помещаться в плитку:

Плохо — не делайте этого!

Этот очень плохой код демонстрирует одну из причин не использовать массивы, если в этом нет особой необходимости (см. также раздел "Избегайте ненужного преобразования типов"). Когда эта коллекция преобразуется в гигантский массив, весь массив должен загружаться в память сразу. Поскольку это длинный ряд изображений, массив большой и не помещается в памяти.

Одним из возможных решений является установка для параметра tileScale более высокого значения. Более высокие значения tileScale приводят к уменьшению размера плитки в tileScale^2 раз. Например, следующее позволяет успешно выполнить вычисление:

Редактор кода (JavaScript)

Однако гораздо предпочтительнее не использовать массивы без необходимости, поэтому вам вообще не нужно возиться с tileScale:

Хорошо — избегайте массивов!

Редактор кода (JavaScript)

За исключением случаев, когда необходимо устранить ошибку памяти, не следует устанавливать tileScale, так как меньшие фрагменты также приводят к увеличению затрат на распараллеливание.

Внутренние ошибки

Вы можете столкнуться с ошибкой следующего вида:

Если вы получили эту ошибку, нажмите ссылку "Сообщить об ошибке", которая появится в консоли. Вы также можете отправить отзыв с помощью кнопки «Справка». Эта ошибка может быть вызвана логическими ошибками в вашем скрипте, которые становятся очевидными только во время выполнения, или проблемой внутренней работы Earth Engine. В любом случае ошибка неинформативна, и о ней следует сообщить, чтобы ее можно было исправить.

Внутренние ошибки включают идентификатор запроса, например:

Эти строки действуют как уникальные идентификаторы, помогающие команде Earth Engine выявлять конкретные проблемы. Пожалуйста, включите эту строку в отчеты об ошибках.

Методы отладки

Вы закодировали свой анализ, нажали "Выполнить" и получили сообщение об ошибке. Что теперь? В этом разделе описываются общие методы отладки, позволяющие изолировать проблему и устранить ее.

print() и Map.addLayer()

Предположим, у вас есть очень сложный анализ, который выдает ошибку. Если неясно, откуда возникла ошибка, хорошей начальной стратегией будет распечатать или визуализировать промежуточные объекты и проверить их, чтобы убедиться, что структура объекта соответствует логике вашего скрипта. В частности, вы можете проверять значения пикселей слоев, добавленных на карту, на вкладке «Инспектор» редактора кода. Если вы что-то печатаете, обязательно расширьте его свойства с помощью zippies (▶). Некоторые вещи, которые нужно проверить, включают:

  • Названия групп. Соответствуют ли названия групп изображений вашему коду?
  • Значения пикселей. Ваши данные имеют правильный диапазон? Правильно ли он замаскирован?
  • Нулевой. Есть ли что-то пустое, чего не должно быть?
  • Размеры. Является ли размер нулевым, когда он не должен быть?

в сторону()

Может быть обременительно помещать каждый промежуточный этап анализа в переменную, чтобы ее можно было распечатать и проверить. Чтобы вывести промежуточные значения из длинной цепочки вызовов функций, вы можете использовать метод aside(). Например:

Редактор кода (JavaScript)

Помните, что aside(print) по-прежнему вызывает print() , и он по-прежнему будет давать сбой в сопоставленных функциях.Вы также можете использовать aside с пользовательскими функциями. Например:

Редактор кода (JavaScript)

Запуск функции в методе first()

Печать и визуализация полезны для отладки, если они доступны, но вы отлаживаете функцию, сопоставленную с коллекцией, и вы не можете использовать print() в функции, как описано в этом разделе. В этом случае полезно изолировать проблемные элементы в коллекции и протестировать сопоставленную функцию на отдельном элементе. Когда вы тестируете функцию без ее отображения, вы можете использовать операторы печати, чтобы понять проблему. Рассмотрим следующий пример:

Ошибка — этот код не работает!

Для отладки рекомендуется изучить ошибку. К счастью, эта полезная ошибка информирует вас о проблеме с функцией с ID=2 . Для дальнейшего исследования полезно немного реорганизовать код. В частности, вы не можете иметь операторы печати в функции, когда она отображается на коллекцию, как описано в этом разделе. Цель отладки — изолировать проблемную функцию и запустить функцию с некоторыми операторами печати. Используя то же изображение и функции, что и выше:

Редактор кода (JavaScript)

Теперь, поскольку функция выполняется только для одной функции, вы можете поместить вызов печати внутрь. Изучите распечатанный объект, чтобы обнаружить (ага!), что объект, возвращаемый методом reduceRegion(), имеет нули для каждой полосы. Это объясняет, почему деление не работает: вы не можете разделить ноль на ноль. Почему он нулевой в первую очередь? Чтобы исследовать, добавьте входное изображение и плохой объект на карту и сосредоточьтесь на плохом объекте. При этом вы обнаружите, что проблема связана с тем, что точка находится за пределами изображения. На основании этого открытия отлаженный код выглядит следующим образом:

Редактор кода (JavaScript)

Профилировщик

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

Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.

Типы цифровых файлов описывают типы и характеристики файлов, полученных в результате оцифровки исходных материалов записей в NARA, а также стандартные или наиболее распространенные форматы данных, которые использует Отделение служб оцифровки для хранения оцифрованных записей.

Файл неподвижного изображения

Тип цифрового объекта, который создается путем оцифровки оригиналов неподвижных изображений (текстовых документов и фотографий). Неподвижное изображение — это данные, в которых сетка или растр элементов изображения (пикселей) нанесены на карту для представления визуального объекта, например страницы книги или фотографии. Термин растровые данные часто противопоставляется векторным данным, в которых геометрические точки, линии, кривые и формы основаны на математических уравнениях, что создает изображение без специального преобразования данных в пиксели. [Из глоссария FADGI] Битовая глубина, пространственное разрешение и цветовое кодирование, например, являются важными характеристиками неподвижных изображений. Растровые изображения можно хранить в различных форматах данных, таких как TIFF (.tif).

JPEG: Объединенная группа экспертов по фотографии

JPG/JFIF (Joint Photographic Experts Group/JPEG File Interchange Format) — это популярный формат файлов для хранения данных растровых изображений. JFIF — формат файла; JPG — это метод сжатия JPG/JFIF указан в формате обмена файлами JPEG и JPEG (ISO 10918). Сайт Sustainability of Digital Formats в Библиотеке Конгресса содержит дополнительную информацию о формате файлов JFIF, а также о сжатии JPG.

В настоящее время Лаборатория сохранения фотоизображений, микрофильмов и текстов использует формат JPEG/JFIF (а также TIFF) для большинства распространяемых файлов. Файлы JPEG хорошо подходят для онлайн-доступа и использования и сжимаются для более быстрой онлайн-передачи. Файлы JPEG создаются для использования в онлайн-каталоге NARA, а также в других внутренних базах данных и для многих справочных запросов.

Файлы NARA в формате JPEG/JFIF идентифицируются как PUID fmt/44 в базе данных PRONOM.

Несмотря на то, что JPEG/JFIF является официальным полным названием формата файла (формат обмена файлами Объединенной группы экспертов по фотографии/JPEG), трехсимвольное расширение имени файла — JPG. Мы использовали здесь трехсимвольное имя файла в соответствии с тем, как формат файла чаще всего выражается в виде расширения имени файла.

TIFF: формат файла изображения с тегами

TIFF (формат файла изображения с тегами) — это популярный формат для хранения данных растрового изображения, указанный в версии 6.0 TIFF от Adobe Systems. Дополнительную информацию о формате файлов TIFF можно найти на сайте Sustainability of Digital Formats в Библиотеке Конгресса.

В настоящее время Лаборатория сохранения фотоизображений, микрофильмов и текстов использует формат файлов TIFF как для основных файлов сохранения, так и для большинства основных файлов репродукций. Формат файлов TIFF — это стабильный, хорошо задокументированный, широко распространенный несжатый формат файлов, который широко используется для мастер-файлов в сообществе цифровых изображений.

Файлы TIFF NARA идентифицируются как PUID fmt/353 в базе данных PRONOM.

Несмотря на то, что TIFF является официальным полным названием формата файла (формат файла изображения с тегами), трехсимвольное расширение имени файла — TIF. Мы использовали здесь трехсимвольное имя файла в соответствии с тем, как формат файла чаще всего выражается в виде расширения имени файла.

PDF: переносимый формат документа

PDF (Portable Document Format) — это популярный формат для хранения многих типов данных, включая растровые изображения. Существует несколько подтипов PDF, включая PDF-A. Дополнительную информацию о формате PDF можно найти на сайте Sustainability of Digital Formats в Библиотеке Конгресса.

Файлы PDF NARA версии 1.4 и идентифицируются как PUID fmt/18 в базе данных PRONOM.

В настоящее время Лаборатория сохранения фотографий, микрофильмов и текстов использует формат PDF только для целей распространения.

Аудиофайл

Аудиозапись, созданная из оригинальных аналоговых или цифровых аудиоформатов, закодированных с использованием линейной импульсно-кодовой модуляции (ИКМ). Для аудиофайлов важно различать формат файла и кодек. Кодек выполняет кодирование и декодирование необработанных аудиоданных, в то время как сами данные хранятся в определенном формате аудиофайла, таком как Broadcast WAV (.wav). Например, частота дискретизации, битовая глубина, монофонический или стереозвук являются важными характеристиками аудиофайлов.

WAV: форма волны

На сайте Sustainability of Digital Formats Библиотеки Конгресса содержится информация о формате файлов WAV.

WAV-файлы NARA идентифицируются как PUID fmt/141 и fmt/142 в базе данных PRONOM.

Хотя WAVE – это официальное полное название формата файла (формат аудиофайла Waveform), трехсимвольное расширение имени файла — WAV. Мы использовали здесь трехсимвольное имя файла в соответствии с тем, как формат файла чаще всего выражается в виде расширения имени файла.

На сайте Sustainability of Digital Formats Библиотеки Конгресса содержится информация о формате файлов MP3.

Файлы MP3 NARA идентифицируются как PUID fmt/134 в базе данных PRONOM.

Видеофайл

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

MOV: QuickTime

На сайте Sustainability of Digital Formats Библиотеки Конгресса содержится информация о формате файлов QuickTime.

Файлы MOV NARA идентифицируются как PUID x-fmt/385 и x-fmt/386 в базе данных PRONOM.

AVI: чередование аудио и видео

На сайте Sustainability of Digital Formats Библиотеки Конгресса содержится информация о формате файлов AVI.

Файлы AVI NARA идентифицируются как PUID fmt/5 в базе данных PRONOM.

MXF: формат обмена материалами

Сайт Sustainability of Digital Formats в Библиотеке Конгресса содержит информацию о формате файлов MXF.

WMV: файл Windows Media

На сайте Sustainability of Digital Formats Библиотеки Конгресса содержится информация о формате файлов WMV.

Файлы WMV NARA идентифицируются как PUID fmt/133 в базе данных PRONOM.

Профиль MPEG-2 4:2:2, основной уровень

На сайте Sustainability of Digital Formats Библиотеки Конгресса содержится информация о формате MPEG-2 4:2:2 Profile, Main Level.

Этот файл MPEG-2 определяется как PUID x-fmt/385 и x-fmt/386 в базе данных PRONOM.

Основной профиль MPEG-2, основной уровень

На сайте Sustainability of Digital Formats в Библиотеке Конгресса содержится информация о формате MPEG-2 Main Profile, Main Level.

Этот файл MPEG-2 определяется как PUID x-fmt/385 и x-fmt/386 в базе данных PRONOM.

Файл кинофильма

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

DPX: обмен цифровыми движущимися изображениями

Формат файла DPX или Digital Moving-Picture Exchange указан в SMPTE 268M-1994 и представляет собой пиксельный (растровый) формат изображения, в котором каждый кадр содержимого представляет собой отдельный файл данных, связанный метаданными для воспроизведения в правильной последовательности. .

Файлы NARA DPX идентифицируются как PUID fmt/193 в базе данных PRONOM.

DCP: пакет цифрового кино

DCP или Digital Cinema Package – это набор цифровых файлов, используемых для хранения и передачи аудио, изображений и потоков данных цифрового кино.

Тип файла будет определен

Для файлов PDF требуется бесплатная программа Adobe Reader.
Дополнительная информация о файлах Adobe Acrobat PDF доступна на нашей странице специальных возможностей.

Читайте также: