Редактор географических схем






Редактор географических схем 1С (*.geo). Работа со слоями, объектами, сериями значений. Импорт данных из OpenStreetMap.ru. Рассмотрены основные особенности структуры географической схемы, приведены примеры использования редактора для решения практических задач.

Платформа 1С содержит в себе довольно интересный механизм: Географическая схема. Его применение в ряде случаев позволяет представить аналитическую отчетность в более наглядном виде. Однако, на мой взгляд, использование этого механизма ограничено малым количеством доступных карт. От разработчиков платформы доступны только три карты, созданные больше 10 лет назад: карта мира, карта России со столицами и карта России с городами. Еще несколько карт можно найти на Инфостарте. В платформе имеется свой редактор, но его использование во многом основано на импорте shape-файлов, созданных с помощью программ семейства ESRI ArcGIS, что требует от разработчика определенных навыков и затрат. Хочу предложить свой инструмент, появление которого явилось результатом решения практической задачи по обновлению карты России. Редактор предназначен для толстого клиента. Тестировался на платформе 8.3.11.2867, но должен работать и на 8.3.10

Немного о структуре географической схемы.

Географическая схема представляет собой совокупность слоев. Каждый слой содержит в себе объекты и серии. Слой может содержать объекты только одного из четырех типов:

  • ТочечныйОбъектГеографическойСхемы, 
  • МноготочечныйОбъектГеографическойСхемы, 
  • ПолилинейныйОбъектГеографическойСхемы, 
  • ПолигональныйОбъектГеографическойСхемы.

Серия — это некоторый атрибут объекта слоя. Совокупность значений атрибутов-серий объектов позволяет строить аналитические диаграммы по объектам географической схемы.

Рассмотрим структуру и особенности схемы более подробно на примере стандартной карты РоссияРегионыИСтолицы.geo.

Каждая карта изображена в какой-либо географической проекции. Для некоторых проекций имеет значение смещение широты и долготы. Здесь и далее параметр "Ограничивающий прямоугольник" показывает географические координаты места, занимаемого картой или объектом карты. В схеме существуют два слоя: точечный "ГОРОДА" и полигональный "РЕГИОНЫ". Каждый слой может быть сделан невидимым. Не совсем очевидно использование масштаба: для каждого слоя задается масштабный диапазон, слой будет отображен на схеме, только если масштаб схемы попадает в указанный диапазон. После некоторой доработки это позволит организовать отображение карты с различной детализацией, например с точностью до федеральных округов или областей. 

Точечный слой "ГОРОДА".

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

Полигональный слой "РЕГИОНЫ".

Слой содержит набор объектов — регионов России. Каждый объект представляет собой набор замкнутых областей, заданных координатами контуров. Для удобства работы, редактирования и копирования список координат сделан в виде текстового поля.

Хочу отметить следующую особенность: так как списки географических координат (контуров полигонов, сегментов полилиний, набора точек) реализованы в виде простого текстового поля, то эти списки и их части легко копировать и переносить как между объектами этой схемы, так и в/из сторонние программы — текстовые редакторы, Excel, etc. Но все же вручную составлять список координат неудобно, поэтому возникла идея импортировать этот список из более удобного инструмента. После непродолжительных поисков был найден сервис  OpenStreetMap.ru (не путать с OpenStreetMap.org) Он позволяет без регистрации создавать свои географические объекты и сохранять результат в виде XML-файла. Остальное дело техники — полученный файл можно импортировать в редактор.

Каждый слой содержит свой набор серий:

В параметре "Тип отображения" задается способ отображения серий на карте: в виде текста, гистограммы, круговой диаграммы и т.п. Для некоторых типов отображения, например для гистограммы, происходит объединение нескольких серий с одинаковым типом в одну гистограмму, каждая серия станет отдельным "столбиком".

На пересечении серии и объекта устанавливается значение:

После установки значения происходит отображение его на карте (если это разрешено установкой соответствующих свойств).

 

Далее хочу рассмотреть варианты решения практических задач с помощью редактора.

Пример1: Объединение Камчатской области и Корякского автономного округа в Камчатский край (произошло в 2007)

Для дальнейшей работы необходимо определить общую границу двух областей. Для этого создадим отдельный слой — многоточечный, скопируем координаты контура одной из областей, и, после небольших усилий, получим:

Удалив найденные общие участки границ, получим

Осталось объединить оставшиеся границы, поместить результат в одну из областей и удалить другую:

 

Пример 2: Добавление Республики Крым и ее столицы — г. Симферополь

Для создания новых объектов воспользуемся сервисом OpenStreetMap.ru.

В разделе "Персональная карта" добавим новый путь — границу региона и маркер — положение города Симферополь.

Сохранив изменения, получим возможность скачать GPX — файл формата XML, содержащий наши данные.

Далее добавляем новый объект в слой "РЕГИОНЫ", импортируем полученный файл — добавится новый контур с координатами границ. Переключаемся на слой "ГОРОДА" и импортируем этот же файл — добавится новая точка — город Симферополь.

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

Пример 3: Добавим гистограммы с данными о численности населения в регионах

На слое "РЕГИОНЫ" в списке серий добавим 4 строки — это будут "столбики" гистограммы.

Ключевой момент: необходимо установить одинаковый тип отображения — "гистограмма".

Далее на странице со значениями необходимо заполнить появившиеся колонки:

и проверить результат

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

PS: Как всегда, в комментариях приветствуются сообщения об ошибках и предложения по усовершенствованию. 

 

 

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *