Nigmet Tokabayev дата публикации 31-01-2005 02:42 Использование картографии в своих приложениях, с помощью NGIS компонентNGIS компоненты предназначены для отображения визуальной информации в Delphi-проектах.
Например, возьмем задачу автоматизации электросети города, где для пользователя естественно работать с информацией в виде карты, чтобы можно сразу наглядно видеть местоположение объектов.
Есть много различных программ, таких крупных компаний как, MapInfo, ArcGis, ESRI для встраивания карт в приложения. В качестве инструментов разработчикам предлагаются MapX и MapObject, выполненные в виде ActiveX компонентов. При использовании их в среде Delphi возникают некоторые неудобства, мешает недостаток гибкости при работе.
По этой причине, для обеспечения свободы действия, было решено создать свои компоненты, которые бы устанавливались в среду разработки и давали следующие основные возможности:
- прорисовывать любые дополнительные объекты или анимацию на карте,
- иметь прямой доступ к данным геообъектов.
- поддерживать самый распространенный формат геоданных MapInfo,
- обеспечивать прорисовку всех основных используемых объектов.
- обеспечивать прорисовку всех используемых штриховок областей и различных стилей линий,
- реализовывать навигационные функции увеличения/уменьшения
- обеспечивать выделение объектов на карте.
При создании компонентов был использован широко известный класс TCanvas, который дает возможность для отображения любой информации. Также была реализована возможность загрузки нескольких карт в виде слоев. Данная возможность реализована с помощью класса TCollection.
- Создайте новый проект и откройте новую форму.
- Выберите компонент TNMap в закладке и растяните его на своей форме.
- Двойным нажатием на компоненте вызовите пустой список слоев, добавьте новый слой в компонент. Компонент поддерживает отображение нескольких карт (слоев). В данном редакторе можно добавлять и удалять слои, а также изменять их последовательность. Также важен порядок следования слоев, отображение которых идет в соответствии с данным порядком.
- Выделите нужный вам слой и зайдите в Object Inspector, в свойстве "FileName" укажите имя файла. Для отображения слоя установите свойство "ShowMap" в "True".
- Есть три способа указать местоположения данных для картографического слоя. Самый первый способ был упомянут выше. Второй способ: для удобства переноса приложения на другой компьютер можно указать путь к географическим данным через реестр системы, для этого заполните путь свойства "NRegistryRoot", "NRegistryPath", "NRegistryName". При заполнение данных свойств, в свойстве "FileName" можно использовать ключевое слова %REG%, при открытии слоя ключевое слово, будет заменяться значением из реестра.
- Третий способ: сохранять географические данные в ресурсах формы в файле DFM, в этом случае при компилировании приложения географические данные будут находиться в исполняемом файле, и приложение будет более независимое. Можно создавать приложение, которое будет состоять только из одного исполняемого файла. Для этого в слое укажите путь к данным через свойство "FileName", установите свойство "ShowMap" в истину и далее установите свойство "SaveToDFM" в истину, данные слоя будут сохранены как ресурс в DFM. Теперь вы можете убрать значение свойства "FileName", так как оно уже не используется слоем.
- Также можно установить начальное положение карты при загрузке. Для этого есть удобный редактор настройки начального положения карты, нажмите правую кнопку на компоненте и в выпадающем меню выберите пункт "Set position ...". С помощью данного редактора можно увеличивать, уменьшать и двигать карту. После выбора нужного Вам масштаба нажмите кнопку "Set position" в редакторе и будут установлены начальные параметры масштаба карты в следующие свойства "NStartWidth", "NStartX", "NStartY".
- С каждым географическим объектом на карте есть связанная запись в табличных данных. Для каждого слоя на карте можно настроить вывод тестовой информации (меток) (Например: название городов, улиц и т.д.). Для отображения меток зайдите на нужный слой и настройте поле, которое вы хотите вывести "LabelParams->FieldName", дополнительно вы можете настроить шрифт меток. После всех настроек установите свойство "DrawLabels" в истину и метки будут отображены на карте.
- Для каждого слоя карты можно настраивать масштаб видимости, что
позволит делать карты более информативными. Например, если взять карту
города при начальной загрузке, на карте показаны крупные районы города,
основные улицы и проспекты, то по мере увеличения масштаба будут
показываться более детальные слои мелкие улицы, переулки и дома. Для
настройки масштаба показа установите в свойствах "NmaxWidth",
"NminWidth" диапазон показа слоя.
[Взаимодействие с ГИС]
Обсуждение материала [ 29-03-2009 14:21 ] 16 сообщений |