Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Rukovodstvo_polzovatelya_MapInfo_Professional.pdf
Скачиваний:
718
Добавлен:
05.03.2016
Размер:
11.58 Mб
Скачать

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Ключевые слова

MapInfo поддерживает следующие ключевые слова: Any, All, In и Between. При построении выражений их надо вводить с клавиатуры.

Слово Any означает, что надо выбрать один из элементов, например:

54. КОД_РЕГИОНА = any(”33”, ”52”, ”86”)

Выражение 53 принимает значение "True" для любой записи, относящейся к Владимирской и Нижегородской областям, а также к Ханты-Мансийскому АО.

Следующий пример иллюстрирует действие оператора All:

55. КОД_РЕГИОНА <> all(”33”, ”52”, ”86”)

Это выражение означает, что программа должна выбрать записи, НЕ относящиеся к Владимирской и Нижегородской областям и ХМАО. Сравним с действием другого опреатора:

56. КОД_РЕГИОНА <> any(”33”, ”52”, ”86”)

Записи для Владимирской области будут выбраны, т.к. они не относятся ни к Нижегородской области, ни к ХМАО. По той же причине выбираются записи для Нижегородской области и ХМАО – и выбрано будет все.

Рассмотрим пример использования In:

57. КОД_РЕГИОНА in(”33”, ”52”, ”86”)

Данное выражение дает такой же результат, что и в примере 53. Заметим, что “In” эквивалентно “=any”, а “Not” in эквивалентно “<>all”. Наконец, примеры 57 и 58 показывают применение Between...and:

58.СТОИМОСТЬ between 50000 and 100000

59.(СТОИМОСТЬ between 50000 and 100000) or (СТОИМОСТЬ between 150000 and 200000)

Эти выражения имеют те же значения, что 42 и 43 соответственно. Оператор Between...and можно применять и к строкам (аналогично примерам 47, 49 и 50).

Очередность выполнения операторов

При работе с выражениями MapInfo необходимо знать, какие действия будут выполняться первыми. Правилами установлена некоторая очередность вычислений. Таблица, приведенная ниже, показывает, в какой последовательности выполняются действия. Операторы, имеющие одинаковую очередность, выполняются слева направо. Возведение в степень выполняется справа налево. Например, 2 ^ -3 ^ -4 = 2 ^ ( - (3 ^ (-4)))

в первую очередь

круглые скобки

 

возведение в степень

 

отрицательное число

 

умножение и деление

 

сложение и вычитание

 

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

 

операторы сравнения

 

Not

в последнюю очередь

And

Or

Например, выражение 3+4*2 равно 11, т.к. операция умножения совершается первой:

3+4*2=

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

502

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

3+8=

11

Если поставить скобки, то сначала будет выполняться операция сложения:

(3+4)*2=

7*2=

14

Рассмотрим выражения 59, 60 и 61, в результате которых должны быть выбраны все записи за июль или сентябрь 1989 года:

60. Year(ДОСТАВЛЕНО)=89 and Month(ДОСТАВЛЕНО)=7 or Month(ДОСТАВЛЕНО)=9

Поскольку оператор And выполняется раньше, чем Or, MapInfo обрабатывает выражение “Year(ДОСТАВЛЕНО)=89 and Month(ДОСТАВЛЕНО)=7”, как будто оно заключено в скобки.

61.(Year(ДОСТАВЛЕНО)=89 and Month(ДОСТАВЛЕНО)=7) or Month(ДОСТАВЛЕНО)=9

Вэтом случае будут выбраны записи за июль 1989 года или сентябрь любого года. Но нас такой ответ не удовлетворяет. Поэтому необходимо добавить ко второму выражению скобки:

62.Year(ДОСТАВЛЕНО)=89 and (Month(ДОСТАВЛЕНО)=7 or Month(ДОСТАВЛЕНО)=9)

Вданном выражении MapInfo "знает", что во второй части выражения надо выбирать как записи, удовлетворяющие условию “Month(ДОСТАВЛЕНО)=7”, так и записи

“Month(ДОСТАВЛЕНО)=9”.

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

Функции

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

<название функции>(параметры)

Большинство функций MapInfo работают с одним или двумя параметрами. Параметр может представлять собой колонку или выражение.

Для работы с географическими функциями MapInfo использует ключевые слова “obj” или

“object”, принимающая значения: Area, CentroidX, CentroidY, ObjectLen и Perimeter. Они дают команду MapInfo выбирать значения графических объектов, а не атрибутивную информацию.

