Основы макроязыка EASI (PCI Geomatica)Часть 3. Географическая привязка и проекции

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/easi3.html


Третья часть серии статей о языке EASI, основные команды для географической привязки и работы проекциями, системами координат.

Поддерживаемые проекции, эллипсоиды и датумы

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

Проекции, поддерживаемые на эллипсоиде:

  • ACEA — Albers Conical Equal-Area
  • CASS — Cassini
  • EC — Equidistant Conic
  • KROV — Krovak
  • LCC — Lambert Conformal Conic
  • MER — Mercator
  • MSC — Mod. Stereographic Conformal (Alaska)
  • OM — Oblique Mercator
  • PC — Polyconic
  • PS — Polar Stereographic
  • RSO — Rectified Skew Orthomorphic
  • SOM — Space Oblique Mercator
  • SPAF — State Plane (U.S. Feet)
  • SPCS — State Plane (Metres)
  • SPIF — State Plane (International Feet)
  • TM — Transverse Mercator
  • UPS — Universal Polar Stereographic
  • UTM — Universal Transverse Mercato

Кроме того, географические координаты — LONG/LAT.

Проекции, поддерживаемые ТОЛЬКО на сфере:

  • AE — Azimuthal Equidistant
  • ER — Equirectangular
  • GNO — Gnomonic
  • GOOD — Goode's Homolosine
  • GVNP — Gen. Vertical Near-Side Perspective
  • LAEA — Lambert Azimuthal Equal-Area
  • MC — Miller Cylindrical
  • OG — Orthographic
  • ROB — Robinson
  • SG — Stereographic
  • SIN — Sinusoidal
  • VDG — Van der Grinten

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

Эллипсоиды обозначаются кодами, начинающимися с буквы «Е». Буква может быть опущена (тогда предполагается, что используется эллипсоид). Список эллипсоидов довольно большой. Вы можете сами найти код нужного Вам эллипсоида в справочной системе EASI. Приведем лишь наиболее часто используемые:

  • Е000 (или просто 0) — Сlarke 1866 (этот эллипсоид будет подразумеваться в том случае, если никакого эллипсоида и датума не указано!)
  • Е008 — GRS 1980
  • Е012 — WGS 84
  • Е015 — Krassovsky
  • Е019 — Sphere of Radius 6370997 metres

Эллипсоид может быть задан полуосями («6378206.4 6356583.8»).

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

  • D800 – геоцентрический датум для сферы (=Е019)
  • D000 – WGS 84 (=Е012)
  • D203 – Pulkovo 1942 (для России)
  • D-01 — NAD27 (USA, NADCON)
  • D-02 — NAD83 (USA, NADCON)

Пользовательские датумы могут быть добавлены в таблицу датумов, хранящуюся в текстовом формате ($PCIHOME/etc/datum.txt). Обратите внимание, что бы номер нового датума не совпадал с уже имеющимися в таблице!

Вывод информации о проекции

Информация о привязке и проекции файла хранится в специальном сегменте данных, имеющем номер 1. Вывести на экран или в файл информацию о проекции можно с помощью команды GEOREP:

GEOREP – вывод информации о привязке

  • file=" (имя файла)
  • report= (“term или имя файла для вывода)
Georeference Units:                UTM    33   D000
Projection:                        Universal Transverse Mercator
Datum - Ellipsoid:                 WGS 1984 (Global Definition) - WGS 84
Grid units:                        METRE
	
Upper Left Corner          288804.750  E               108912.750  N
Upper Right Corner         533106.750  E               108912.750  N
Image Centre               410955.750  E               -99.750  N
Lower Left  Corner         288804.750  E               -109112.250  N
Lower Right Corner         533106.750  E               -109112.250  N

Pixel Size                 57.000  E                   57.000 N

Upper Left Corner          13d06'07.60" E  Lon         0d59'05.36" N  Lat
Upper Right Corner         15d17'51.23" E  Lon         0d59'07.27" N  Lat
Image Centre               14d11'59.31" E  Lon         0d00'03.25" S  Lat
Lower Left  Corner         13d06'07.60" E  Lon         0d59'11.86" S  Lat
Lower Right Corner         15d17'51.23" E  Lon         0d59'13.77" S  Lat

