Как написать программу с картой

Это первый из серии уроков по программному интерфейсу (API) Яндекс.Карт. API позволяет создать карту, которая выглядит и работает в точности как на Яндексе. Но главное, что карту можно настроить: выбрать центр и масштаб, убрать ненужные функции или добавить дополнительные, показать на карте специальную информацию.

Пример карты на API

Как создать интерактивную карту через Folium?

В этой статье я расскажу о своем опыте работы с одним из инструментов визуализации в форме интерактивной карты на Jupyter Notebook — Folium. Folium позволяет объединить экосистему языка программирования Python и Open Source библиотеку для построения интерактивных карт для сайтов Leaflet.js.

Цель создания интерактивной карты в моем случае – показать наглядно филиалы банка, в которых предоставляется услуга регистрации в Единой биометрической системе для клиентов физических лиц по данным официального сайта банка и bio.rt.ru, а также долю таких филиалов по регионам российской Федерации.

Урок 6. Как создать приложение навигатора за 20 минут!

Для работы с Folium импортируем библиотеку:

import folium

И создаем главный объект, к которому будем добавлять остальные – карту:

m = folium.Map(location=[63.391522, 96.328125], zoom_start=3)

Здесь location – координаты центра отображаемой карты, zoom_start – первоначальный масштаб.

Добавим к карте регионы РФ с заполнением цветом в соответствии с долей филиалов банка с услугой регистрации – хороплет. Для отображения контуров регионов необходим файл в формате GeoJSON, и его можно взять здесь из архива – это admin_level_4.geojson. Данные для заполнения цветом возьмем из предварительно подготовленного датафрейма DF с долями share и region_ID регионов, совпадающими с ID регионов из файла GeoJSON.

rel_ = folium.Choropleth( geo_data = path_to_ GeoJSON_file, name = ‘Отношение числа филиалов с ЕБС ко всем’, data = DF, columns=[‘REGION_ID’, ‘share’], key_on=’id’, bins = 5, fill_color=’BuGn’, nan_fill_color=’darkblue’, nan_fill_opacity=0.5, fill_opacity=0.7, line_opacity=0.2, legend_name= ‘Отношение числа филиалов с ЕБС ко всем’, highlight = True, show = False )

Добавляем слой хороплета к карте:

rel_.add_to(m)

Теперь можно увидеть общую картину по доступности услуги регистрации в ЕБС в филиалах банка по регионам РФ.

Добавим на карту отдельные филиалы банка с разделением по доступности услуги регистрации – маркеры двух цветов. Данные с официального сайта банка и bio.rt.ru, включая координаты филиалов, собираем через request, выделяем из них координаты и наименования филиалов.

Чтобы карта была функциональной и удобной, маркеры филиалов мы объединим в кластеры в зависимости от масштаба, что избавит нас от загромождения элементами.

Создадим группы для маркеров:

feature_group_EBS = folium.FeatureGroup(name = ‘Филиалы с регистрацией ЕБС’, show = False) feature_group_nonEBS = folium.FeatureGroup(name = ‘Филиалы без регистрации ЕБС’, show = False)

from folium.plugins import MarkerCluster marker_cluster_EBS = MarkerCluster(name = ‘ cluster_ EBS ‘, popups = ‘Филиалы с регистрацией ЕБС ‘, show = False, icon_create_function=icon_green) marker_cluster_nonEBS = MarkerCluster(name = ‘ cluster_nonEBS ‘, popups = ‘Филиалы без регистрации ЕБС ‘, show = False, icon_create_function = icon_red)

Как создавать собственные карты в Google Maps с нанесением меток и маршрутов

Параметр popups покажет соответствующую информацию при клике на кружок кластера. С помощью icon_create_function можно добавить строку на JavaScript, которой можно задать нужный цвет кластера (по умолчанию он меняется каждый раз в зависимости от количества маркеров в кластере).

Читайте также:
Как посмотреть какие библиотеки использует программа python