Abs

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

Назначение: функция возвращает абсолютное значение числового выражения. Если выражение имеет значение большее или равное нулю, Abs() возвращает значение без изменений. Если же значение выражения меньше нуля, Abs возвращает значение выражения, умноженное на (-1).

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

 

 

63. Abs(numA-numB)

 

 

 

 

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

503

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

(возвращает абсолютную разницу между numA и numB, независимо от того, что больше).

Следующее примеры демонстрирует работу функции Abs():

Abs(5) = 5

Abs(-3) = 3

Abs(-0.02) = 0.02

Area

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

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

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

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

Название

 

 

квадратные мили

“sq mi”

квадратные километры

“sq km”

квадратные дюймы

“sq in”

квадратные футы

“sq ft”

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

“sq survey ft”

квадратные ярды

“sq yd”

квадратные миллиметры

“sq mm”

квадратные сантиметры

“sq cm”

квадратные метры

“sq m”

квадратные чейны

“sq ch”

квадратные линки

“sq li”

акры

“acre”

гектары

“hectare”

 

 

Выберем все строки таблицы, соответствующие объектам с площадью более, чем 59 квадратных км:

64.Area(obj,”sq km”)>59

Атеперь выберем все строки таблицы, соответствующие объектам с плотностью населения менее 250 человек на квадратный км:

65.НАСЕЛЕНИЕ/Area(obj,”sq km”)<250

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

504

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

66.НАСЕЛЕНИЕ/Area(obj,”sq mi”)

Можно получить площадь в гектарах:

67.Area(obj,”hectare”)

Аможно получить площадь и в квадратных милях:

68.Area(obj,”sq mi”)

CentroidX

Синтаксис: CentroidX(obj)

Назначение: функция возвращает координату X центроида объекта, которая является значением широты на картах.

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

Пусть требуется выбрать все объекты к востоку от Нью-Йорка:

69.CentroidX(obj)>-73.997890

Атеперь найдем объекты, расположенные к западу от Нью-Йорка:

70.CentroidX(obj)<-73.997890

CentroidY

Синтаксис: CentroidY(obj)

Назначение: функция возвращает координату Y центроида объекта, которая является значением широты на картах.

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

Пусть требуется выбрать все объекты к северу от Нью-Йорка:

71.CentroidY(obj)>40.750450

Атеперь найдем объекты, расположенные к югу от Нью-Йорка:

72.CentroidY(obj)<40.750450

Асейчас выберем все объекты к северо-востоку от Нью-Йорка:

73.CentroidX(obj)>-73.997890 and CentroidY(obj)>40.750450

Первое предложение этого выражения выбирает объекты к востоку от Нью-Йорка, а второе – к северу от него. Поскольку предложения соединены оператором And, объект должен удовлетворять обоим условиям.

Инаконец, выберем все объекты, расположенные к северу или к востоку от Нью-Йорка:

74.CentroidX(obj)>-73.997890 or CentroidY(obj)>40.750450

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

505

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Первое предложение этого выражения выбирает объекты к востоку от Нью-Йорка, а второе – к северу от него. Поскольку предложения соединены оператором Or, объект должен удовлетворять хотя бы одному из условий.

Chr$

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

Назначение: Функция возвращает строку, состоящую из одного элемента, которая соответствует коду заданного элемента (символа), определенного числовым выражением. В большинстве систем это положительное число [0; 255].

Допустим, Вам требуется вывести на экран подписи в две строки. С помощью функции Chr$() можно вставить специальный символ перевода строки в текст подписи. ANSIзначение этого символа равно 13. Пусть в первой строке надписи Вам нужно вывести название области, а во второй – численность населения. Для этого потребуется создать следующее выражение:

75.Proper$(ОБЛАСТЬ)+Chr$(13)+НАСЕЛЕНИЕ

Внекоторых языках семейства BASIC Chr$(10) используется для перехода к новой строке. В MapBasic Вы можете использовать как Chr$(13), так и Chr$(10).

Cos

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

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

CurDate

Синтаксис: CurDate()

Назначение: функция возвращает текущую дату.

Например, одну из колонок поместим текущую дату:

76. CurDate()

Если нужно внести в колонку текущую дату, можно использовать данную функцию в сочетании с командой ОБНОВИТЬ КОЛОНКУ.

Чтобы выбрать все записи о поступлениях, принятых 30 и более дней назад, ставим выражение:

77. ДОСТАВЛЕНО<=CurDate()-30

Day

Синтаксис: Day(поле_типа_дата)

Назначение: функция возвращает день из выражения даты – целое число, изменяющееся в пределах [1; 31].

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

78. Day(date)=1

Теперь выберем все записи, относящиеся к пятницам, не падающим на 13-ое число:

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

506

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

79. Weekday(date)=6 and Day(date)<>13

Это выражение состоит из двух предложений. Первое использует функцию Weekday() для выбора записей, в которых день недели равен пятнице. Второе предложение использует функцию Day() для выбора записей, в которых число не равно (< >) 13. Поскольку эти предложения связаны ключевым словом And, то для того, чтобы попасть в выборку, запись должна удовлетворять обоим условиям.

Distance

Синтаксис: Distance(x1, y1, x2, y2, единицы_измерения)

x1 и y1 – широта и долгота первой точки; x2 и y2 – широта и долгота второй точки;

единицы_измерения – текущие единицы измерения длины.

Назначение: функция вычисляет расстояние между двумя точками.

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

Можно производить вычисления в следующих единицах измерения:.

Название

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

“mi” мили

“km” километры

“in” дюймы

“ft” футы

“survey ft” топографические футы

“li” линки

“yd” ярды

“mm” миллиметры

“cm” сантиметры

“m” метры

“nmi”

морские мили

Пусть, например, требуется найти расстояние между некоторыми объектами и Нью-Йорком, координаты которого равны 40.750450 с.ш. и 73.997890 з.д.:

80.Distance(-73.997890, 40.750450, CentroidX(obj), CentroidY(obj),”mi”)

Атеперь выберем все объекты, удаленные не более, чем на 20 миль, к западу от НьюЙорка:

81.CentroidX(obj)<-73.997890 and Distance(-73.997890, 40.750450, CentroidX(obj), CentroidY(obj),”mi”)<=20

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

507

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Это выражение состоит из двух предложений. Первое определяет, что объект должен лежать к западу от Нью-Йорка. Второе предложение задает ограничение на расстояние: не более 20 миль. Поскольку эти предложения связаны оператором And, то для того, чтобы попасть в выборку, объект должен удовлетворять обоим условиям.

Format$

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

Шаблон – это строка, задающая формат результата, возвращаемого функцией.

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

Format$() возвращает строку символов, содержащую форматированную строковую запись числа (значения первого параметра). Шаблон форматирования снабжает число символами (например, $, %, точка, запятая), которые делают результирующую строку более читаемой. Допустим, у нас имеется число 12345.67, при помощи Format$() мы можем получить

"$12345.67".

В параметре "числовое_выражение" содержится число, вид которого Вам нужно изменить. Параметр "шаблон" представляет собой строку с символами, которые определяют вид числового выражения. Данный параметр должен включать в себя специальные символы: #, 0, %, точку (.) запятую (,) или точку с запятой (;) – именно они определяют вид конечного результата. В таблице ниже приводится список всех символов, используемых для представления чисел.

Шаблон

Действие

 

 

#

В результате будет получена одна или несколько цифр от исходного

 

значения. Если шаблон содержит один или несколько символов # слева

 

от разделителя целой и дробной части числа и значение числа

 

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

 

начинаться не с 0, а с разделителя целой и дробной части (точки или

 

запятой).

0

Данный символ работает аналогично предыдущему. Если в шаблоне

 

содержится один или несколько символов 0 слева от разделителя целой

 

и дробной части числа, а значение числа изменяется в пределах (0; 1),

 

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

. (точка)

Данный символ используется в комбинации с символом #. Если в

 

шаблоне имеется точка, то число символов # справа от точки задает

 

количество десятичных знаков после запятой в отформатированной

 

строке.

, (запятая)

Если Вам потребуется разделять тысячи и использовать для этой цели

 

запятую, то включите в параметр знак запятой. В результате Вы

 

получите “10,000,000” вместо “10000000”.

%

В результате мы получим величину, умноженную на 100 (например, 0.75

 

будет представлять собой "75%"). Если Вам необходимо использовать

 

знак процента, но Вам не нужно, чтобы программа выполняла данное

 

действие, просто поместите перед знаком процента обратную

 

наклонную черту (\).

 

 

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

508

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Шаблон

Действие

 

 

E+, e+

Такое представление можно встретить в научной литературе. Значение

 

1234 изменится на "1.234e+03". Если показатель степени является

 

положительным числом, то после знака “e” появится знак "+". В случае

 

дробных чисел (0; 1) после "е" будет стоять "-".

E-, e-

Данный параметр работает аналогично предыдущему. Разница состоит

в том, что знак "+" после "е" не появляется.

;(точка с запятой) Если в параметр "шаблон" Вы включите символ точки с запятой, Вы сможете различать положительные и отрицательные числа по их виду. Поместите точку с запятой после одного массива символов (представленных в данной таблице) перед вторым массивом. Тогда символы второго массива будут работать с отрицательными числами. Для того, чтобы отрицательные числа появлялись со знаком "-", включите знак "-" во второй массив символов.

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

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

Примеры: Ниже приведены примеры использования параметра "шаблон" функции Format$( ). В средней колонке представлены примеры значений числового параметра, а в правой - возвращаемый функцией Format$( ) результат.

 

Шаблон

Числовое значение

Format$( ) возвращает

 

 

 

 

 

 

 

 

“,#”

12345

 

”12,345”

 

 

“,#”

-12345

 

”-12,345”

 

 

“$#”

12345

 

”$12345”

 

 

“$#”

-12345

 

”-$12345”

 

 

“$,#”

12345

 

”$12,345”

 

 

“$,#”

-12345

 

”-$12,345”

 

 

“$,#.##”

12345.678

 

”$12,345.68”

 

 

“$,#.##”

-12345.678

 

”-$12,345.68”

 

 

“$,#.##;($,#.##)”

12345.678

 

”$12,345.68”

 

 

“$,#.##;($,#.##)”

-12345.678

 

”($12,345.68)”

 

 

“,#.###”

12345.6789

 

”12,345.679”

 

 

“,#.#”

12345.6789

 

”12,345.7”

 

 

“#.#”

12345.6789

 

”12345.7”

 

 

“#.###E+##”

12345.6789

 

”1.235e+04”

 

 

“#.###E+##”

-12345.6789

 

”-1.235e+04”

 

 

 

 

 

 

 

 

 

 

 

 

 

 

MapInfo Professional 7.5

 

 

© May 2004 MapInfo Corporation. All rights reserved.

509

 

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Шаблон

Числовое значение

Format$( ) возвращает

 

 

 

“#.###E+##”

0.054321

”5.432e-02”

“#.###E-##”

12345.6789

”1.235e04”

“#.###E-##”

0.054321

”5.432e-02”

“#%”

0.054321

”5%”

“#.##%”

0.054321

”5.43%”

“#.##\%”

0.054321

”.05%”

“0.##\%”

0.054321

”0.05%”

 

 

 

InStr

Синтаксис: InStr(положение, строка, подстрока)

Назначение: Функция проверяет, содержит ли заданная строка указанную подстроку. MapInfo производит поиск подстроки, начиная с символа строки с номером, указанным в параметре "положение". Если это число равно 1, MapInfo начинает поиск с начала строки. Если же он равен, скажем, 6, то MapInfo начинает поиск с шестого символа.

Если строка содержит подстроку, InStr() возвращает позицию, с которой она начинается. Если подстрока пустая, то InStr() вернет 0.

Вам нужно нанести на карту города банки. Для этого нужно найти все строки, содержащие подстроку “Банк” в колонке "Название". Слово “Банк” может быть как отдельным словом в названии, так и сливаться с другими словами. Вы также не уверены, что слово “Банк” написано везде большими буквами. Поэтому Вы составляете такое выражение:

82. InStr(1,UCase$(НАЗВАНИЕ),”БАНК”)>0

Это выражение задает поиск строки “БАНК” в колонке "Название". Выбираются все записи, содержащие эту строку.

Одна из записей в данных выглядит следующим образом: “Проверим действие функции InStr.” А Вам требуется найти положение слова "действие". Тогда составьте выражение такого вида:

83.InStr(1,”Проверим действие функции InStr”,”действие”)

Внашем случае мы получим значение, равное 10.

Если искомой строки не найдено, то функция вернет 0.

Int

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

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

Примеры: В таблице, приведенной ниже, показано, как функция Int() обрабатывает различные выражения.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

510

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Число

Возвращаемое значение

 

 

5.2

5

5.999

5

-7.8

-8

-7.2

-8

 

 

LCase$

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

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

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

84.LCase$(ГОРОД)

Втаблице ниже приведены примеры того, как могут быть обработаны записи в поле таблицы "Город".

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

Возвращаемая строка

 

 

НИЖНИЙ НОВГОРОД

нижний новгород

Нижний новгород

нижний новгород

нижний новгород

нижний новгород

 

 

Left$

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

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

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

85.Left$(ГОРОД,8)

Втаблице ниже приведены примеры того, как могут быть обработаны записи в поле таблицы "Город".

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

Возвращаемая строка

 

 

Нижний Новгород

Нижний Н

Махачкала

Махачкал

Москва

Москва

 

 

Теперь рассмотрим выражение, где "Телефон" это колонка, содержащая телефонные номера, начинающиеся с кодов городов.

86. Left$(ТЕЛЕФОН,3)=”812”

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

511

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

Len

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

Назначение: функция возвращает число символов в строке.

LTrim$

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

Назначение: Функция удаляет все непечатаемые символы (пробелы, табуляторы и т.п.) в начале строки и возвращает новую строку.

См.также: RTrim$

Maximum

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

Назначение: функция возвращает из двух значений наибольшее.

Найдем дом с наибольшим номером на заданном отрезке улицы (данные хранятся в файле

StreetInfo).

87. Maximum(ToLeft,ToRight)

Колонка "ToLeft" содержит наибольший номер по левой стороне улицы, а "ToRight" – по правой стороне уличного сегмента.

Mid$

Синтаксис: Mid$(строка, положение, длина)

строка – символьное выражение; положение – целое число, обозначающее начальное положение в строке;

длина – строка, определяющая количество символов, которое необходимо включить в результирующую строку.

Назначение: функция возвращает часть строки заданной длины, начиная с указанной позиции.

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

88. Mid$(ГОРОД,5,4)

Ниже приведены примеры того, как могут быть обработаны записи в поле таблицы "Город":

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

Возвращаемая строка

Ростов-на-Дону ов-н

Москва ва

Норильск льск

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

512

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Заметьте, что из строки “Москва” выделено только 2 символа. Это произошло потому, что "Москва” – слишком короткая строка (меньше суммы значений параметров "положение" и "длина").

Minimum

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

Назначение: функция возвращает из двух значений наименьшее.

Найдем дом с наименьшим номером на заданном отрезке улицы (данные хранятся в файле

StreetInfo).

89. Minimum(FromLeft,FromRight)

Колонка "FromLeft" содержит наибольший номер по левой стороне улицы, а "FromRight" – по правой стороне данного отрезка.

Month

Синтаксис: Month(поле_типа_дата)

Назначение: Функция возвращает месяц из выражения даты – целое число, изменяющееся в пределах [1; 12].

Выберем все записи за август:

90. Month(ДОСТАВЛЕНО)=8

Выберем все записи, полученные до августа:

91.Month(ДОСТАВЛЕНО)<8 Выберем все записи за август 1990 года:

92.Month(ДОСТАВЛЕНО)=8 and Year(ДОСТАВЛЕНО)=1990

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

Выберем все записи за август или сентябрь:

93. Month(ДОСТАВЛЕНО)=8 or Month(ДОСТАВЛЕНО)=9

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

Все записи за август или сентябрь можно получить и следующим образом:

94. Month(ДОСТАВЛЕНО)=any(8,9)

Это выражение дает тот же результат, что и предыдущий пример, однако здесь используется ключевое слово Any.

Атеперь найдем все записи за август или сентябрь 1990 года:

95.Month(ДОСТАВЛЕНО)=any(8,9) and Year(ДОСТАВЛЕНО)=1990

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

513

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

ObjectLen

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

Назначение: функция возвращает длину линейного объекта (линии или полилинии). Для всех остальных объектов возвращается значение 0.

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

Можно производить вычисления в следующих единицах измерения:

Название

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

 

 

“mi”

мили

“km”

километры

“in”

дюймы

“ft”

футы

“survey ft”

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

“yd”

ярды

“mm”

миллиметры

“cm”

сантиметры

“li”

линки

“m”

метры

“nmi”

морские мили

 

 

Пусть требуется вычислить длину объекта:

96.ObjectLen(obj, ”km”)

Атеперь выразим длину того же объекта в милях:

97.ObjectLen(obj,”mi”)

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

98. ObjectLen(obj, ”nmi”)

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

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

99. ObjectLen(obj, ”km”)>10

Perimeter

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

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

514

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

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

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

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

100.Perimeter(obj, ”km”)

Выразим периметр этого объекта в километрах:

101.Perimeter(obj, ”mi”)

А теперь выразим периметр объекта в метрах:

102.Perimeter(obj, ”m”)

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

