Дмитрий Кузан дата публикации 24-04-2003 18:49 Просто и ясно о MapX и Delphi.
Доброе время суток, уважаемые коллеги. Этой статьей я открываю (или продолжаю) цикл статей посвященный использованию картографии в проектах Delphi. Предыдущие статьи касались в основном использования интегрированной картографии MapInfo, данная статья будет направлена на изучения ActiveX компонента MapX предназначенного для встраивания в свои приложения элементов картографии.
MapX - это картографический ActiveX компонент, который можно использовать в языках программирования Visual Basic, Delphi, Visual C++, PowerBuilder и др.
Используя карты, Вы можете отображать информацию в виде, легко понятном каждому. Карты более информативны, чем диаграммы и графики, и их интерпретация более наглядная и быстрая по сравнению с таблицами.
MapX имеет обширный набор функций и позволяет разработчикам использовать в своих программах средства анализа и управления пространственными данными.
МарХ основан на тех же картографических технологиях, которые используются в других продуктах MapInfo, таких как MapInfo Professional и Microsoft Map.
Обзор основных возможностей : |
- Разработчик получает доступ к выполнению различных операций с картографическими данными, типа - нахождение пересечений и вложенности объектов; построение буферов; объединение объектов и т.д.
- Создание тематических карт - мощное средство анализа и наглядного представления пространственных данных. Тематические карты выявляют связи между объектами и тенденции в развитии явлений. Возможно создание тематических карт следующими способами: картограммы, картодиаграммы, способы значков и плотности точек, метод качественного фона, построение непрерывной поверхности по неравномерно распределенным значениям.
- Редактирование объектов. На электронной карте можно интерактивно создавать новые объекты, а также их изменять и удалять.
- Визуальный выбор. Используя стандартные средства, можно выбирать элементы, попадающие в прямоугольник, произвольный полигон и окружность.
- Управление слоями. Имеются функции позволяющие оперировать слоями географической информации, назначать способы отображения объектов и формирования подписей, изменять масштаб карты, управлять видимостью слоя, определять порядок показа и масштабный эффект для слоев картографических объектов и подписей.
- Анимационный слой динамически отображает движущиеся объекты, например, в приложениях работающих с информацией от GPS-приемников в режиме реального времени.
- Поддержка растровых изображений позволяет использовать спутниковые и аэрофотоснимки, сканированные карты и другие изображения как не редактируемые слои карты.
- Поддержка стандартного языка запросов - SQL.
- Доступ к серверу пространственных данных SSA - новое мощное средство, предоставляющее доступ к информации, хранящейся на удаленном сервере пространственных данных.
Помимо основных возможностей MapX постоянно находится в развитии и от версии к версии происходит модернизация и наращивания возможностей, так например в версии 4.5 были добавлены и улучшены следующие возможности:
- Поддержка файлов поверхности и прозрачных растров (TrueСolor).
- Автоматическая регистрация растровых изображений.
- Поддержка технологий для связывания данных ADO и RDO.
- Поддержка серверов баз данных DB2 и Oracle 8.1.6.
- Кэширование картографических данных расположенных на сервере.
- Разграничение прав доступа к картографической информации.
- Инструменты для создания и редактирования объектов карты. Добавлены четыре новых инструмента создания объектов.
- Стандартные диалоги MapX на русском языке.
- Создание новых видов курсоров.
- Всплывающие подсказки при выборе обектов.
- Поддержка векторных символов совместимых с MapInfo 3.0
Значительно улучшены и/или расширены следующие возможности MapX
- Скорость отображения карты.
- Производительность повторяющихся операций со слоями.
- Расширены возможности работы с геословарем.
- Быстрый доступ к объектам карты для редактирования объектов и полей атрибутов.
- Поддержка импорта большего числа графических форматов, включая GIF, JPEG, и PNG.
- Методы построения и оформления тематических карт (картограммы, картодиаграммы и др.) .
- Поддержка методов преобразования координат NADCON, Molodensky и Bursa Wolfe (Начиная с версии MapX 3.5)
- Максимальное число узлов для регионов и полилиний увеличено до 1,048,572 для одного региона или полилинии.
Вот в принципе возможности MapX :
В данной статье речь будет идти о MapX версии 5.0 так как на текущий момент времени оная присутствовала у меня в наличии.
После установки дистрибутива MapX на компьютер нужно установить MapX в Delphi.
Следующие шаги устанавливают МарХ в Delphi package. Это необходимо сделать только один раз.
- Откройте Delphi с новым, пустым проектом.
- Выберите Import ActiveX Control из меню Components
- Выберите MapInfo MapX V5 из списка, и нажмите Install.
В диалоге Install, установите его в по умолчанию в пакете программ Borland User's Components. Нажмите Yes чтобы перекомпилировать пакет программ (package), затем закройте и сохраните окно Package.
Пиктограмма МарХ должна появиться в Controls palette, в разделе ActiveX.
После того как вы установили MapX сделаем свой первый простой проект, вот что у меня вышло для начала :
Согласитесь - для начала не плохо.
Итак приступим:
Положим компонент Tmap на форму. Тут я сделаю маленькое отступление - обычно MapX поставляется в составе приложения MapXTreme, которое в свою очередь является сервером для хранения карт, что-то вроде централизованного хранилища картографической информации, и если у вас выйдет такая ошибка :
то не пугайтесь - она не смертельная, а говорит лишь о там, что - у вас не установлен MapXTremе, либо установлен, но не найден набор (вроде алиаса в BDE - хотя сравнение не совсем удачное) GeoDict.ddt, т.е. MapX пытается уже открыть карту прописанную GeoDict.ddt в MapXTreme.
Так как я не ставил MapXTreme то данная ошибка лечится обнулением (установкой пустой строки) свойства GeoDictionary объекта MapX;
Итак пришла пора загрузить карту - для этого в MapX служит объект Layers который представляет собой коллекцию слоев на карте :
Вот как можно добавить слои (в примере они загружаются в FormCreate):
FileMapper := ExtractFilePath(ParamStr(0)) + 'Map\Республика.TAB';
MapX.Layers.Add(FileMapper,2);
FileMapper := ExtractFilePath(ParamStr(0)) + 'Map\Реки_полигоны.TAB';
MapX.Layers.Add(FileMapper,1); | |
У объекта Layers есть метод Add в котором указывается таблица MapInfo и положение слоя на карте, причем чем меньше положение слоя тем слой выше на карте.
Ну а органы управления картой (приближение,уменьшение,сдвиг и т.д) управляются свойствами MousePointer - вид курсора и CurrentTool - текущий инструмент;
В своем примере я применил следующие инстурменты
- Стрелочка (стандартный инструмент по умолчанию)
-
MapX.MousePointer := miDefaultCursor;
MapX.CurrentTool := miArrowTool;
- Рука (инструмент для перемещения карты)
-
MapX.MousePointer := miPanCursor;
MapX.CurrentTool := miPanTool;
- Лупы + и - (инструмент для маштабирования карты)
-
MapX.MousePointer := miZoomOutCursor;
MapX.CurrentTool := miZoomOutTool;
MapX.MousePointer := miZoomInCursor;
MapX.CurrentTool := miZoomInTool;
Итак, для начала мы разобрались как загружать карту в Tmap и как производить простейшие манипуляции на карте.
В следующей части мы начнем более глубоко изучать MapX, научимся создовать собственные инструменты, манипулировать с единицами измерений и проекциями и т.д.
До встречи !
С уважением к коллегам, Дмитрий Кузан.
К материалу прилагаются файлы:
[Взаимодействие с ГИС]
Обсуждение материала [ 02-12-2009 00:32 ] 8 сообщений |