Добавляем маркеры филиалов в соответствующие кластеры:

for lt, ln, filial_name in zip(latitude_EBS, longitude_EBS, name_EBS): marker_EBS = folium.Marker( [lt, ln], popup = filial_name, icon = folium.Icon(color=’green’,icon=’ok-sign’)) marker_cluster_EBS.add_child(marker_EBS)

Добавляем кластеры в слой соответствующей группы:

feature_group_EBS.add_child(marker_EBS) feature_group_nonEBS.add_child(marker_nonEBS)

Группы добавляем на карту:

Источник: vc.ru

Как написать программу с картой

Как создать свою ГИС с помощью GIS ToolKit Active

Урок 1. Создание простого ГИС приложения на основе GIS Toolkit Active

  • Аннотация
  • Урок 1. Создание простого ГИС приложения на основе GIS Toolkit Active
  • Урок 2. Функции для поиска объектов карты
  • Урок 3. Функции для выделения объектов карты
  • Урок 4. Получение информации о выделенных объектах карты
  • Урок 5. Создание карты, добавление объектов
  • Урок 6. Функции для редактирования объектов карты
  • Урок 7. Редактирование групп выделенных объектов
  • Урок 8. Функции для работы с растровыми изображениями
  • Урок 9. Функции для работы c мультиспектральными изображениями
  • Урок 10. Работа с внешними базами данных
  • Урок 11. Работа с ГИС-Сервером и подключение геопорталов
  • Урок 12. Создание и работа с матрицами качеств и высот
  • Тема на форуме

В данной статье, я попробую вам рассказать, как создать простое приложение, позволяющее легко работать с пространственными данными.

Наше первое приложение будет уметь: открывать карты в форматах *.map, *.sit, *.sitx, созданные средствами «Панорама», растры в формате *.rsw, матрицы в формате *.mtw.

С помощью него мы сможем управлять отображением объектов на карте, добавлять к главной карте дополнительные карты, растры и матрицы, масштабировать изображение, а также получать информацию по любому объекту карты. Пример того, как будет выглядеть наше первое приложение показан на рисунке ниже.

Рисунок 1. Пример работы приложения

Скачать рабочий образец программы и ее исходный код можно на страничке «Дополнительные материалы к уроку 1». Если у вас не установлен GIS ToolKit Active, то для запуска приложения вам потребуется загрузить библиотеки GIS ToolKit и выполнить их регистрацию. Все необходимые библиотеки и короткая инструкция размещены на этой же станице.

1. Создание проекта и панели инструментов

О том как установить GIS ToolKit Active и подключить его к среде Microsoft Visual Studio уже было рассказано в аннотации к курсу. Теперь перейдем к созданию нашего первого ГИС-приложения.

1.1 Создание нового проекта «Windows Forms»

Чтобы создать новое приложение запустим Microsoft Visual Studio, и нажмем «Файл»-> «Создать проект»-> «Приложение Windows Forms Visual C#»-> «Создать» (рис.2). В результате чего у нас появится проект, содержащий пустую форму Windows Form (рис.3), готовую для добавления на неё компонентов.

Рисунок 2. Создание проекта

Рисунок 3. Вид полученной формы и обозревателя решений

1.2 Добавление компонента доступа к электронной карте

Для того, чтобы открыть карту, и начать с ней работу давайте добавим на форму компонент доступа к электронной карте – axcMpView, приставка axc означает что это визуальный объект, а ax – соответственно не визуальный, по своему назначению он похож на стандартный компонент PictureBox (рис.4).

Рисунок 4. Добавление компонента axcMapView

При работе с GIS ToolKit ActiveX важно знать, что доступ к базовому классу объекта-интерфейса компонентов осуществляется через свойство C_CONTAINER. В компонентах, работа которых зависит от других компонент присутствует свойство cMapXXX. Таким образом, каждый новый добавленный компонент необходимо при инициализации формы связывать с теми компонентами от которых он зависит.

Читайте также:
3 d max как работать в программе

