Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MI6UGRU

.pdf
Скачиваний:
16
Добавлен:
13.02.2015
Размер:
14.71 Mб
Скачать

Приложение D: Создание выражений

Это выражение состоит из двух предложений. Первое указывает, что запись должна относиться к августу или сентябрю, а второе – что она должна относиться к 1990 году. Так как эти предложения связаны оператором “and”, то запись должна удовлетворять обоим условиям, чтобы попасть в выборку.

ObjectLen

Синтаксис: ObjectLen(obj, единица_измерения)

Результат: Возвращает длину линий и ломаных и 0 для остальных объектов.

Когда Вы выбираете ObjectLen в списке функций, в окне выражения появляются скобки с ключевым словом “obj” и текущими единицами длины в двойных кавычках. При составлении выражений обычно предлагается использовать мили (mi). Если Вы хотите вычислить расстояние в других единицах, укажите эти единицы в кавычках.

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

Название

Единицы измерения

”mi”

ìèëè

 

 

"km"

километры

 

 

"in"

дюймы

 

 

"ft"

ôóòû

 

 

"survey ft"

топографические футы

 

 

”yd”

ÿðäû

 

 

"mm"

миллиметры

 

 

"cm"

сантиметры

 

 

"m"

метры

 

 

"nmi"

морские мили (1

 

морская миля равна

 

1852 метрам)

 

 

Примеры: Вычисление длины объекта:

94.ObjectLen(obj, "mi")

Вычисление длины объекта в километрах:

95.ObjectLen(obj,"km")

Вычисление длины объекта в морских милях:

96.ObjectLen(obj, "nmi")

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

Выбрать все объекты, длина которых превышает 10 километров:

667

Приложение D: Создание выражений

97.ObjectLen(obj, "km")>10

Perimeter

Синтаксис: Perimeter(объект, единица_измерения)

Результат: Возвращает периметр таких объектов, как многоугольник, эллипс, прямоугольник и скругленный прямоугольник.

Когда Вы выбираете Perimeter в списке функций, в окне выражения появляются скобки с ключевым словом “obj” и текущими единицами длины в двойных кавычках. При составлении выражений обычно предлагается использовать мили (mi). Если Вы хотите вычислить расстояние в других единицах, укажите эти единицы в кавычках.

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

Название

Единицы измерения

 

 

”mi”

ìèëè

 

 

”km”

километры

 

 

”in”

дюймы

 

 

”ft”

ôóòû

 

 

“li”

линки

 

 

“rd”

родсы

 

 

“ch”

чейны

 

 

”survey ft”

топографические футы

 

 

”yd”

ÿðäû

 

 

”mm”

милиметры

 

 

”cm”

сантиметры

 

 

”m”

метры

 

 

”nmi”

морские мили (1 морская миля

 

соответствует 1852 метрам)

 

 

Примеры: Вычисление периметра объекта:

98.Perimeter(obj, "mi")

Вычисление периметра объекта в километрах:

99.Perimeter(obj, "km")

Вычисление периметра в метрах:

100.Perimeter(obj, "m")

Выбрать все объекты, периметр которых превышает 35 миль:

101.Perimeter(obj, "mi")>35

668

Приложение D: Создание выражений

Proper$

Синтаксис: Proper$(строка)

Результат: Возвращает строку, в которой первые буквы слов преобразованы в заглавные, а остальные – в строчные.

Примеры: Рассмотрим следующее выражение:102. Proper$(City)

В таблице показано, как преобразуются исходные строки:

Исходная строка

Результат

 

 

NEW YORK

New York

 

 

New yorK

New York

 

 

new york

New York

 

 

New York

New York

 

 

Right$( )

Синтаксис: Right$ (строка, числовое_выражение)

Результат: Возвращает строку, состоящую из заданного количества символов, находящихся с правого конца строки.

Примеры: Рассмотрим выражение:

103.Right$(City,4)

Будут возвращены последние четыре символа.

Round

Синтаксис: Round(число1, число2)

Результат: Возвращает округленное число1, à число2 задает точность округления.

Примеры: Рассмотрим выражение:

104.Round(number1,number2)

Âпервой колонке таблицы указаны аргументы функции (number1 è number2), а во второй – результат округления.

Аргументы

Округленное значение

 

 

14347,10000

10000

 

 

14347, 100

14300

 

 

14347, 10

14350

 

 

12.18353, .1

12.20000

 

 

12.18353, .001

12.18400

 

 

Для того, чтобы выбрать все строки таблицы, для которых средний возраст равен 42,

можно использовать выражение:

669

Приложение D: Создание выражений

105.Round(СРЕД_ВОЗРАСТ, 1) = 42

Âзависимости от типа данных это выражение может дать лучшие результаты, чем прямое сравнение со значением (СРЕД_ВОЗРАСТ=42). Ведь колонка среднего возраста в таблице штатов в MapInfo содержит средний возраст с точностью до одной десятой. При обычном сравнении со значением 42 MapInfo не выберет записи со значениями, скажем, 41.7, 42.1 или 42.4. Но, скорее всего, Вам нужно получить эти записи, и Вы сможете это сделать с помощью округления.

