Импорт GPS карт формата Навител, Гармин и Гис Русса в географические схемы (геосхемы) 1С:Предприятия 8.х.


Технология быстрого создания географических схем для 1С:Предприятия 8.х.

Даная статья написана cцелью увеличения количества разработок с использованием географических схем 1С:Предприятия 8.х. Этот объект платформы не новый, но в связи с его малым продвижением фирмой 1С, он практически не изучен и очень мало используется в разработках. Не смотря на его ограниченный функционал и возможность только программного редактирования объектов, он вполне может выполнять основную функцию отображения векторной графике в платформе 1С Предприятия без использования внешних компонент. Есть надежда, что повышение интереса к данному объекту платформы повлияет на его продвижение и увеличение функциональности.

Терминология:

ГИС - географические информационные системы;

MapInfo Professional – полнофункциональная ГИС для создания, редактирования и анализа картографической и пространственной информации).

MapBasic- среда программирования для MapInfo Professional, позволяет адаптировать MapInfo для решения самого широкого спектра задач и разрабатывать приложения для специалистов различного профиля.

ArcGIS — семейство программных продуктов компании ESRI, одного из лидеров мирового рынка геоинформационных систем.

Предложенный мною способ создания геосхем довольно прост, и позволяет получать карты достаточно неплохого качества и совершенно бесплатно. Географические схемы 1С:Предприятия поддерживают импорт топологических данных только с одного формата - *.shp(шейп-файлы), которые создаются в ГИС ArcGIS. Профессиональные карты в таком формате стоят довольно дорого, и позволить их себе могут только солидные организации т.к. их разработка достаточно сложна и требует определенных знаний в этом направлении. В интернете имеется множество векторных карт: стран, регионов, городов, для разных программ gps-навигаторов. Часть этих карт имеет открытый формат, и некоторые постоянно обновляются авторами. Вот именно эти карты мы возьмем в качестве топологической основы. Профессиональному ГИС-инженеру знакомому с такими языками программирования как, например, MapBasic, и разбирающемуся в форматах  векторных карт - не составляет большого труда выполнить конвертацию. Но для рядового 1С-ка, не имеющего, ни малейшего представления о ГИС, дело это довольно хлопотное и сложное. Моя цель: упростить создание топологической основы для географической схемы и сделать ее более доступной для дальнейших разработок.

Прежде всего, нам нужна карта формата Навител, Гармин или Гис Русса. Подходят карты только старого формата(*.rus, *.img, *.ntm), а также в польского формата (*.mp). Все другие форматы вероятнее всего не подойдут, т.к являются в основном закрытыми. По поиску карт советую посетить такие вот места:

Для работы вышеперечисленными форматами нам понадобятся три программы:

1.      GPSMapEdit (http://www.geopainting.com/ru/) используется для работы с самой картой. Эта программа хоть и shareware, но полностью функциональна(недоступно всего лишь несколько функций которые нам не понадобятся). С ее помощью мы будем просматривать, и экспортировать карты в нужный нам формат. С ее помощью можно также редактировать или изменять карту и вносить новые объекты. По своему функционалу она полностью подходит для создания любительских карт.

2.      PText2shp (http://www.msh-tools.com/Ptxt2shp.html) предназначена для импорта из польского формата в формат ArcGIS. С ее помощью мы и будем создавать наши шейп-файлы.

3.      Третья программа ArcView GIS 3.2 (http://www.esri.com) предназначена для просмотра и редактирования самих шейп-файлов.

Схема экспорта карты довольно проста: карта сохраняется через GPSMapEdit в польский формат и потом конвертируется PText2shp. После конвертации, для правильного построения пространственных индексов, полученные шейп-файлы необходимо пересохранить через ArcView.

Во всем этом есть только одно неудобство – при конвертации через PText2shp все слои карты преобразовываются в один, в зависимости от типов (точечный, линейный, полигональный). То есть, если на карте разными слоями но одного типа (полигон) были указаны строения и водоемы – они переконвертируются в один слой. Чтобы избежать этого необходимо перед конвертацией карту разгруппировать на отдельные слои. Разгруппировывать слои можно  в GPSMapEdit. Для этого нам необходимо «ручками» отобрать слои и по отдельности сохранить в отдельный файл-карту (для этого нужно иметь заготовку т.к. в GPSMapEdit новые файлы создавать нельзя!!!).

Разберем теперь все это поочередно на примере:

Открываем карту в GPSMapEdit.

Если при открытии вываливается вместо карты куча текста -  значит, к сожалению, формат карты не поддерживается))). Топаем в Редактирование->Выбрать объекты->По типу.  

Ставим флажки на выбранных слоях (группировать нужно обязательно по типах) и жмем ОК.

Потом идем Редактирование->Вырезать. Открываем файл-заготовку. В ней удаляем все объекты (Редактирование->Выбрать объекты->Все объекты и потом Редактирование->Удалить) и вставляем из буфера вырезанные слои.

 

Потом топаем в Файл->Сохранить карту как, и выбираем Polishformat (*.mp, *.txt) и сохраняем. Первый слой готов. Возвращаемся в открытую карту и повторяем процедуру выбора слоев, вырезания и переноса в пустышку. Ну и так до конца…

 

Слои лучше группировать по назначению (например, дороги, строения, водоемы). Если есть слои одного назначения, но разного типа (например, водоемы могут быть и полигональными и линейными), то их лучше разбить на дополнительные слои. К названию слоя для удобства нужно добавлять его тип.  Когда создание слоев завершено – переходим на второй этап – конвертирование шейп-файлов. Здесь тоже все просто – запускаем PText2shp, выбираем файл импорта, и исходный файл. С трех флажков (Line, Area, Point) оставляем тот, к какому типу относится этот слой (Линейный, Полигональный, Точечный).

 По поводу флажка All(под lev) расскажу подробнее. В gps-картах слои еще разделяются на уровни масштаба. То есть в режиме просмотра карты при увеличении/уменьшении масштаба карты определенные слои отображаются/скрываются при этом увеличивая/уменьшая детализацию тех или иных объектов. Наибольшая детализация объектов находится на уровне «0». С увеличением уровня некоторые слои стают менее детализированными, а некоторые исчезают вовсе. Некоторые слои могут находиться только на верхних уровнях т.к. большая детализация не логична (к примеру, крупные автомагистрали, или соседние города). Уровни могут идти не последовательно, часто перескакивая сразу через несколько. Общего правила здесь нет – проще всего снять флажок Allи поочередно конвертировать, начиная с «0», добавлять каждый раз по уровню, а потом уже в ArcView выбрать необходимый слой(или несколько слоев т.к. в геосхеме тоже есть возможность выбора масштабного диапазона).

У меня при всех моих опытах больше 6-го уровня не заходило. Количество уровней также можно посмотреть через GPSMapEdit в Просмотр->Уровни детализации.

После завершения конвертирования в выбранном исходном каталоге имеются файлы с расширениями  *.shp, *.shx, *.dbf. Теперь необходимо удалить пустые  файлы. Их найти не сложно – все файлы одного типа будут иметь одинаковый размер. 

 

 

 

 

 

 Shape-файл в общем виде состоит из файлов 5 типов:

.shp - файл пространственных данных;

.shx - индексный файл к файлу пространственных данных;

.dbf - файл формата dBASE IV (?) для хранения аттрибутивных данных;

.sbn and .sbx - файлы, в которых хранятся пространственные индексы. Эти файлы создаются в ходе некоторых операций с пространственными данными, например, при объединении слоев (тем). Без последних двух типов импорт в 1С не возможен.

Для создания этих типов файлов я не нашел ничего проще чем пересохранение через ArcView, при этом очень удобно просматривать и отбирать созданные шейп-файлы. Тут тоже все просто: Запускаем ArcView и создаем новый проэкт.

И добавляем новые данные.

Указываем папку с шейп-файлами и с помощью Shiftвыделяем все файлы и жмем ОК.

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

Для пересохранения шейп-файлов просто активируем слой (левая панель) и потом Тема -> Преобразовать в шейп-файл.  Файлам даем новое имя и сохраняем в другую папку. Выбираем следующий слой и сохраняем. Слои сохранять можно выборочно, не все, в зависимости от необходимых топологических данных.

Ну вот и все, теперь только осталось импортировать в 1С.  Для уменьшения потребляемых ресурсов(большие карты жрут много памяти) я использую «1С:Предприятие - Работа с файлами» (находится тут). Создаем новый документ «Географическая схема».

Заходим в «Настройку слоев»

 

И добавляем новый слой. 

 

Выставляем параметры импорта и загружаем.

 

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

 

Ну, вот как бы и все. Будут вопросы – пишите.

Адамец Петр (adun[at]list.ru, ICQ326534336 ).

Внимание! Данная статья написана эксклюзивно для сайта www.bexit.com.ua. Полная или частичная перепечатка данной статьи допускается только с обязательной ссылкой на сайт и автора статьи.

Файлы обработки:

-