1.3 Добавление панели инструментов

Для работы с картой нам понадобится панель инструментов с кнопками «Открыть карту», «Состав отображения», «Список данных карты», «Увеличить изображение», «Уменьшить изображение», «Исходный масштаб», «Вся карта в окне», «Закрыть карту» (рис.5).

Рисунок 5. Панель инструментов

1.3.1 Выбираем стандартный компонент в «Панель элементов» -> «ToolStrip», и размещаем его над axcMapView. Далее нажимаем на иконки и в свойствах компонента добавляем ранее подготовленные картинки кнопок (рис.6).

Рисунок 6. Добавление кнопок на панель инструментов

2. Обработка событий при нажатиях на кнопки меню «ToolStrip»

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

2.1 Открыть карту

  • добавляем на форму компонент axaxOpenMapDialog — диалог открытия пространственных данных;
  • используем метод axcMapView.MapOpen для открытия карты и axcMapView.AppendData для добавления данных к уже открытой карте.

Более подробную информацию о методах используемых компонентов и их параметрах можно получить в Gis ToolKitAX 11 Руководство программиста

2.2 Уменьшить или увеличить изображение по нажатию мыши

Для того, что бы было удобно пользоваться картой добавим возможность её масштабирования в точке нажатия мыши:

  • объявим компонент работы с координатами axMapPoint

  • свяжем его с axcMapView свойством axMapPoint.cMapView при инициализации формы

  • для того, чтобы координаты изображения были в пикселях, при инициализации формы, установим MapView1.PlaceOut = axGisToolKit.TxPPLACE.PP_PICTURE;
  • создадим событие axcMapView.OnMapMouseUp, и зададим систему координат для перемещения точки масштабирования в центр, MouseXY.PlaceInp = axGisToolKit.TxPPLACE.PP_PICTURE (координаты точек в системе изображения в пикселях);
  • используем метод MouseXY.SetPoint, устанавливаем координаты точки метрики в системе координат установленной ранее свойством PlaceInp;
  • в зависимости от того увеличить или уменьшить масштаб, оперируем методами axcMapView.ViewScale (текущий масштаб отображения) и axcMapView.ScaleInPoint (установить текущий масштаб отображения и переместить центр в указанную точку), масштабируем изображение.

2.3 Состав отображения

Обычно карта состоит из множества различных линейных, точечных и площадных объектов. Зачастую пользователю необходимо для работы выбрать только один слой объектов, к примеру слой гидрографии. Это нам позволит сделать диалог «Состав карты» (рис.7).

Рисунок 7. Диалог «Состав карты»

  • добавим на форму компонент выбора условий поиска/отображения axMapSelectDialog
  • свяжем его с axcMapView свойством axMapSelectDialog.cMapView при инициализации формы

  • при обработке события нажатия на кнопку используем метод MapSelectDialog1.Execute в который передаем свойство axcMapView.ViewSelect, предоставляющее доступ к свойствам экземпляра класса условий поиска/отображения aiMapSelect (ai – наименования COM объектов).

2.4 Список данных карты

Для того, чтобы быстро управлять, открывать и добавлять отображаемые карты, матрицы, растры существует диалог «Список данных карты», в котором в виде дерева показаны открытые данные (рис. 8).

Рисунок 8. Диалог «Список данных карты»

  • добавим на форму компонент axMapDataList , и свяжем его свойством axMapDataList.сMapView с axcMapView

  • при обработке события нажатия на кнопку используем метод MapDataList1.stdExecute(), который вызывает стандартный диалог отображения и изменения состава данных электронной карты.

2.5 Исходный масштаб

Позволяет быстро перейти к базовому масштабу карты (в котором карта была создана), для этого при обработке события нажатия на кнопку воспользуемся методом axcMapView.MapScale.

2.6 Вся карта в окне

Читайте также:
Где сохранить код программы

Позволяет отобразить всю карту в пределах текущего размера окна, при обработке события нажатия на кнопку используем метод axcMapView.ShowAllMapInWindow.