Формат таблицы стандартный, что позволяет ее использовать при автоматизации процессов с помощью языка PERL (см. статью 4). Следует обратить внимание на замеченные проблемы с выводом таблицы. В ряде случаев (по неизвестной причине) координаты углов могут быть перепутаны (обычно правый и левый углы меняются местами).

Назначение параметров привязки и проекции растровой базе данных

Импорт из другого формата

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

  1. При импорте из формата GeoTIF PCI подразумевает, что координаты верхнего левого угла являются координатами границ углового пикселя, в то время как ряд программ подразумевает, что это координаты центра углового пикселя. Ошибка легко может быть замечена при импорте файла GeoTIF одновременно в ERDAS Imagine и PCI, с последующим экспортом обратно в GeoTIF. При этом файл, экспортированный из PCI, будет смещен на пол-пикселя по обеим осям относительно оригинала и файла, экспортированного из ERDAS. Возможные пути решения проблемы: смещение импортированного в PCI файла или импорт в PCI через другие форматы (например, *.img).
  2. В ряде случаев параметры проекции могут быть прочитаны неправильно. Особенно часто проблема проявляется при импорте данных из южного полушария в проекции UTM. Для устранения ошибки, проекция может быть переписана в EASI или исправлена через другие приложения PCI (Focus, ImageWorks).

Создание нового файла с указанием проекции и привязки

Создать новый файл и назначить ему параметры привязки и проекцию можно с помощью команды CIMPRO2. Использование команды рассмотрено в статье 1. Здесь мы приведем пример использования команды для создания нового файла в проекции UTM:

  • file="new(имя файла)
  • dbnc=10,0,0,0 (число каналов - 10 8-битных каналов)
  • dblayout=”file (тип хранения каналов – по разным файлам)
  • project="UTM (имя проекции)
  • zone=33 (зона проекции UTM)
  • ellips="D000 (датум WGS1984)
  • llbound="n (координаты углов: если «y» – географические, если «n» - метрические)
  • ulx="288804.750
  • uly="108912.750
  • lrx="533106.750
  • lry="-109112.250
  • bxpxsz="57.000 (размер пикселя)
  • bypxsz="57.000
  • extrainf= (дополнительная информация о проекции по умолчанию)
r cimpro2

Назначение проекции созданному файлу

Существует несколько команд задания проекции файлу PCIDSK. Мы рекомендуем по возможности всегда использовать команду SETRPO2. После ввода параметров и запуска команды, значения первого сегмента (сегмента привязки) файла PCIDSK будут изменены.

SETPRO2 – Ввод информации о привязке и проекции растрового файла
  • file=" (имя файла)
  • project=" (имя проекции)
  • zone= (зона проекции UTM)
  • ellips=" (эллипсоид или датум)
  • llbound=" (координаты углов: если y – географические, если n - метрические)
  • ulx=" (координаты углов)
  • uly="
  • lrx="
  • lry="
  • extrainf= (дополнительная информация по проекции. Команда включает множество дополнительных параметров для разных проекций. Все эти параметры могут быть объявлены «по умолчанию»)
r setpro2

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

  • SETPRO – команда аналогичная SETPO2, но с меньшими возможностями при вводе параметров проекции
  • GEOSET – Простая команда, позволяющая назначить ограниченный набор проекций (UTM, LONG/LAT, State plane). Замечена следующая ошибка: при вводе координат углов значения по оси Y обычно округляются, что приводит к неправильному назначению информации о привязке.

Создание дополнительного сегмента привязки с информацией о проекции

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

PROSET – изменение значений или создание нового сегмента привязки с указанием проекции
  • file=" (имя файла)
  • dbgeo= (номер сегмента. если номер=1, то будет изменена информация о проекции файла. Если номер не указан, будет создан новый сегмент)
  • dbsn=" (имя нового сегмента – обязательный параметр)
  • mapunits=" (Имя проекции. Если проекция зональная, так же и номер зоны. Например, “UTM 33”)
  • ellips=" (эллипсоид или датум)
  • prolat=" (стандартная параллель)
  • prolong=" (центральный меридиан)
r prosin

Команда включает множество дополнительных параметров для разных проекций. Для упрощения ввода только параметров нужной проекции, используются специальные процедуры, основанные на команде PROSET. Имя процедур для каждой проекции Вы можете найти в справочной системе EASI. Например, для определения синусоидальной проекции используется процедура PROSIN:

  • file=" (имя файла)
  • dbgeo=
  • dbsn=" (имя нового сегмента – обязательный параметр)
  • ellips="19 (для синусоидальной проекции всегда сфера!)
  • prolong="0.0 (стандартные параметры)
r prosin

Изменение проекции

Изменение проекции (перепроецирование) растровых данных в EASI решено в виде серии команд:

  1. Создание нового сегмента с информацией о требуемой проекции (PROSET)
  2. Пересчет координат растрового файла и определение размеров выходного файла в требуемой проекции (DBREPRO)
  3. Создание файла с рассчитанными параметрами (CIM, CIMPRO2)
  4. Трансформация каналов растра из одной проекции в другую (REGPRO, MOSAIC).

DBREPRO – расчет параметров перепроецирования

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

  • file=" (имя файла)
  • project= (оставляем пустым – этот параметр будет замещен информацией из нового сегмента)
  • ellips= (оставляем пустым – этот параметр будет замещен информацией из нового сегмента)
  • outgeo= (номер нового сегмента с параметрами проекции)
  • report=" (вывод параметров трансформации на экран или в файл)
r dbrepro

Дополнительно можно указать размер пикселя выходной базы данных (параметры bxpxsz и bypxsz).

После запуска команды DBREPRO в параметрах EASI сохраняются границы и параметры проекции, в которую Вы хотите перепроецировать Ваши данные. Вы можете воспользоваться командой CIMPRO2 для создания новой базы данных, в которую будет произведена трансформация. Рассчитанные с помощью DBREPRO параметры нового файла будут автоматически использованы командой CIMPRO2. Обратите внимание, чтобы число каналов создаваемого файла соответствовало числу каналов, которые Вы хотите перепроецировать! Другой возможный вариант – вывод параметров в файл (опция report) и обработка файла программой на языке PERL. Этот путь может быть необходим, если Вы, допустим, хотите, что бы новый файл был «привязан» к стандартной растровой сетке.

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

REGPRO – трансформация растрового изображения

  • fili=" (имя исходного файла)
  • dbic= (список каналов для трансформации)
  • ingeo= (номер сегмента привязки исходного файла – по умолчанию 1)
  • filo=" (имя выходного файла)
  • dboc= (список каналов выходного файла)
  • outgeo= (номер сегмента привязки выходного файла – по умолчанию 1)
  • resample=" (тип пересчета near/bilin/cubic)
r regpro

Дополнительные параметры программы смотрите в справочной системе EASI.

Вместо команды REGPRO для трансформации изображения может использоваться команды MOSAIC. Эта команда всегда будет использовать первые сегменты файлов для расчета параметров трансформации, и пересчет всегда будет производиться методом ближайшего соседа (см. статью 1).

Пример использования команд для перепроецирования снимка

Исходный снимок Landsat имеет проекцию UTM. Мы перепроецируем снимок в проекцию Albers Conical Equal Area с параметрами, настроенными для Европейской России.

  1. Создаем новый сегмент привязки с параметрами требуемой проекции:
    • file="img.pix (имя исходного снимка)
    • dbgeo= dbsn="albers (имя проекции)
    • ellips="D203 (датум – Пулково 1942)
    • prolong="45 (центральный меридиан)
    • prolat="0 (широта начала отсчета координат)
    • stpar1="52 (1 стандартная параллель)
    • stpar2="64 (2 стандартная параллель)
    • efalse="8500000 (смещение начала координат на запад)
    • nfalse=
      r proacea
  2. Вычисляем параметры трансформации:
    • file="img
    • project=
    • ellips=
    • outgeo=2 (новый сегмент с информацией о проекции)
    • report="
    • bxpxsz="28.5 (требуемые размеры пикселя)
    • bypxsz="28.5
      r dbrepro
  3. Создаем новый файл командой CIMPRO2. Все необходимые параметры команды будут прописаны автоматически:
    • file="img_alb (имя нового файла)
    • dbnc=3,0,0,0 (число каналов нового файла)
    • dblayout="file (способ хранения каналов)
      r cimpro2
  4. Выполняем трансформацию:
    • fili="img (имя исходного файла)
    • dbic=1,2,3 (список каналов для трансформации)
    • ingeo= filo="img_alb (имя выходного файла)
    • dboc=1,2,3 (список каналов выходного файла)
    • outgeo=
    • resample="near (тип пересчета)
      r regpro

Калькулятор координат

PROCONV — простая команда EASI, позволяющая пересчитать координаты из одной проекции (или из географических координат) в другую проекцию (или географические координаты).

Ввод координат для пересчета обычно осуществляется из тестового файла. Пары координат в текстовом файле разделяются запятыми:

288804.750,108912.750

Если вводятся географические координаты, то они могут иметь вид десятичных градусов или градусы-минуты-секунды:

-20.4560,35.4568 (десятичные градусы)
13 06 07.60 E ,0 59 05.36 N (градусы-минуты-секунды)

Исходная и выходная проекции могут быть заданы по имеющимся сегментам привязки или как параметр команды (только для LONG/LAT, UTM и State Plane). Пример использования программы с заданием проекции из сегментов привязки:

  • file=" (имя файла, содержащего сегменты привязки)
  • dbgeo=1,2 (номера сегментов, описывающих входную и выходную проекции)
  • tfile=" (имя текстового файла с парами координат)
  • ltyp="brief (вывод в короткой форме)
  • dmsform="off (если выходные координаты географические, то они будут представлены в десятичных градусах)
  • report=" (имя файла для сохранения результата)
r proconv

Пример использования команды для пересчета координат с заданием проекции через параметры файла: file= (пустой)

  • dbgeo= (пустой)
  • iunits=lon e012 (исходные координаты – географические)
  • ounits="utm zone e012 (выходные координаты – UTM)
  • tfile=" (имя текстового файла с парами координат)
  • ltyp="brief (вывод в короткой форме)
  • dmsform="off (если выходные координаты географические, то они будут представлены в десятичных градусах)
  • report=" (имя файла для сохранения результата)
r proconv

Краткий перечень команд привязки изображений по набору контрольных точек (GCP)

Расстановка контрольных точек (GCP) для привязки изображения может проводиться как в PCI, так и в других программа. Контрольные точки хранятся в специальном сегменте в файле PCIDSK. Существует возможность загрузки-выгрузки таблицы контрольных точек в текстовый файл. В PCI существуют модули автоматической расстановки контрольных точек (основанные на расчете корреляции между изображениями). Правда, они продаются отдельно от основного пакета программы. Помимо алгоритма с использованием целого исходного снимка для привязки, реализован подход для создания набора модельных участков (image chips) для автоматической привязки. Ниже приведен краткий перечень команд для работы с наборами контрольных точек и автоматической привязки. Трансформация снимка на основе набора контрольных точек производится командой REGPRO (см. выше) или REG. Описание команд смотрите в справочной системе EASI.

Работа с сегментом контрольных точек (GCP):

  • GCPREAD – Прочитать набор контрольных точек из текстового файла
  • GCPWRIT – Записать набор контрольных точек в текстовый файл
  • GCPREP – Вывод описания сегмента контрольных точек
  • GCPPRO – Проецирование сегмента контрольных точек в другую проекцию
  • GCPREFN – Автоматическое удаление контрольных точек с большой ошибкой

Автоматическая расстановка контрольных точек и привязка снимка:

  • AUTOGCP – Создание набора контрольных точек путем корреляционного анализа
  • AUTOREG – Автоматическая ко-регистрация изображений
  • CHIPEXT – Создание набора модельных участков на основе привязанного снимка
  • CHIPMAT – Автоматический поиск контрольных точек на основе библиотеки модельных участков

Ссылки по теме