RTrim$

Синтаксис: RTrim$(строка)

Результат: RTrim$ удаляет все пустые символы (пробелы, табуляции и так далее) в конце строки.

Sin

Синтаксис: Sin(числовое_выражение)

Результат: Функция Sin возвращает синус для значения выражения, задающего угол

в радианах.

Str$

Синтаксис: Str$(числовое_выражение)

Результат: Str$ преобразует числовое выражение в строку символов. Если значение выражения отрицательно, первым символом строки является минус (-). Иначе строка начинается с пробела.

UCase$

Синтаксис: UCase$(строка)

Результат: Возвращает строку, все маленькие буквы в которой заменены большими.

Примеры: Рассмотрим следующее выражение:

106.UCase$(City)

Таблица показывает, как преобразуются исходные строки:

Исходная строка

Результат

 

 

NEW YORK

NEW YORK

 

 

New yorK

NEW YORK

 

 

new york

NEW YORK

 

 

Val

Синтаксис: Val(строковое_выражение)

Результат: Функция Val преобразует строковое выражение в число. Она игнорирует все табуляции и пробелы в начале строки и пытается найти для первой последовательности символов числовой аналог. Обработка заканчивается, когда встречается нецифровой символ. Если первый символ после отступов и пробелов в начале строки был нецифровой, Val возвращает ноль.

670

Приложение D: Создание выражений

Примеры: Таблица показывает, как Val выделяет числа из строк:

строковое выражение

Val(char_expr)

char_expr

 

 

 

12 thousand

12

 

 

52 – 62 Brunswick

52

 

 

Eighteen

0

 

 

Box 239

0

 

 

Weekday

Синтаксис: Weekday(äàòà)

Результат: Возвращает день недели по заданной дате в виде числа от 1 до 7. 1 обозначает воскресенье, а 7 – субботу.

Примеры: Выбрать все строки таблицы, относящиеся к средам:

107.Weekday(date)=4

Выбрать все строки таблицы, относящиеся к средам, четвергам и пятницам:

108.Weekday(date)=any(4,5,6)

Ключевое слово “any” задает выбор строк, в которых дата равна одному из перечисленных дней недели.

Выбрать все записи о пятницах в июле месяце:

109.Weekday(date)=6 and Month(date)=7

Это выражение состоит из двух предложений. Первое использует функцию Weekday и указывает, что запись должна относиться к пятнице. Второе предложение использует функцию Month и указывает, что запись должна относиться к июлю. Так как эти предложения связаны оператором “and”, то запись должна удовлетворять обоим выражениям, чтобы попасть в выборку.

Year

Синтаксис: Year(äàòà)

Результат: Вычисляет год по заданной дате.

Примеры: Найти все записи, относящиеся к 1990 году:

110.Year(date)=1990

Все записи, относящиеся к 1990 или 1991 годам:

111.Year(date)=any(1990,1991)

Все записи, относящиеся к годам с 1985 по 1990 включительно:

112.Year(date)>=1985 and Year(date)<=1990

Это выражение состоит из двух предложений. Первое указывает, что запись должна относиться к 1985 или более позднему году, а второе – что она должна относиться к

671

Приложение D: Создание выражений

1990 или более раннему году. Так как эти предложения связаны оператором “and”, то

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

672

Приложение E: Регистрация изображений

формата SPOT

Изображения в формате SPOT - это растровые изображения Земли, снятые спутником. Корпорация SPOT Image Corporation поставляет эти изображения под именем SPOTView, и их можно использовать в MapInfo. Изображения в формате SPOT особенно полезны в том случае, когда нужно точно подстроить векторную карту, сравнивая его с растровой подложкой.

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

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

Описанный ниже процесс не гарантирует 100%-ного результата. Ошибки в файле заголовков или проблемы с векторными данными могут привести к тому, что Вам придется перерегистрировать контрольные точки в диалоге "Регистрация растрового изображения".

Частью регистрации SPOT-изображения является выбор правильной координатной системы. Для большинства SPOT-изображений США используются "Universal Transverse Mercator" или "State Plane". Но для SPOT-изображения большинства стран могут использоваться другие координатные системы или может потребоваться создать новую. Это приложение поможет Вам определить, какие режимы следует установить для Вашего SPOT-изображения, а также поможет создать собственную, если нужно.

SPOT файлы

Изображение в формате SPOT описывается несколькими файлами, и не все из них нужны MapInfo. Вот какие файлы нужны MapInfo:

Ôàéë.HDR – заголовочный файл в формате ASCII, содержащий информацию о размере изображения, координатной системе и районе съемки.

Ôàéë.BIL – двоичный файл, содержащий растровое изображение.

Ôàéë.CLR – файл палитры, содержащий список предлагаемых цветов для раскраски изображения. Этот файл поставляется для цветных изображений, и MapInfo прочитывает этот файл, если он есть.

Âпоследних версиях (начиная с SPOTView версии 4.0) добавляется файл с расширением .REP в формате ASCII. Хотя MapInfo его не анализирует, Вы можете

Приложение E: Регистрация изображений формата SPOT

найти в нем много полезной информации, связанной с регистрацией изображения, в

частности, данные о повороте и координатной системе.

Информация о координатной системе и контрольных точках

Как и в случае с другими растровыми изображениями, регистрация SPOT-изображения требует определения координатной системы и создания по меньшей мере трех контрольных точек в диалоге “Регистрация изображения”. Перед тем, как проделать это, нужно выяснить соответствующую информацию из .HDR/REP файлов.

Открыв сопровождающий SPOT-изображение .HDR-файл в текстовом редакторе, Вы увидите приблизительно следующий текст.

SPOTView™ Настройки

!GIS FORMAT HEADER FILE

!IDENTIFICATION BLOCK

PRODUCT_NAME

SPOTView Custom Frame Special Change Detection

FORMAT_VERSION

1.5

MAP_FRAME

22’ X 30’

SCENE_ID

2_595272_910701_165923_2X

!

2_595272_930410_171958_2P

!

2_595272_930729_170345_2X

IMAGE_DATE

01 JUL 91

!

10 APR 93

!

29 JUL 93

CORRECTION_LEVEL

TER

! IMAGE INFORMATION

BLOCK

NCOLS

4276

NROWS

4251

ULXMAP

522147

ULYMAP

4086917

MAPUNITS

Meters

XDIM

10.00

YDIM

10.00

NBANDS

3

NBITS

8

LAYOUT

BIL

BYTEORDER

I

SKIPBYTES

0

BANDROWBYTES

4276

TOTALROWBYTES

12828

674

 

Приложение E: Регистрация изображений формата SPOT

BAND_RGB

321

 

! MAP INFORMATION BLOCK

MAP_NAME

St Louis, MO Change Detection

UL_LON/LAT

 

 

LR_LON/LAT

 

 

PROJECTION

Albers Equal Area

ORIGIN_LON

W 96,30,00

ORIGIN_LAT

N 00,00,00

STD_PARALLEL_1

N 36,36,00

STD_PARALLEL_2

N 43,00,00

DATUM

NAD27

Настройки Geospot

Файлы .HDR и .REP содержат настройки, приведенные ниже.

Файл .HDR содержит следующее:

!GIS FORMAT HEADER FILE

!COORDINATE BLOCK

PRODUCT_NAME

SPOTView Custom Frame Special Change Detection

FORMAT_VERSION

1.5

MAP_FRAME

22’ X 30’

SCENE_ID

2_595272_910701_165923_2X

!

2_595272_930410_171958_2P

!

2_595272_930729_170345_2X

IMAGE_DATE

01 JUL 91

!

10 APR 93

!

29 JUL 93

CORRECTION_LEVEL

TER

! IMAGE INFORMATION

BLOCK

NCOLS

4276

NROWS

4251

ULXMAP

522147

ULYMAP

4086917

MAPUNITS

Meters

XDIM

10.00

YDIM

10.00

NBANDS

3

NBITS

8

LAYOUT

BIL

BYTEORDER

I

675

Приложение E: Регистрация изображений формата SPOT

SKIPBYTES

0

BANDROWBYTES

4276

TOTALROWBYTES

12828

BAND_RGB

321

! CARTOGRAPHIC PARAMETER BLOCK (REP file)

Этого нет в файле .REP:

MAP_NAME

St Louis, MO Change Detection

UL_LON/LAT

 

LR_LON/LAT

 

PROJ_ID

Albers Equal Area

PROJ_MERIDIAN

W 96,30,00

PROJ_PARALLEL

N 00,00,00

STD_PROJ_PARALLEL_1

N 36,36,00

STD_PROJ_PARALLEL_2

N 43,00,00

DATUM

NAD27

Информация о координатных системах (только для SPOTViewt)

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

Вполне вероятно, что Вы пожелаете открыть SPOT-изображение, использующее не поддерживаемую MapInfo координатную систему. В этом случае Вы должны вручную создать описание этой проекции и добавить его в файл MAPINFOW.PRJ; это простой текстовый файл. В приложении Создание собственной координатной системы

содержится полное описание файла проекций и его компонентов.

Например, рассматривая описанный выше .HDR-файл, Вы можете по значениям PROJECTION и DATUM решить, что можно использовать принятую в MapInfo коническую равноплощадную проекцию Алберса. Однако, просмотрев содержимое файла MAPINFOW.PRJ, Вы увидите, что описание проекции Алберса выглядит немного по-другому:

”--- North American Coordinate Systems ---”

”Albers Equal-Area Conic (North America)”, 9, 62, 7, -96, 23, 20, 60, 0, 0

”Albers Equal-Area Conic (Continental US)”, 9, 62, 7, -96, 23, 29.5, 45.5, 0, 0

”Albers Equal-Area Conic (Alaska)”, 9, 63, 7, -154, 50, 55, 65, 0, 0

”Albers Equal-Area Conic (Hawaii)”, 9, 62, 7, -157, 3, 8, 18, 0, 0

Сравнив значения начальной (нулевой) и стандартной параллели (компоненты с 4 по 7) со значениями ORIGIN_LON, ORIGIN_LAT, STD_PARALLEL_1 и STD_PARALLEL_2 в

676

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]