- •Add Cartographic Frame
- •Оператор Alter Button
- •Оператор Alter ButtonPad
- •Оператор Alter MapInfoDialog
- •Оператор Alter Menu
- •Оператор Alter Menu Item
- •Оператор Alter Object
- •Оператор Alter Table
- •Оператор Autolabel
- •Оператор Beep
- •Оператор Browse
- •Предложение Brush
- •Оператор Call
- •Предложение CharSet
- •Функция ChooseProjection$()
- •Оператор Close All
- •Оператор Close File
- •Оператор Close Table
- •Оператор Close Window
- •Оператор Commit Table
- •Оператор Continue
- •Предложение Control CheckBox
- •Предложение Control EditText
- •Предложение Control GroupBox
- •Предложение Control RadioGroup
- •Оператор Create Arc
- •Оператор Create ButtonPad
- •Оператор Create ButtonPads As Default
- •Оператор Create Cartographic Legend
- •Оператор Create Collection
- •Оператор Create Ellipse
- •Оператор Create Frame
- •Оператор Create Grid
- •Оператор Create Index
- •Оператор Create Legend
- •Оператор Create Line
- •Оператор Create Map
- •Оператор Create Map3D
- •Оператор Create Menu
- •Оператор Create Menu Bar
- •Оператор Create MultiPoint
- •Оператор Create Point
- •Оператор Create PrismMap
- •Оператор Create Ranges
- •Оператор Create Rect
- •Оператор Create Redistricter
- •Оператор Create Region
- •Оператор Create Report From Table
- •Оператор Create RoundRect
- •Оператор Create Styles
- •Оператор Create Table
- •Оператор Create Text
- •Оператор DDEExecute
- •Оператор DDEPoke
- •Оператор DDETerminate
- •Оператор DDETerminateAll
- •Оператор Declare Function
- •Оператор Declare Sub
- •Оператор Define
- •Оператор Delete
- •Оператор Dialog
- •Оператор Dialog Preserve
- •Оператор Dialog Remove
- •Оператор Dim
- •Оператор Do Case...End Case
- •Оператор Do...Loop
- •Оператор Drop Index
- •Оператор Drop Map
- •Оператор Drop Table
- •Оператор End MapInfo
- •Оператор End Program
- •Процедура EndHandler
- •Оператор Error
- •Оператор Exit Do
- •Оператор Exit For
- •Оператор Exit Function
- •Оператор Exit Sub
- •Оператор Export
- •Оператор Fetch
- •Оператор Find
- •Оператор Find Using
- •Предложение Font
- •Процедура ForegroundTaskSwitchHandler
- •Функция FormatDate$
- •Оператор Function...End Function
- •Оператор Get
- •Оператор Graph
- •оператор Import
- •Оператор Include
- •Оператор Input #
- •Оператор Insert
- •Функция IsPenWidthPixels()
- •Оператор Kill
- •Оператор Line Input
- •Процедура Main
- •Оператор Map
- •Оператор Menu Bar
- •Оператор Metadata
- •Оператор Note
- •Оператор Objects Check
- •Оператор Objects Clean
- •Оператор Objects Combine
- •Оператор Objects Disaggregate
- •Оператор Objects Enclose
- •Оператор Objects Erase
- •Оператор Objects Intersect
- •Оператор Objects Overlay
- •Оператор Objects Snap
- •Оператор Objects Split
- •Оператор OnError
- •Оператор Open File
- •Оператор Open Table
- •Оператор Open Window
- •Предложение Pen
- •Функция PenPattern()
- •Функция PenWidthToPoints()
- •Функция PointsToPenWidth()
- •Оператор Print
- •Оператор PrintWin
- •Оператор ProgressBar
- •Оператор Put
- •Оператор Randomize
- •Оператор ReDim
- •Оператор Register Table
- •Оператор Reload Symbols
- •Процедура RemoteMapGenHandler
- •Процедура RemoteMsgHandler
- •Оператор Rename File
- •Оператор Rename Table
- •Оператор Reproject
- •Оператор Resume
- •Оператор Rollback
- •Оператор Run Application
- •Оператор Run Command
- •Оператор Run Menu Command
- •Оператор Run Program
- •Оператор Save File
- •Оператор Save Workspace
- •Оператор Seek
- •Процедура SelChangedHandler
- •Оператор Select
- •Оператор Server Begin Transaction
- •Оператор Server Bind Column
- •Оператор Server Close
- •Оператор Server Commit
- •Оператор Server Create Map
- •Оператор Server Create Table
- •Оператор Server Create Style
- •Оператор Server Disconnect
- •Оператор Server Fetch
- •Оператор Server Refresh
- •Оператор Server Rollback
- •Оператор Server Set Map
- •Оператор Set Application Window
- •Оператор Set Area Units
- •Оператор Set Browse
- •Оператор Set Cartographic Legend
- •Оператор Set Command Info
- •Оператор Set CoordSys
- •Оператор Set Date Window
- •Оператор Set Digitizer
- •Оператор Set Distance Units
- •Оператор Set Drag Threshold
- •Оператор Set Event Processing
- •Оператор Set File TimeOut
- •Оператор Set Format
- •Оператор Set Graph
- •Оператор Set Handler
- •Оператор Set Layout
- •Оператор Set Legend
- •Оператор Set Map
- •Оператор Set Map3D
- •Оператор Set Next Document
- •Оператор Set Paper Units
- •Оператор Set PrismMap
- •Оператор Set ProgressBars
- •Оператор Set Redistricter
- •Оператор Set Resolution
- •Оператор Set Shade
- •Оператор Set Table
- •Оператор Set Target
- •Оператор Set Window
- •Оператор Shade
- •Оператор StatusBar
- •Оператор Stop
- •Оператор Sub...End Sub
- •Предложение Symbol
- •Оператор Terminate Application
- •Функция Time()
- •Процедура ToolHandler
- •Оператор Type
- •Оператор UnDim
- •Оператор Unlink
- •Оператор Update
- •Оператор Update Window
- •Оператор While...Wend
- •Процедура WinChangedHandler
- •Процедура WinClosedHandler
- •Процедура WinFocusChangedHandler
- •Оператор Objects Move
- •Оператор Objects Offset
- •Функция Offset()
- •Функция SphericalOffset()
- •Функция SphericalOffsetXY()
- •Функция CartesianOffsetXY()
- •Функция LayerInfo( )
- •Оператор Register
- •Оператор Server Create Map
- •Функция TableInfo( )
Оператор Find
Оператор Find
Назначение:
Поиск объекта или пересечения объктов таблицы на Карте.
Синтаксис:
Find address [, region ] [ Interactive ]
где
address – строковая величина, определяющая адрес или имя искомого объекта Карты; для поиска пересечения двух улиц параметр использует синтаксис:
улица && улица;
region – имя области, в которой будет осуществляться поиск.
Описание:
Оператор Find осуществляет поиск на Карте именованных элементов, заданных параметром address. Результаты поиска сохраняются в системных переменных, значения которых доступны функции
CommandInfo( ).
Если оператор включает ключевое слово Interactive и если MapBasic не может сразу обнаружить адрес, то поиск сопровождается диалоговым окном, в котором можно выбирать из нескольких "похожих" адресов.
Оператор Find может просматривать только таблицы, имеющие присоединенные графические объекты. Таблица должна быть открыта. Колонка таблицы, используемая для поиска, назначается оператором Find Using. Если оператор Find Using не был выполнен перед осуществлением поиска оператором Find, MapBasic будет вести поиск с установками, которые были заданы ранее в первом диалоге команды ЗАПРОС > НАЙТИ в MapInfo.
Оператор Find может уточнять поиск, если Вы зададите необязательный параметр region – обычно это имя области, в которой должен содержаться искомый объект. Другими словами, Вы можете просто попробовать найти город по названию (например, "Albany") в таблице городов или сузить область поиска, задав имя города и область, где он может находиться (например, "Albany", "CA"). Подробную информацию об уточнении поиска с использованием таблицы областей Вы можете найти в описании команды ЗАПРОС > НАЙТИ в Руководстве пользователя MapInfo.
Замечание: Оператор Find не отмечает найденный объект символом, так как это делает команда поиска. Если необходимо показать пользователю результаты поиска, то можно использовать функцию CreatePoint( ) или оператор Create Point (смотрите пример ниже).
Анализ результата поиска
Если применить функцию CommandInfo(CMD_INFO_FIND_RC) после выполнения оператора Find, то Вы сможете узнать результат поиска. В случае успеха координаты X и Y найденного объекта можно узнать при помощи функции CommandInfo( ) с аргументами CMD_INFO_Y и CMD_INFO_X соответственно. Если после оператора Find вызвать функцию Command Info(CMD_INFO_FIND_ROWID), то она вернет номер строки, которой соответствует найденный объект.
248 |
Справочник MapBasic |
Оператор Find
Прикладная программа на MapBasic может определить, насколько успешно сработал оператор Find, с помощью вызова функции CommandInfo(CMD_INFO_FIND_RC). Оператор Find может завершиться либо нахождением объекта, либо выбором ближайшего объекта, либо объект не будет найден. В случае точного попадания функция CommandInfo(CMD_INFO_FIND_RC) возвратит единицу. Если Вы выбрали ближайший вариант, то эта функция возвратит число большее единицы. В случае неудачи поиска функция возвращает отрицательное значение.
В следующей таблице собраны различные варианты кодов, возвращаемых функцией Command Info(CMD_INFO_FIND_RC). Каждое значение задается не более чем тремя значащими цифрами, каждая из которых представляет результат одного из трех возможных этапов поиска.
Значения единиц |
Смысл |
xx1 |
Точное совпадение. |
xx2 |
Был задействован файл сокращений. |
xx3 ( – ) |
Точного совпадения не найдено. |
xx4 ( – ) |
Не было задано имя объекта; точного совпадения не найдено. |
xx5 ( + ) |
Пользователь выбрал имя в диалоговом окне Interactive. |
Значения десятков |
Смысл |
x1x |
Не была определена сторона улицы. |
x2x ( + / – ) |
Номер дома попал в заданные пределы для данной улицы. |
x3x ( + / – ) |
Номер дома оказался вне заданных пределов для данной улицы. |
x4x ( + / – ) |
Номер дома не задан. |
x5x ( – ) |
Улицы не пересекаются. |
x6x ( – ) |
Улицы пересекаются более одного раза. |
x7x ( + ) |
Пользователь выбрал номер дома в диалоговом окне Interactive. |
Значения сотен |
Смысл |
1xx ( + / – ) |
Имя найдено только один раз вне уточняющей области. |
2xx ( – ) |
Имя найдено в нескольких регионах, но не в уточняющей |
|
области. |
3xx ( + / – ) |
Имя найдено только один раз, но уточняющая область не была |
|
задана. |
4xx ( – ) |
Имя найдено несколько раз, но уточняющая область не была |
|
задана. |
5xx ( + ) |
Имя найдено несколько раз в уточняющей области. |
6xx ( + ) |
Пользователь выбрал имя области в диалоговом окне Interactive. |
Справочник MapBasic |
249 |
Оператор Find
Определить, какая цифра находится в определенном разряде числа Вам поможет арифметический оператор Mod. Например, чтобы определить последнюю цифру в числе, используйте деление по модулю 10. Чтобы определить две последние цифры в числе, используйте деление по модулю 100 и так далее.
Разницу между точным совпадении и приблизительным можно пояснить на следующем примере. Если таблица, содержащая имена городов, содержит одну запись для города "Albany", и оператор Find Using задает поиск без уточняющей области, и оператор Find использует значение "Albany" как параметр address, то результатом будет полное совпадение. Следующая за подобной группой операторов функция CommandInfo(CMD_INFO_FIND_RC) возвратит 1 (единицу), что означает точное совпадение.
Теперь представим, что оператор Find действует в режиме использования уточняющей области; другими словами, оператор Find ожидает, что название города будет дополнено названием штата (например, "Albany", “NY"). Если программа выполнит оператор Find со значениями “Albany" как адреса и нулевой строки в качестве уточняющего названия штата, то, с технической точки зрения, точного совпадения не будет, потому что MapBasic ожидал явного задания уточняющей области.
Однако, так как город "Albany" упоминается только в одной записи таблицы, то MapBasic найдет эту запись. Следующая за подобной группой операторов функция Command Info(CMD_INFO_FIND_RC) возвратит 301. Цифра 1 обозначает совпадение адреса с названием города из таблицы, а цифра 3 означает частичный успех при поиске уточняющей области.
Если таблица улиц содержит запись для улицы "Main St" и оператор Find пытается найти улицу "Main Street", MapBasic оценит результат как частичное совпадение (принимая во внимание использование файла сокращений, смотрите также описание Find Using). Строго говоря, строки "Main Street" и "Main St" не совпадают. Однако MapBasic определяет равенство этих строк, применяя подстановки из файла сокращений (MAPINFOW.ABB). Следующая за подобной группой операторов функция CommandInfo(CMD_INFO_FIND_RC) возвратит 2.
Если операция поиска сопровождается диалогом, в котором пользователь вводит свой текст, то код возврата будет иметь 1 (единицу) в разряде миллионов. Более подробная информация о геокодировании приведена в Справочнике MapInfo.
Пример:
Include ”mapbasic.def”
Dim x, y As Float, win_id As Integer
Open Table ”states” Interactive Map From States
win_id = FrontWindow()
Find Using states(state) Find ”NY”
If CommandInfo(CMD_INFO_FIND_RC) >= 1 Then x = CommandInfo(CMD_INFO_X)
y = CommandInfo(CMD_INFO_Y) Set Map
|
Window win_id |
|
Center (x, y) |
250 |
Справочник MapBasic |
Оператор Find
’Теперь содадим объект для маркировки найденого.
’Точечный объект помещается на Косметическом слое. Insert Into
WindowInfo( win_id, WIN_INFO_TABLE) (Object)
Values ( CreatePoint(x, y) )
Else
Note ”Объект не найден.”
End If
Смотрите также:
Find Using
Справочник MapBasic |
251 |