MI6UGRU
.pdf
|
|
Приложение D: Создание выражений |
||
|
|
|
|
|
|
“sq km” |
квадратные километры |
|
|
|
|
|
|
|
|
“sq in” |
квадратные дюймы |
|
|
|
|
|
|
|
|
“sq ft” |
квадратные футы |
|
|
|
|
|
|
|
|
“sq survey ft” |
квадратные топографические футы |
|
|
|
|
|
|
|
|
“sq yd” |
квадратные ярды |
|
|
|
|
|
|
|
|
“sq mm” |
квадратные миллиметры |
|
|
|
|
|
|
|
|
“sq cm” |
квадратные миллиметры |
|
|
|
|
|
|
|
|
“sq m” |
квадратные метры |
|
|
|
|
|
|
|
|
“sq ch” |
квадратные чейны |
|
|
|
|
|
|
|
|
“sq li” |
квадратные линки |
|
|
|
|
|
|
|
|
“sq rd” |
квадратные родсы |
|
|
|
|
|
|
|
|
“perch” |
перчи |
|
|
|
|
|
|
|
|
“rood” |
родсы |
|
|
|
|
|
|
|
|
“acre” |
àêðû |
|
|
|
|
|
|
|
|
“hectare” |
гектары |
|
|
|
|
|
|
|
Примеры: Чтобы выбрать все строки таблицы, соответствующие объектам с площадью более, чем 59 квадратных километров:
63.Area(obj,"sq km")>59
Чтобы выбрать все строки таблицы, соответствующие объектам с плотностью населения менее 250 человек на квадратный километр:
64.НАСЕЛЕНИЕ/Area(obj,"sq km")<250
Вычисление плотности населения в объекте:
65.НАСЕЛЕНИЕ/Area(obj,"sq km")
Если Вы хотите получить площадь в гектарах:
66.Area(obj,"hectare")
Если Вы хотите получить площадь в квадратных милях:
67.Area(obj,"sq mi")
CentroidX
Синтаксис: CentroidX(obj)
Результат: Возвращает координату X центроида объекта, которая является значением долготы на картах мира. Центроид – это центр минимального прямоугольника, описывающего заданный объект. Для таких областей, как штат Флорида, центр подобного прямоугольника не будет лежать вне области.
657
Приложение D: Создание выражений
Возвращается значение в десятичных градусах, если координаты представляют широту и долготу. В противном случае значение вычисляется в единицах, заданных для Вашей таблицы.
Примеры: Выбрать все объекты к западу от Нью-Йорка, расположенного на долготе -73.997890 и широте 40.750450:
68.CentroidX(obj)<-73.997890
Выбрать все объекты к востоку от Нью-Йорка, расположенного на долготе -73.997890 и широте 40.750450:
69.CentroidX(obj)>-73.997890
Выбрать все объекты к северо-востоку от Нью-Йорка:
70. CentroidX(obj)>-73.997890 and CentroidY(obj)>40.750450
Первое предложение этого выражения выбирает объекты к востоку от Нью-Йорка, а второе – к северу от Нью-Йорка. Так как предложения соединены оператором “and”, то объект должен удовлетворять обоим условиям.
Выбрать все объекты к северу или востоку от Нью-Йорка:
71. CentroidX(obj)>-73.997890 or CentroidY(obj)>40.750450
Первое предложение этого выражения выбирает объекты к востоку от Нью-Йорка, а второе – к северу от него. Так как предложения соединены оператором “or”, объект должен удовлетворять хотя бы одному из условий.
CentroidY
Синтаксис: CentroidY(obj)
Результат: Возвращает координату Y центроида объекта, которая является значением широты на мировой карте.
Возвращается значение в десятичных градусах, если координаты представляют широту и долготу. В противном случае значение вычисляется в единицах, указанных для таблицы.
Примеры: Выбрать все объекты к северу от Нью-Йорка, расположенного на долготе -73.997890 и широте 40.750450:
72.CentroidY(obj)>40.750450
Выбрать все объекты к югу от Нью-Йорка на долготе -73.997890 и широте 40.750450:
73.CentroidY(obj)<40.750450
См. также описание и примеры функции CentroidX.
Chr$
Синтаксис: Chr$(числовое_выражение)
658
Приложение D: Создание выражений
Результат: Chr$ представляет значение числового выражения в виде ANSI-символа, код которого соответствует значению выражения. Поэтому значение
числового_выражения должно попадать в диапазон от 0 до 255.
Пример: Если Вам может понадобиться выводить на экран подписи в две строки, то с помощью функции Chr$ можно вставить символ перевода строки в текст подписи. ANSI-значение этого символа равно 13. Пусть в первой строке надписи Вы хотите вывести название области, а во второй – численность населения. Такой результат можно получить, создав выражение для подписи:
74.Proper$(Область)+Chr$(13)+Население
Cos
Синтаксис: Cos(числовое_выражение)
Результат: Функция Cos возвращает косинус от значения числового выражения, обозначающего угол в радианах.
CurDate
Синтаксис: CurDate()
Результат: Возвращает текущую дату.
Примеры: Внесение текущей даты в одну из колонок:
75.CurDate()
Функция может также использоваться в сочетании с командой ОБНОВИТЬ КОЛОНКУ, когда нужно внести в колонку текущую дату.
Выбрать все записи о поступлениях, принятых 30 и более дней назад:
76.Поступило <= CurDate()-30
Day
Синтаксис: Day(ïîëå_äàòû)
Результат: Возвращает число в месяце по заданной дате. Число представляется целым значением от 1 до 31.
Примеры: Выбрать все записи, относящиеся к первому числу любого месяца:
77.Day(date)=1
Выбрать все записи, относящиеся к пятницам, не падающим на 13-е число:
78.Weekday(date)=6 and Day(date)<>13
Это выражение состоит из двух предложений. Первое использует функцию Weekday для выбора записей, в которых день недели равен пятнице. Второе предложение использует функцию Day для выбора записей, в которых число не равно (<>) 13. Так как эти предложения связаны ключевым словом “and”, то запись должна удовлетворять обоим условиям, чтобы попасть в выборку.
659
Приложение D: Создание выражений
Distance
Синтаксис: Distance(x1, y1, x2, y2, единицы_измерения)
x1 и y1 – координаты восток-запад (долгота) на карте мира x2 и y2 – координаты север-юг (широта) на карте мира единицы_измерения – текущие единицы измерения длины
Результат: Функция вычисляет расстояние между двумя точками.
Когда Вы выбираете Distance в списке функций, в окне выражения появляются скобки с ключевым словом “obj” и текущими единицами длины в двойных кавычках. При составлении выражений обычно предлагается использовать мили (mi). Если вы хотите вычислить расстояние в других единицах, укажите эти единицы в кавычках.
Допускаются следующие единицы измерения длины:
Название |
Единицы измерения |
|
|
“mi” |
ìèëè |
|
|
“km” |
километры |
|
|
“in” |
дюймы |
|
|
“ft” |
ôóòû |
|
|
“survey ft” |
топографические футы |
|
|
“li” |
линки |
|
|
“rd” |
кодсы |
|
|
“ch” |
чейны |
|
|
“yd” |
ÿðäû |
|
|
“mm” |
миллиметры |
|
|
“cm” |
сантиметры |
|
|
“m” |
метры |
|
|
“nmi” |
морские мили (1 морская миля |
|
равна 1852 метрам) |
|
|
Примеры: Вычисление расстояния между некоторым объектом и Нью-Йорком, расположенным на долготе -73.997890 и широте 40.750450:
79. Distance(-73.997890, 40.750450, CentroidX(obj),
CentroidY(obj),"mi")
Выбрать все объекты, удаленные не более, чем на 20 миль к западу от Нью-Йорка:
80. CentroidX(obj)<-73.997890 and Distance(-73.997890, 40.750450,
CentroidX(obj), CentroidY(obj),"mi")<=20
Это выражение состоит из двух предложений. Первое определяет, что объект должен
лежать к западу от Нью-Йорка. Второе предложение задает ограничение на
660
Приложение D: Создание выражений
расстояние: не более 20 миль. Так как эти предложения связаны оператором “and”, то объект должен удовлетворять им обоим, чтобы попасть в выборку.
Format$
Синтаксис: Format$ ( числовое_выражение , шаблон )
Шаблон – это строка, задающая формат результата, возвращаемого функцией.
Результат: Выдает строковое представление значения числового_выражения.
Примеры: Функция Format$( ) возвращает строку символов, содержащую форматированную строковую запись числа (значения первого параметра). Шаблон форматирования снабжает число символами (например, $, %, точка, запятая), которые делают результирующую строку более читаемой. Например, число 12345.67 Вы можете с помощью Format$( ) представить строкой вида $12345.67.
Первый параметр функции Format$( ) – числовое выражение – определяет значение, которое надо представить строкой. Шаблон – это строка кодовых символов, которую Вам следует задать для получения желаемого формата строки. Строка шаблона должна состоять из одного или нескольких специальных символов форматирования, таких как
# , 0, %, запятая, точка или точка с запятой; эти символы определяют конкретный вид строкового представления. Строка шаблона может также содержать символы, которые добавляются к строковому представлению числа, например, знак доллара, минус или скобки. Символы форматирования описываются в следующей таблице.
компоне |
|
íòà |
Действие при форматировании: |
шаблона |
|
|
|
# |
Заменяется на один или более символов строки, представляющей значение |
|
числа. Однако, если шаблон содержит один или несколько символов # |
|
слева от десятичной точки, и значение лежит в границах между 0 и 1, то |
|
результат форматирования может не иметь символа 0 перед десятичной |
|
точкой. |
|
|
0 |
Заменяются, подобно #, на символы строки, представляющей значение |
|
числа. Однако, если шаблон содержит один или несколько символов 0 |
|
слева от десятичной точки, и значение лежит в границах между 0 и 1, то в |
|
результирующей строке символ 0 будет стоять перед десятичной точкой. |
|
|
. |
Используется в комбинации с символом #. Если в шаблоне имеется точка, |
|
то число символов # справа от точки задает количество десятичных знаков |
|
после запятой в отформатированной строке. |
|
|
, |
Если точка стоит перед первым символом #, то в отформатированной |
|
строке запятая разделяет каждые три цифры до десятичной точки. |
|
Например, миллион будет иметь вид "1,000,000", а не "1000000". |
|
|
% |
Значение, представляемое в виде строки, умножается на 100; например, |
|
для параметра 0.75 будет сформирована строка "75%". Если Вы хотите |
|
вывести знак процента, не умножая параметр на 100, поставьте обратную |
|
черту ( \ ) перед знаком процента. |
|
|
661
Приложение D: Создание выражений
E+ |
Число представляется в экспоненциальной форме; например, для значения |
|
1234 будет сформирована строка "1.234e+03". Если экспонента |
|
положительна, то после "e" ставится знак плюс, а если отрицательна (для |
|
дробных чисел) – знак минус. |
|
|
E– |
Действие то же, что и у "E+", только не выводится знак плюс после "e". |
;Поместив в шаблоне точку с запятой, Вы можете задать отдельно форматы для положительных и отрицательных чисел. Перед знаком ";" указывается формат для положительных значений, а после него – для отрицательных.
При наличии двух форматов знак минус не ставится автоматически перед отрицательными числами. Для того, чтобы знак присутствовал, надо явно вставить символ "-" в строку формата для отрицательных значений.
-Когда шаблон строки включает в себя и положительные и отрицательные форматы, результат не будет автоматически включать знак минус. Когда Вы хотите включить знак минус в результат, надо включить символ “–” во вторую часть набора символов. Смотрите пример ниже в таблице.
\Над символами, указанными после этого символа, MapBasic не производит никаких действий. Это позволяет Вам указывать символы вроде "%" в строке шаблона, но не изменять этим значение числового параметра
Ниже приводится таблица, в левой колонке которой приведены примеры шаблонов для функции 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” |
|
|
|
662
|
|
|
Приложение D: Создание выражений |
|||
|
|
|
|
|
|
|
|
“#.###E+##” |
–12345.6789 |
|
”–1.235e+04” |
|
|
|
|
|
|
|
|
|
|
“#.###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.
Пример: Вы готовитесь нанести на карту города банки. Для этого нужно найти все строки, содержащие подстроку “Банк” в колонке Название. Слово “Банк” может быть как отдельным словом в названии, так и сливаться с другими словами. Вы также не уверены, что слово “Банк” написано везде большими буквами. Поэтому Вы составляете выражение:
81.InStr(1,UCase$(Название),"БАНК")>0
Это выражение задает поиск строки “БАНК” в колонке Название. Выбираются все записи, содержащие эту строку.
Например, если данные выглядят так:
“This is a test of the insert function.”
Вам надо найти позицию слова “test.” Функция INSTR будет выглядеть так:
INSTR(1,”This is a test of the insert function”,”test”)
Когда оператор выполнен, будет возвращено число 11.
Внимание: Если строка, которую Вы ищете, не существует, то возвращается значение 0.
663
Приложение D: Создание выражений
Int
Синтаксис: Int(числовое_выражение)
Результат: Возвращает ближайшее целое число, которое не превосходит значение числового_выражения.
Примеры: Таблица показывает, как функция Int обрабатывает разные значения:
Число |
Int(Number) |
|
|
5.2 |
5 |
|
|
5.999 |
5 |
|
|
–7.8 |
–8 |
|
|
–7.2 |
–8 |
|
|
LCase$
Синтаксис: LCase$(строка)
Результат: Возвращает строку, в которой все большие буквы заменены на маленькие.
Примеры: Рассмотрим выражение:
82.LCase$(City)
Таблица показывает, как функция преобразует входные строки:
Исходная строка |
Результат |
|
|
NEW YORK |
new york |
|
|
New yorK |
new york |
|
|
new york |
new york |
|
|
Left$
Результат: Возвращает строку, состоящую из заданного числа самых левых символов
строки.
Примеры: Рассмотрим выражение:
83.Left$(City,5)
Таблица показывает, как функция преобразует входные строки:
Исходная строка |
Результат |
|
|
New York |
New Y |
|
|
Denver |
Denve |
|
|
Singapore |
Singa |
|
|
Теперь рассмотрим выражение, где Телефон – это колонка, содержащая телефонные номера, начинающиеся с кодов городов:
664
Приложение D: Создание выражений
84.Left$(Телефон,3)="404"
Это выражение выбирает все строки таблицы, поле номера телефона в которых начинается на “404”. Обратите внимание, что колонка Телефон содержит строки, поэтому 404 должно быть заключено в двойные кавычки.
Len
Синтаксис: Len(строка)
Результат: Возвращает количество символов в строке.
LTrim$
Синтаксис: LTrim$(строка)
Результат: LTrim$ удаляет все пустые символы (пробелы, табуляторы и так далее) из начала строки.
Maximum
Синтаксис: Maximum(числовое_выражение, числовое_выражение)
Результат: Maximum возвращает большее из двух значений.
Пример: Чтобы выяснить максимальный номер дома для отрезка улицы в файле
StreetInfo:
85.Maximum(ToLeft,ToRight)
Колонка ToLeft содержит наибольший номер по левой стороне улицы, а ToRight – по правой стороне данного отрезка.
Mid$
Синтаксис: Mid$(строка, номер_позиции, длина)
где строка – это символьное выражение; номер_позиции – целое число, определяющее начальную позицию в строке;
длина – целое число, задающее число символов, которые следует выделить.
Результат: Mid$ возвращает строку заданной длины, начиная с некоторого номера позиции в исходной строке.
Примеры: Рассмотрим следующее выражение:
86.Mid$(City,5,4)
Таблица показывает, как функция преобразует входные строки:
Исходная строка |
Результат |
|
|
New York City |
York |
|
|
Denver |
er |
|
|
Singapore |
apor |
|
|
Заметьте, что из строки “Denver” выделено только 2 символа. Это произошло потому, что "Denver” – слишком короткая строка, и не имеет полной 4-символьной подстроки, начинающейся с пятой позиции.
665
Приложение D: Создание выражений
Minimum
Синтаксис: Minimum(числовое_выражение, числовое_выражение)
Результат: Minimum возвращает меньшее из двух значений.
Примеры: Чтобы выяснить минимальный номер дома для отрезка улицы в файле
StreetInfo:
87.Minimum(FromLeft,FromRight)
Колонка FromLeft содержит наибольший номер по левой стороне улицы, а FromRight –
по правой стороне данного сегмента.
Month
Синтаксис: Month(äàòà)
Результат: Возвращает номер месяца в виде числа от 1 до 12.
Примеры: Чтобы выбрать все записи, относящиеся к августу:
88.Month(Доставлено)=8
Чтобы выбрать все записи, полученные до августа:
89.Month(Доставлено)<8
Чтобы выбрать все записи, относящиеся к августу 1990:
90.Month(Доставлено)=8 and Year(Доставлено)=1990
Это выражение состоит из двух предложений. Первое указывает, что запись должна относиться к августу, а второе – что она должна относиться к 1990 году. Так как эти предложения связаны оператором “and”, то запись должна удовлетворять обоим условиям, чтобы попасть в выборку.
Выбор всех записей от августа или сентября:
91.Month(Доставлено)=8 or Month(Доставлено)=9
то выражение состоит из двух предложений. Первое указывает, что запись может относиться к августу, а второе – что она может относиться к сентябрю. Так как эти предложения связаны оператором “or”, то запись может удовлетворять хотя бы одному из условий, чтобы попасть в выборку.
Выбор всех записей от августа или сентября:
92.Month(Доставлено)=any(8,9)
Это выражение дает тот же результат, что и пример 24, но оно использует ключевое слово “any”.
Выбор всех записей от августа или сентября 1990 года:
93.Month(Доставлено)=any(8,9) and Year(Доставлено)=1990
666