- •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( )
Оператор Call
Оператор Call
Назначение:
Вызывает sub-процедуру или внешнюю процедуру (DLL, XCMD или RPC).
Предупреждение:
Вы не можете использовать этот оператор в окне MapBasic.
Синтаксис:
Call subproc [ ( [ parameter ] [, ... ] ) ]
где
subproc – имя подпрограммы;
parameter – параметр, передающий подпрограмме значение из основного модуля.
Описание:
Оператор Call используется для вызова подпрограммы. Подпрограммой может быть процедура, написанная на MapBasic, первым оператором которой является оператор Sub. Так же с помощью оператора Call в Windows может быть вызвана процедура из динамической библиотеки (DLL).
Аналогично, прикладная программа в MapInfo для Macintosh может вызывать внешние XCMDкоманды. Смотрите описание оператора Declare Sub для подробной информации о внешних процедурах.
Если вызывается sub-процедура, MapBasic начинает выполнять операторы подпрограммы, пока не встретит оператор End Sub или Exit Sub. Выполнение возвращается в программу, откуда был произведен вызов, к следующему оператору после Call. Оператор Call может обращаться только к тем процедурам, которые являются частью текста программы.
Программа MapBasic должна в главной процедуре содержать оператор Declare Sub, объявляющий имя процедуры и список ее параметров перед ее вызовом. Это требование должно выполняться как по отношению к процедурам, организованным оператором Sub, так и к внешним процедурам (DLL и XCMD).
Передача значений параметров
Подпрограмма может не иметь параметров, тогда вызов такой процедуры может выглядеть так:
Call subroutine
или
Call subroutine(_)
Если sub-процедура имеет параметры, то они могут быть объявлены двумя способами: ссылкой ("by reference") или значением ("by value"). По умолчанию параметр объявляется как "ссылка". Если параметр подпрограммы был определен таким образом, то при вызове sub-процедуры соответствующим параметром вызова должна быть переменная. Такой параметр не только передает значение переменной в процедуру, но и возвращает значение обратно. В процедуре значение параметра может быть изменено, и это измененное значение будет присвоено переменной, выступавшей в роли параметра вызова, после того, как оператор Call вернет управление в вызывавшую программу.
Объявление величины параметра как значения осуществляется при помощи ключевого слова ByVal перед именем параметра в списке операторов Sub и Declare Sub. Если один из параметров
Справочник MapBasic |
57 |
Оператор Call
подпрограммы был определен таким образом, то при вызове sub-процедуры соответствующим параметром вызова может быть как постоянная величина, так и переменная или выражение. Однако в этом случае новое значение параметра не может быть возвращено обратно той же переменной.
Sub-процедуры могут пересылать как простые параметры, так и массивы переменных. При этом в списке вызова Вы пишете только имя массива без скобок.
Вызов внешних процедур
Если оператор Call вызвал процедуру DLL, то MapBasic выполняет процедуру до тех пор, пока она не вернет управление. Сама процедура находится в отдельном файле (например, "KERNEL.EXE"). Этот файл с внешней процедурой должен быть доступен в то время, как MapBasic выполняет внешний вызов.
Аналогично, если оператор Call вызывает XCMD, то файл, содержащий XCMD, должен быть доступным.
В вызове XCMD-команд не могут участвовать массивы переменных и переменные сложных типов, составленных оператором Type, в качестве параметров.
Пример:
Подпрограмма Cube вычисляет куб (третью степень) числа. Она имеет два параметра: первый содержит само число, второй – результат.
Declare Sub Cube(ByVal original As Float,cubed As Float)
Dim x, result As Float
Call Cube( 2, result)
' переменная result равна 8 (2 x 2 x 2) x = 1
Call Cube( x + 2, result)
' переменная result равна 27 (3 x 3 x 3)
End Program
Sub Cube (ByVal original As Float, cubed As Float)
'Параметр "original"_– число,
'параметр "cubed"_– результат вычисления.
cubed = original ^ 3 End Sub
Смотрите также:
Declare Sub, Exit Sub, Global, Sub... End Sub
58 |
Справочник MapBasic |
Функция CartesianArea( )
Функция CartesianArea( )
Назначение:
Возвращает площадь, используя вычисления в системе координат Широта/Долгота. Используется декартовый алгоритм вычислений.
Синтаксис:
CartesianArea( expr, unit_name )
unit_name это строковая величина, имя единиц измерения площади. (sq km”)
Возвращаемое значение:
Величина с плавающей запятой
Описание:
Функция CartesianArea( ) возвращает площадь географического объекта, указанного выражением obj_expr.
Функция возвращает измеренную площадь, в единицах, определенных параметром unit_name; например, чтобы получить площадь в акрах, укажите ”acre” в качестве параметра unit_name. Смотрите описание оператора Set Area Units, где описаны возможные единицы измерения.
Функция CartesianArea() всегда будет возвращать значение площади, рассчитанное по декартовым алгоритмам. Величина -1 будет возвращаться для данных в плановых координатах, поскольку такие данные не могут быть конвертированы в Широту/Долготу. Возвращаются приближенные результаты в том случае, если используется скругленный прямоугольник. MapBasic рассчитывает площадь скругленного прямоугольника как если бы объект был настоящим прямоугольником.
Только полигоны, эллипсы, прямоугольники и скругленные прямоугольники имеют площади. По определению, значение функции CartesianArea( ) для точки, дуги, текста, линии или полилинии это ноль. Функция CartesianArea( ) возвращает приблизительные результаты, когда применяется к скругленным прямоугольникам. MapBasic вычисляет площадь скругленного прямоугольника как если бы объект был настоящим прямоугольником.
Примеры:
Следующие примеры показывают, как функция CartesianArea( ) может вычислять площадь одиночного картографического объекта. Обратите внимание, что выражение tablename.obj (как в states.obj) представляет географический объект текущей строки в указанной таблице.
Dim f_sq_miles As Float
Open Table ”states”
Fetch First From states
f_sq_miles = CartesianArea(states.obj, ”sq mi”)
Вы можете также использовать функцию CartesianArea( ) внутри оператора SQL Select как показано в следующем примере.
Select lakes, CartesianArea(obj, ”sq km”)
From lakes Into results
Смотрите также:
Функция Area (), функция SphericalArea ()
Справочник MapBasic |
59 |
Функция CartesianBuffer( )
Функция CartesianBuffer( )
Назначение:
Возвращает объект типа полигон, представляющий буферную зону (площадь внутри указанного расстояния от существующего объекта).
Синтаксис:
CartesianBuffer ( inputobject, resolution, width, unit_name ) inputobject это выражение объекта
resolution это короткое целое, представляющее число узлов для круга в каждом углу
width это величина с плавающей запятой, представляющая радиус буфера; если ширина отрицательна, и если входящий объект является закрытым, то возвращаемый объект будет по размерам меньше исходного
unit_name это имя единиц измерения расстояния (наприер, ”mi” для милей, ”km” для километров) используемых для измерения ширины
Возвращаемое значение:
Объект типа полигон
Описание:
Функция CartesianBuffer( ) возвращает полигон, представляющий буферную зону.
Функция CartesianBuffer( ) оперирует с одним объектом одновременно. Для создания буфера вокруг ряда объектов, используйте оператор Create Object As Buffer.
Функция CartesianBuffer( ) будет рассчитывать буферную зону, в предположении, что объект спроецирован на плоскость и используя ширину width для расчета декартового расстояния буферной зоны вокруг объекта. Если inputobject в проекции Широта/Долгота, то сферические вычисления будут использоваться независимо от того, какая функция, связанная с буфером будет применяться. Если inputobject в плановых координатах, то будут использоваться декартовые вычисления, независимо от того, какая буферная функция вызывается.
Пример :
Следующая программа создает линейный объект, затем создает буфер вокруг него. Буферная зона занимает 10 миль во всех направлениях вокруг линии.
Dim o_line, o_region As Object
o_line = CreateLine( 73.5, 42.5, 73.6, 42.8) o_region = CartesianBuffer( o_line, 20, 10, ”mi”)
Смотрите также:
Функция Buffer (). Создание объектов. Функция SphericalBuffer ()
60 |
Справочник MapBasic |
Функция CartesianDistance ( )
Функция CartesianDistance ( )
Назначение:
Возвращает расстояние между двумя точками.
Синтаксис:
CartesianDistance ( x1 , y1 , x2 , y2 , unit_name ) x1 и x2 это x-координаты (долгота)
y1 и y2 это y-координаты (широта)
unit_name это строковая величина, соответствующая имени единиц измерения расстояния (например, ”km”)
Возвращаемое значение :
Вещественное
Описание:
Функция CartesianDistance( ) вычисляет расстояние между двумя точками.
Функция возвращает измеренное расстояние в единицах, указанных параметром unit_name; например, что бы получить расстояние в милях, укажите ”mi” как параметр unit_name . Смотрите оператор Set Distance Units, там полный список возможных единиц измерения.
Функция CartesianDistance( ) всегда возвращает значение, используя для расчетов декартовый алгоритм. Будет возвращено значение -1 для данных в системе координат Широта/Долгота, поскольку система Широта/Долгота не проективная и не декартовая.
Параметры x- и y-координат должны использовать текущую систему координат MapBasic. По умолчанию, MapInfo использует координатную систему долгота/широта. Вы можете поменять систему координат MapBasic используя оператор Set CoordSys.
Если текущая система координат географическая, CartesianDistance( ) возвращает расстояние между двумя точками, измеренное по большой дуге. Расстояние по большой дуге это кратчайшее расстояние на сфере между двумя точками.
Если текущая система координат плановая, то CartesianDistance( ) возвращает декартовое расстояние.
Пример:
Dim dist, start_x, start_y, end_x, end_y As Float
Open Table ”cities”
Fetch First From cities
start_x = CentroidX(cities.obj) start_y = CentroidY(cities.obj) Fetch Next From cities
end_x = CentroidX(cities.obj) end_y = CentroidY(cities.obj)
dist = CartesianDistance(start_x,start_y,end_x,end_y,”mi”)
Смотрите также:
Математические функции,
Функция CartesianDistance (), Функция Distance ()
Справочник MapBasic |
61 |
Функция CartesianObjectLen( )
Функция CartesianObjectLen( )
Назначение:
Возвращает географическую длиту линии или полилинии.
Синтаксис:
CartesianObjectLen( expr , unit_name ) obj_expr выражение объекта
unit_name это строковая величина, представляющая имя единиц измерения расстояния (например, ”km”)
Возвращаемое значение:
Вещественное
Описание:
Функция CartesianObjectLen( ) возвращает длину объекта. Обратите внимание, что только объекты типа линия и полилиния имеют длину большую чем ноль; для измерения периметра полигонов, эллипсов и прямоугольников, используйте функцию Perimeter( ).
Функция CartesianObjectLen( ) всегда будет возвращать значение, используя декартовый алгоритм. Величина -1 будет возвращаться для данных в системе Широта/Долгота, поскольку Широта/ Долгота не проективна и не декартова.
Функция CartesianObjectLen( ) возвращает длину, измеренную в единицах длины, определенных параметром unit_name; например, для получения длины в милях, укажите ”mi” как параметр unit_name. Смотрите описание оператора Set Distance Units там есть список возможных типов единиц измерения длины.
Пример:
Dim geogr_length As Float
Open Table ”streets”
Fetch First From streets
geogr_length = CartesianObjectLen(streets.obj, ”mi”)
’geogr_length now represents the length of the
’street segment, in miles
Смотрите также:
Запросы к объектам карты, функция SphericalObjectLen (), функция CartesianObjectLen(), функция ObjectLen()
62 |
Справочник MapBasic |
Функция CartesianPerimeter( )
Функция CartesianPerimeter( )
Назначение
Возвращает периметр графических объектов.
Синтаксис
CartesianPerimeter( obj_expr , unit_name ) obj_expr это выражение для объекта
unit_name это строковая величина - имя единицы измерения расстояния (например, ”km”)
Возвращаемое значение
Вещественное
Описание
Функция CartesianPerimeter( ) вычисляет периметр объекта obj_expr object. Функция Perimeter( ) определена для следующих типов объектов: эллипсов, прямоугольников, скругленных прямоугольников и полигонов. Другие типы объектов имеют периметр равный нулю.
Функция CartesianPerimeter( ) всегда будет возвращать значение, вычисленное по декартовому алгоритму. Величина -1 будет возвращаться для денных в системе Широта/Долгота, поскольку Широта/Долгота не проективна и не декартова.
Возвращаемое значение длины периметра осуществляется в единицах длины, определенных параметром unit_name; например, для получения длины в милях, укажите ”mi” в качестве параметра unit_name. Смотрите описание оператора Set Distance Units там есть полный список возможных единиц измерения длины.
Приближенный результат возвращается при измерении периметра скругленного прямоугольника. MapBasic вычисляет периметр скругленного прямоугольника как если бы он не был скругленным.
Пример
Следующий пример показывает как Вы можете использовать функцию CartesianPerimeter( ) для определения периметра географического объекта.
Dim perim As Float Open Table ”world” Fetch First From world
perim = CartesianPerimeter(world.obj, ”km”)
’The variable perim now contains the perimeter of the polygon that’s attached to
’the first record in the World table.
Вы можете также использовать функцию CartesianPerimeter( ) внутри оператора SQL Select. Следующий оператор Select выбирает информацию из таблицы States, и хранит результаты во временной таблице, называемой Results. Поскольку оператор Select включает функцию Cartesian Perimeter( ), таблица Results будет включать колонку, показывающую периметр каждого штата.
Open Table ”states”
Select state, CartesianPerimeter(obj, ”mi”)
From states
Into results
Смотрите также:
Функция CartesianPerimeter (), функция SphericalPerimeter (), функция Perimeter ()
Справочник MapBasic |
63 |
Функция Centroid( )
Функция Centroid( )
Назначение:
Возвращает центральную точку объекта (центроид).
Синтаксис:
Centroid(obj_expr)
где
obj_expr – объектное выражение
Величина, полученная в результате:
Точка. Величина типа Object.
Описание:
Функция Centroid(_) возвращает точечный объект, расположенный в центре объекта, представленного параметром obj_expr.
Замечание: В MapInfo области не всегда имеют центроид в центре объекта. Вы всегда можете передвинуть центроид области в нужное место на изменяемом слое Карты в режиме изменения формы. От расположения центроида области зависит расположение подписей, полученных в результате автоподписывания, точек геокодирования и расположения графиков и диаграмм на тематическом слое Карты.
Если объект obj_expr является точечным, то функция его и вернет.
Если объект – линия, то в результате получится точка между ее концами. Если параметр obj_expr представляет объект типа "полилиния", то Centroid(_) возвращает середину среднего сегмента полилинии.
Для других типов объектов функция возвращает точку с координатами действительного центроида. Если объект прямоугольник, дуга, текст или эллипс, то точка будет равноудалена между верхней и нижней границами, и между правой и левой границами. Для объекта типа "область" центроид всегда лежит внутри объекта, но не обязательно находится в геометрическом центре объекта.
Пример :
Dim pos As Object
Open Table ”world”
Fetch First From world
pos = Centroid(world.obj)
Смотрите также:
CentroidX( ), CentroidY( )
64 |
Справочник MapBasic |
Функция CentroidX( )
Функция CentroidX( )
Назначение:
Возвращает координату центральной точки (центроида) по оси X.
Синтаксис:
CentroidX(obj_expr)
где
obj_expr – объектное выражение.
Величина, полученная в результате:
Вещественное число. Величина типа Float.
Описание:
Функция CentroidX(_) возвращает X-координату (или долготу) центральной точки объекта – точечного объекта, который можно получить, используя функцию Centroid(_).
Координаты возвращаются относительно действующей координатной системы, которая была назначена до этого оператором Set CoordSys. По умолчанию MapBasic использует систему широта/ долгота.
Пример 1:
Функция CentroidX(_) возвращает долготу одного географического объекта.
Dim x As Float
Open Table "world.tab"
Fetch First From world
x = CentroidX(world.obj)
Note "Долгота: " + x + " град."
Пример 2:
В этом примере продемонстрировано использование функций CentroidX(_) и CentroidY(_) в операторе Select при формировании SQL-запроса. В результате нижеприведенных операторов получается временная таблица из трех колонок, где первая содержит названия стран, а следующие две содержат X- и Y-координаты (долготу и широту) центроида каждой страны.
Open Table "world"
Select country, CentroidX(obj), CentroidY(obj)
From world Into results
Смотрите также:
Centroid(_), CentroidY(_), Set CoordSys
Справочник MapBasic |
65 |
Функция CentroidY( )
Функция CentroidY( )
Назначение:
Возвращает координату центральной точки (центроида) по оси Y.
Синтаксис:
CentroidY(obj_expr)
где
obj_expr – объектное выражение.
Величина, полученная в результате:
Вещественное число. Величина типа Float.
Описание:
Функция CentroidY(_) возвращает Y-координату (или широту) центральной точки объекта – точечного объекта, который можно получить, используя функцию Centroid(_).
Координаты возвращаются относительно действующей координатной системы, которая была назначена перед этим оператором Set CoordSys. По умолчанию MapBasic использует систему широта/долгота.
Пример:
Функция CentroidY(_) возвращает широту одного географического объекта.
Dim y As Float
Open Table "world"
Fetch First From world
y = CentroidY(world.obj)
Смотрите также:
Centroid(_), CentroidX(_), Set CoordSys
66 |
Справочник MapBasic |