103.Perimeter(obj, ”mi”)>35

Proper$

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

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

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

104.Proper$(ГОРОД)

Ниже приведены примеры того, как могут быть обработаны записи в поле таблицы "Город":

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

Возвращаемая строка

 

 

НИЖНИЙ НОВГОРОД

Нижний Новгород

Нижний

Нижний Новгород

новгороД

 

нижний

Нижний Новгород

новгород

 

Нижний

Нижний Новгород

Новгород

 

 

 

Right$( )

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

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

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

105.Right$(ГОРОД,4)

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

515

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

В этом примере будут возвращены последние четыре символа записей из табличного поля "Город".

См. также: описание функций Left$, Mid$

Round

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

Назначение: функция возвращает округленное значение числа, заданного первым параметром, при этом степень округления определяется вторым параметром.

Рассмотрим общий случай:

106.Round(число1,число2)

Здесь функция округляет значение "число1" до значения, кратного параметру "число2".

Исходное значение

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

 

 

14347,10000

10000

14347, 100

14300

14347, 10

14350

12.18353, .1

12.20000

12.18353, .001

12.18400

 

 

Найдем всех жителей области, средний возраст которых составляет 42 года:

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

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

RTrim$

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

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

См. также: LTrim$

Sin

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

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

Str$

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

Назначение: функция возвращает строку, в которой содержится значение заданного выражения.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

516

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

Если выражение является отрицательным числом, то первым знаком в возвращаемой строке будет "-". Если в выражении используется положительное число, то вместо первого знака будет поставлен пробел. Если выражение представляет собой пробел, то Str$() вернет строку, описывающую тип объекта (например, "полигон").

Если выражение возвращает логическое (True/False) значение, то Str$ вернет “T” для True

или “F” для False.

Если используется тип переменных Float (вещественное), то Str$ будет создавать строковое значение, представляющее число, полученное при округлении:

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

Ближайшие .01 (сотые), если число больше, чем 100,000.

Если округление не нужно, то для соблюдения точности числа знаков или точности отображения строки используйте функцию Format$().

.UCase$

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

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

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

108.UCase$(ГОРОД)

Ниже приведены примеры того, как могут быть обработаны записи в поле таблицы "Город":

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

Возвращаемая строка

 

 

НИЖНИЙ НОВГОРОД

НИЖНИЙ НОВГОРОД

Нижний новгороД

НИЖНИЙ НОВГОРОД

нижний новгород

НИЖНИЙ НОВГОРОД

 

 

См. также: Lcase$, Proper$

Val

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

Назначение: Функция извлекает из строкового выражения числовое значение.

Val() пропускает все знаки табуляции, пробелы, символы конца строки, а затем исследует первую последовательность числовых символов и производит поиск числовых значений. Поиск прекращается, как только функция встретит первый нецифровой символ, при этом знак "-" (символ переноса) и десятичная точка не учитываются (например, Val("-9.9") = -9.9.). Если первый символ (после знаков табуляции в начале строки, пробелов и символа конца строки) не является числовым, то Val() вернет 0.

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

517

MI_UG.PDF

MapInfo Professional 7.5 Руководство пользователя (Полное)Глава 15: Специальные разделы о работе с MapInfo Pro-

В таблице, приведенной ниже, показано, как функция Val() извлекает числа из строк:

Исходное выражение

Возвращаемое значение

 

 

 

12

тысяч

12

52

- 62 Арбат

52

Восемнадцать

0

А/я 239

0

 

 

 

Weekday

Синтаксис: Weekday(поле_типа_дата)

Назначение: Функция возвращает из выражения даты день недели. Это целое число, изменяющееся в пределах [1; 7], причем 1 обозначает воскресенье, а 7 – субботу.

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

109.Weekday(ДАТА)=4

Выберем все записи в таблице за среду, четверг и пятницу:

110.Weekday(ДАТА)=any(4,5,6)

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

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

111.Weekday(ДАТА)=6 and Month(ДАТА)=7

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

Year

Синтаксис: Year(поле_типа_дата)

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

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

112. Year(ДАТА)=1990

Найдем все заказы, сделанные в 1990 и 1991 годах.

113.Year(ДАТА)=any(1990,1991)

Найдем все заказы, сделанные с 1985 по 1990 год включительно.

114.Year(ДАТА)>=1985 and Year(ДАТА)<=1990

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

MapInfo Professional 7.5

 

© May 2004 MapInfo Corporation. All rights reserved.

518

MI_UG.PDF

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