2.7 Получение информации об объекте по нажатию мыши
Наша программа уже умеет открывать, масштабировать, управлять составом карты, но пока она дает нам только визуальное представление об объектах, чтобы узнать больше информации, хранящейся в каждом объекте карты по нажатию мыши давайте:

  • добавим на форму компонент поиска объектов векторной карты axMapFind , и свяжем совйством axMapFind.cMapView с с axcMapView.
  • добавим компонент объекта электронной карты axMapObj , для доступа к базе данных электронной карты.
  • образуем связку поиск-объект axMapFind с axMapObj свойством axMapFind.cMapObj при инициализации формы.

  • при обработке события axcMapView.OnMapMouseUp, которое ранее мы использовали для масштабирования добавим метод axMapObj.SelectObjectInPoint – выбрать объект карты в точке используя форму диалога, в который передаем координаты мыши при нажатии на объект и радиус поиска.

2.8 Закрыть карту
Если вдруг пользователь ошибся с выбором карты, то чтобы ему заново не открывать приложение, используем кнопку закрыть карту. Для этого воспользуемся свойством axcMapView.MapClose().

3 Вывод информации о карте в строке состояния

Чтобы дать дополнительную информацию пользователю о названии карты, текущем масштабе, основном масштабе и координатах при передвижении мыши создадим информационную строку (рис.9).

Рисунок 9. Информационная строка

  • для отображения текущего масштаба и координат мыши добавим в низ формы стандартный элемент StatusStrip на котором нажатием мыши, создадим три ToolStripStatusLabel
  • создадим событие axcMapView.OnMapMouseMove, отвечающее за передвижение мыши.
    в первый ToolStripStatusLabel выведем информацию о текущем масштабе axcMapView.ViewScale

  • в оставшиеся ToolStripStatusLabel соответственно координаты X и Y в метрах. Для этого, используя метод axMapPoint.SetPoint — устанавливаем координаты в системе координат PlaceIn (в пикселях).

  • получаем координаты для вывода методом axMapPoint.GetPoint в системе координат заданной свойством PlaceOut (в метрах)

  • далее выводим информацию в ToolStripStatusLabel

  • для отображения названия карты и ее основного масштаба добавим на форму еще один стандартный элемент StatusStrip
  • используем методы axcMapView.MapName и axcMapView.MapScale, которые размещаем в событии «Открыть карту».

4. Кнопки «Справка» и «Помощь»

Любая программа удобна, если в ней уже содержится необходимая справочная информация. Так как добавленные нами ранее диалоги работы с картой содержат кнопки «Помощь» или «Справка», то воспользуемся уже готовыми справками «Панорама». Пример расположения данных кнопок в диалоге показан на рис. 10.

Рисунок 10. Пример расположения кнопки «Помощь»

  • добавим файлы «mapselec.chm» и «panorama.chm», находящиеся в С:…PanoramaGIS ToolKit ActiveDllgislib11Help в директорию с приложением
  • добавим компонент предназначенный для настройки параметров работы ГИС-ядра axGisProperty
  • при инициализации формы, используем метод axGisProperty.mapSetPathShell, для того чтобы установить в ГИС ядре путь к директории приложения.

Ну что ж, вот мы и получили простое приложения для просмотра карт, растров и матриц, позволяющее нам изменять состав отображаемых данных, управлять их показом, и получать информацию об объектах. В следующем уроке мы попробуем сделать наше приложение еще более полезным, добавив в него всевозможные функции поиска объектов на карте.

Продукты

  • ГИС «Панорама»
  • Серверные приложения
  • Геопортал Регион
  • Сельское хозяйство
  • Кадастр и градостроительство
  • Геология и маркшейдерия
  • Картография, фотограмметрия
  • Специализированные ГИС
  • Средства разработки ГИС-приложений
  • Приложения для Linux
  • Проекты
  • Технологии
  • Сравнительная таблица продуктов

Источник: gisinfo.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru