- •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( )
Оператор ReDim
Оператор ReDim
Назначение:
Изменяет размерность массива.
Синтаксис:
ReDim var_name (newsize) [, ... ]
где
var_name – имя массива локальных или глобальных переменных; newsize – целое число, задающее новую размерность:
в16-битной версии Windows от 0 до 7000 включительно;
вMacintosh и 32-битных Windows от 0 до 32767 включительно.
Описание:
Оператор ReDim изменяет размерность (то есть количество элементов) одного или более уже объявленных массивов. Имя массива переменных, заданное в параметре var_name, должно быть до этого объявлено в операторе Dim или Global. Оператор ReDim не применим к переменным, которые не являются массивами.
Если параметр newsize, задающий новое значение размерности, не задан, то функция ReDim уменьшает размерность массива до нуля. Массив с нулевой размерностью занимает минимально возможное место в памяти.
Надо учитывать, что при изменении размерности массива все значения, присвоенные элементам массива, теряются.
В отличие от других BASIC-языков, MapBasic не позволяет задавать произвольный номер первого элемента массива. Другими словами, первый элемент массива в MapBasic всегда имеет номер 1 (единица).
Пример 1:
Dim names_list(10) As String, cur_size As Integer
'
'Следующий оператор считывает значение
'размерности массива, оператор ReDim увеличивает
'это значение на 10
'
cur_size = Ubound(names_list)
ReDim names_list(cur_size + 10)
'
'Следующий оператор ReDims обнуляет размерность
'нашего массива. Предположительно, этот массив больше
'не понадобится и обнуление его размерности
'сэкономит нам ресурсы памяти.
'
ReDim names_list(0)
Пример 2:
Оператор ReDim может применяться к массивам переменных сложного типа, составленным при помощи оператора Type, и к массивам, которые являются элементами переменных сложного типа.
426 |
Справочник MapBasic |
Оператор ReDim
Type customer name As String
serial_nums(0) As Integer End Type
Dim new_customers(1) As customer
'
'Сначала увеличим размерность массива new_customers
'до пяти элементов
'
ReDim new_customers(5)
'
'Теперь изменим размерность массива serial_nums,
'который является элементом массива new_customers
ReDim new_customers(1).serial_nums(10)
Смотрите также:
Dim, Global, UBound( )
Справочник MapBasic |
427 |
Оператор Register Table
Оператор Register Table
Назначение
Создает таблицу MapInfo Professional из списка, базы данных, текстового файла, растра или грид0файла.
Синтаксис
Register Table source_file { Type “NATIVE” |
Type “DBF” [ Charset char_set ] |
Type “ASCII” [ Delimiter delim_char ] [ Titles ] [ CharSet char_set ] | Type “WKS” [ Titles ] [ Range range_name ] |
Type “XLS” [ Titles ] [ Range range_name ] |
Type “Access” Table table_name [ Password pwd ] [ CharSet char_set ] } Type ODBC
Connection { Handle ConnectionNumber | ConnectionString } Toolkit toolkitname
Cache { On | OFF } Type "GRID" |
Type "RASTER" [ ControlPoints
( MapX1 , MapY1) ( RasterX1 , RasterY1),
( MapX2 , MapY2) ( RasterX2, RasterY2),
( MapX3 , MapY3) ( RasterX3, RasterY3) [, ... ]
]
[ CoordSys ... ]
Type "SHAPEFILE" [ Charset char_set ] CoordSys... [ PersistentCache { On |Off } ] [Symbol...] [ Linestyle Pen(...)] [ Regionstyle Pen(...) Brush(...)]
[ Interactive ]
[ Into destination_file ]
ControlPoints дополнительное предложение, но может быть определено если тип данных Grid или Raster. Если ControlPoints указываются, то надо задать как минимум 3 пары точек координат Map или Raster, которые используются для регистрации изображения. Если ControlPoints указываются, то они будут использоваться вместо любых контрольных точек, которые уже ассоциировались с изображением или ассоциировались с регистрационным файлом World.
Предложение CoordSys дополнительное, но может быть определено если тип данных Grid или Raster. Если CoordSys определено, то им будут переписаны любые системы координат, ассоциированные с изображением. Это полезно когда регистрируется растр, имеющий ассоциированный регистрационный файл World.
В случае работы с шейп файлами, предложение CoordSys является обязательным. Компиллятор выдаст ошибку если это предложение будет пропущено.
Ключевое слово Interactive является дополнительным, но может быть определено, если тип данных это Grid или Raster. Если ключевое слово Interactive определено, пользователь получит подсказку при пропуске контрольной точки или информации о проекции. Если ключевое слово Interactive не определено, то .TAB файл будет генерироваться без интерактивного ввода пользователем, а сам файл будет создаваться таким образом, как и при выборе в диалоге "Открыть таблицу" команды ФАЙЛ>ОТКРЫТЬ при открытии растра.
428 |
Справочник MapBasic |
Оператор Register Table
source_file - строка определяющая имя существующей базы данных, электронной таблицы или текстового файла. Если Вы регистрируете таблицу Access, этот аргумент должен идентифицировать доступную базу данных Access.
char_set is - название установленного шрифта; смотрите обсуждение оператора CharSet.
delim_char - знак разделителя между значениями полей таблицы (только для текстовых ASCIIфайлов). Если в файле используется Tab в качестве разделителя, укажите 9. Если используется запятая, укажите 44.
range_name - строка с именем области электронной таблицы (например, “MyTable”) или с ссылкой на ячейки (например, в Excel ячейки могут быть заданы как “Sheet1!R1C1:R9C6” или как “Sheet1!A1:F9”).
table_name - строка, определяющая имя таблицы Access.
pwd - пароль на уровне базы данных, определяемый при включении защиты базы данных.
destination_file - имя будущей таблицы MapInfo table (.TAB file). Строка может включать в себя путь, если же он не указан, то файл будет строиться в той же директории, где и исходный файл.
ConnectionNumber целое, идентифицирующее существующее соединение с базой данных.
ConnectionString строка используемая для связи с сервером базы данных. Смотрите описание функции Server Connect.
toolkitname это или “ODBC” или “ORAINET.”
SQLQuery это SQL Запрос, используемый для определения таблицы MapInfo.
Описание
Перед тем, как использовать в MapInfo файлы “неродных” форматов (например, dBASE файл), Вы должны их зарегистрировать. Оператор Register Table приводит к тому, что MapInfo проверяет, может ли использоваться этот формат. Далее MapInfo заготавливает для него файлы-компоненты таблицы (filename.TAB, и др.). Как только оператор Register Table создаст файлы-компоненты, Вы можете открывать таблицу и редактировать ее данные в Списке или на Карте.
Оператор Register Table не копирует и не изменяет оригинал файла данных. Вместо этого, он проверяет данные, определяет типы данных в колонках и создает отдельную таблицу.
Замечание: Таблица не открывается автоматически. Для открытия таблицы надо использовать оператор Open Table.
Каждый файл данных должен быть зарегистрирован только раз. Так как при регистрации создаются файлы-компоненты, то при следующем сеансе работы MapInfo может просто открывать зарегистрированную ранее таблицу (оператор Open), а не регистрировать файл заново оператор Reg ister Table.
Предложение Type задает формат, в котором был создан файл данных. За словом Type, может следовать одна из следующих строк: NATIVE, DBF, ASCII, WKS, XLS или Access.
Предложение CharSet является стандартным предложением и задает кодировку, в которой был создан файл-источник, например, “MacRoman” или “WindowsLatin1”. Если этого предложения нет в операторе, MapBasic будет использовать текущую кодировку системы, в которой Вы работаете.
Предложение Delimiter задает знак разделителя между значениями полей для текстовых файлов. По умолчанию принимается символ табуляции. Предложение Titles определяет первую строку данных как названия полей в таблице MapInfo. Предложение Range определяет именованную область из
Справочник MapBasic |
429 |
Оператор Register Table
исходного файла как базу данных (для электронных таблиц). Предложение Into задает в виде строки имя файла .TAB и расположение на диске. Если предложения в операторе нет, имя файла таблицы будет таким же, как имя файла-источника и располагаться он должен в том же каталоге. В случае, если для диска, на котором расположен файл-источник, разрешено только чтение (например, CD– ROM), то файл таблицы будет сохранен где-то в другом месте, где запись разрешена.
Оператор Register Table не может быть использован для построения таблиц из файлов с растровым изображением (например, Photo.GIF). Чтобы из программы создать таблицу, основанную на растровом изображении (например, Photo.GIF), нужно использовать операторы ввода/вывода, такие, как Open File и Print #. Пример построения таблицы на основе растрового файла приводится в главе 7 Руководства пользователя MapBasic.
PersistentCache On определяет сохраняются ли файлы .MAP и .ID, которые генерируются во время открытия шейп файлов, на жестком диске после закрытия таблицы или нет. Если PersistentCache установлено на Off, то эти файлы .MAP и .ID будут удалены после закрытия таблицы, и будут генерироваться каждый раз при открытии таблицы.
Symbol (...) предложение определяющее стиль символа, применяемого для типа точечных объектов, создаваемых их шейп файла
Linestyle Pen (...) предложение определяющее стиль линии, применяемый для линейных типов объектов, создаваемых из шейп файлов
Regionstyle Pen (...) Brush(...) cпредложение определяющее стиль линии и стиль заливки применяемый для регионов, создаваемых из шейп файлов
Регистрация таблиц Access
При регистрации таблицы Access, MI Pro проверяет колонку счетчик с уникальным индексом. Если колонка0счетчик существует,то MI Pro зарегистрирует эту колонку в .TAB файле. Эта колонка только для чтения.
Если таблица Access не имеет колонки0счетчика, то MI Pro изменит таблицу Access путем добавления колонки с именем MAPINFO_ID имеющей тип данных counter. В этом случае колонка0счетчик не будет отображаться в окне списка MapInfo.
Внимание: Не пытайтесь изменить каким0либо образом колонку0счетчик. Это может происходить только автоматически средствами самого MapInfo.
Типы данных Access транслируются в аналогичные или близкие по сути типы данных MapInfo. Специальные типы данных Acces, такие как OLE объекты и бинарные поля, не будут редактируемыми в MapInfo Professional.
Регистрация таблиц ODBC
Перед сеансом прямого доступа к таблице из удаленных баз данных, настоятельно рекомендуется открыть таблицу карты (например, canada.tab) для таблицы базы данных. Если Вы не откроете таблицу карты, то сразу будет загружена полностью таблица базы данных, а это может занять много времени.
Откройте таблицу с картой и подберите необходимый масштаб окна, показав тот кайон, для которого Вам надо подгрузить данные из удалененой базы данных. Например, если Вы хотите загрузить записи, касающиеся провинции Онтарио, то сначала откройте в окне карту самой провинции Онтарио, подобрав необходимый масштаб. В результате получится, что из базы
430 |
Справочник MapBasic |
Оператор Register Table
данных к Вам поступят только те данные, которые относятся к минимальному описывающему прямоугольнику 0 окну Карты, а не вся таблица. Так экономится время на траффик.
Ниже следует список известных проблем/вопросов, связанных с прямым доступом:
•Каждая таблица должна иметь одну уникальную ключевую таблицу.
•FastEdit не поддерживается.
•Для MS ACCESS, если ключ символьный, не будут показаны строки, где значение ключа меньше чем полная ширина колонки, например, если ключ это char(5) то значение 'aaaa' будет выглядеть как удаленная запись.
•Для прямого доступа, окошко ReadOnly в диалоге сохранения таблицы будет серого цвета (неактивно).
•Изменения, сделанные другим пользователем не видны пока браузер прокручивается или обновляется. Вставки, сделанные другим пользователем не видны у Вас пока: 1). Поиск в МОП не вернет новую запись или 2). Команда PACK запущена.
•Возникнут проблемы, если клиент объединил (через меню SQL Select или MapBasic) 2 или более таблиц SPATIALWARE, которые хранятся в различных системах координат. Это не эффективный путь работы (лучше сделать объединение в операторе SQL, который определяет таблицу) но все равно это остается проблемой текущей версии.
•Таблицы Oracle 7, которые индексируются десятичным полем размером более 8 байт приведут к к "вылету" MI Pro при редактировании.
•Если оператор Cache имеет значение OFF перед соединением, то будет сгенерировано сообщение об ошибке при компиляции.
Регистрация шейп файлов
Когда регистрируются шейп файлы, то они могут открываться в MapInfo Professional исключительно в режиме "только для чтения". Поскольку шейп файл не содержит в себе информации о системе координат, надо определить предложение CoorSys. Также возможно определить стили оформления объектов для отображения в MapInfo Professional. Информация о проекции и стилях хранится как метаданные в TAB файле.
Пример1
Register Table ”c:\mapinfo\data\rpt23.dbf”
Type ”DBF”
Into ”Report23”
Open Table ”c:\mapinfo\data\Report23”
Пример2
Open Table ”C:\Data\CANADA\Canada.tab” Interactive Map From Canada
set map redraw off
Set Map Zoom 1000 Units ”mi” set map redraw on
Register Table ”odbc_cancaps”
TYPE ODBC |
|
TABLE ”Select * |
From informix.can_caps” |
CONNECTION |
|
DSN=ius_adak;UID=informix;PWD=informix;DATABASE=sw;HOST=adak; |
|
SERVER=adak_tli;SERVICE=sqlexec;PROTOCOL=onsoctcp;” |
|
Into |
|
”D:\MI\odbc_cancaps.TAB” |
|
Open Table ”D:\MI\odbc_cancaps.TAB” Interactive |
|
Map From odbc_cancaps |
|
Справочник MapBasic |
431 |
Оператор Register Table
Пример3
Регистрация полностью геопривязанного изображения (обработчик растра может вернуть как
минимум 3 контрольные точки и проекцию)
Register Table "GeoRef.tif" type "raster" into "GeoRef.TAB"
Пример4
Регистрация растра с ассоциированным World файлом, содержащим информацию о
контрольных точках, но без проекции.
Register Table "RasterWithWorld.tif" type "raster" coordsys earth projection 9, 62, "m", 96, 23, 29.5, 45.5, 0, 0 into "RasterWithWorld.TAB"
Пример5
Регистрация растра, который не имеет контрольной точки или информации о проекции.
Register Table "NoRegistration.BMP" type "raster" controlpoints (1000,2000) (1,2), (2000,3000) (2, 3), (5000,6000) (5,6) coordsys earth projection 9, 62, "m", 96, 23, 29.5, 45.5, 0, 0 into "NoRegistration.tab"
Пример6
Пример регистрации шейп файла.
Register Table "C:\Shapefiles\CNTYLN.SHP" TYPE SHAPEFILE Charset "WindowsLatin1" CoordSys Earth Projection 1, 33 PersistentCache Off linestyle Pen (2,26,16711935) Into "C:\Temp\CNTYLN.TAB"
Open Table "C:\Temp\CNTYLN.TAB" Interactive Map From CNTYLN
Смотрите также
Open Table, Create Table
432 |
Справочник MapBasic |