Использование картографии в своих приложениях, с помощью NGIS компонент

Если вы создаете проект в среде программирования Delphi и Вам нужно отображения визуальной информации. Например, возьмем автоматизацию электросети города, для пользователя компьютера лучше предоставить информацию в более информативном виде в виде карты, где можно сразу увидеть наглядно местоположение объектов. Есть много различных программ таких крупных компаний как MapInfo, ArcGis, ESRI. Для встраивания карт в приложение у них есть такие продукты, как MapX, MapObject и они выполнены в виде ActiveX компонентов. При использовании их в среде Delphi возникает некоторые неудобства и они не дают гибкость при работе. И тогда было решено создать свои компоненты, которые бы давали более большую гибкость. Компоненты, которые бы устанавливались в среду разработки и давали следующие основные возможности: прорисовывать любые дополнительные объекты или анимацию на карте, иметь прямой доступ к данным геообъектов. Поддержка самого распространенного формата геоданных MapInfo, прорисовка всех основных используемых объектов. Возможность прорисовки всех используемых штриховок областей и стилизированных стилей линий, навигационные функции увеличения/уменьшения, выделение объектов на карте.

Так как был использован широко известный класс TCanvas, который дает любую возможность для отображения дополнительной информации. Также была реализована возможность загрузки нескольких карт в виде слоев. Данная возможность реализована и наследуется от удобного класса TCollection.

Краткое описания использования компонент:

1. Создайте новый проект и откройте новую форму.

2. Выберите компонент TNMap в закладке и растяните его на своей форме.

3. Двойным нажатием на компоненте выйдет пустой список слоев, добавьте новый слой в компонент нажатием кнопки. Компонент поддерживает отображения нескольких карт (слоев) данном редакторе можно добавлять и удалять слои, а также изменять их последовательность. Также важен порядок следования слоев, отображение которых идет в соответствии с данным порядком.

4. Выделите нужный вам слой и зайдите в Object Inspector, в свойстве «FileName» укажите имя файла. Для отображения слоя установите свойство «ShowMap» в «True».

5. Есть три способа указать местоположения данных для картографического слоя. Самый первый способ был упомянут выше. Второй способ, для удобства переноса приложения на другой компьютер, можно указать путь к географическим данным через реестр системы, для этого заполните путь свойства «NRegistryRoot», «NRegistryPath», «NRegistryName». При заполнении данных свойств, в свойстве «FileName» можно использовать ключевое слово %REG%, при открытии слоя ключевое слово будет заменяться значением из реестра.

6. Третий способ, сохранить географические данные в ресурсах формы в файле DFM, при данном способе при компилировании приложения географические данные будут находиться в исполняемом файле, и приложение будет более независимое. Можно создавать приложение, которое будет состоять только из одного исполняемого файла. Для этого в слое укажите путь к данным через свойство «FileName», установите свойство «ShowMap» в истину и далее установите свойство «SaveToDFM» в истину, данные слоя будут сохранены как ресурс в DFM. Теперь вы можете убрать значение свойства «FileName», так как оно уже не используется слоем.

7. Также можно установить начальное положение карты при загрузке. Для этого есть удобный редактор настройки начального положения карты, нажмите правую кнопку на компоненте и в выпадающем меню выберите пункт «Set position ...». С помощью данного редактора можно увеличивать, уменьшать и двигать карту. После выбора нужного Вам масштаба нажмите кнопку «Set position» в редакторе и будут установлены начальные параметры масштаба карты в следующие свойства «NStartWidth», «NStartX», «NStartY».

8. С каждым географическим объектом на карте есть связанная запись в табличных данных. Для каждого слоя на карте можно настроить вывод текстовой информации (меток) (Например: название городов, улиц и т.д.). Для отображения меток зайдите на нужный слой и настройте поле, которое вы хотите вывести «LabelParams->FieldName», дополнительно вы можете настроить шрифт меток. После всех настроек установите свойство «DrawLabels» в истину и метки будут отображены на карте.

9. Для каждого слоя карты можно настраивать масштаб видимости, что позволит делать карты более информативными. Например, если взять карту города при начальной загрузке, на карте показаны крупные районы города, основные улицы и проспекты, то по мере увеличения масштаба будут показываться более детальные слои мелкие улицы, переулки и дома. Для настройки масштаба показа установите в свойствах «NMinWidth», ««NMaxWidth»» диапазон показа слоя.