Описание работы с инструментом и исправленная его версия
Обсудить в форуме Комментариев 8
Это статья описывает процесс перевода векторных данных в формате shape в формат OSM XML, пригодный для загрузки в базу данных проекта OpenStreetMap - открытой карты России и всего мира. Пожалуйста, перед загрузкой, убедитесь, что ваши данные лицензионно чисты, вы получили их по открытым источникам или источникам, для которых вы имеете право переводить в их векторную форму. Снимки геосервисов Google, Microsoft и подобных такими данными - не являются!
Оглавление
Скачать оригинальную версию ogr2osm можно здесь.
Если в shape-файлах есть атрибутика использующая кириллицу, лучше воспользоваться исправленной версией (исправления внесены Александром Дежиным, в комплект также входит пример исходных и результирующих данных и файл настроек правил переназначения полей и значений с помощью которого результат был получен).
Внимание: для правильного перевода атрибутов, DBF таблица должна иметь кодировку UTF8. Если таблица имеет другую кодировку, можно использовать конвертор, чтобы перевести ее в UTF8.
Для работы программы нужен GDAL/OGR, установить его можно с помощью OSGeo4W, для работы рекомендуются пакеты gdal16 или gdaldev.
Запускаем шелл OSGeo4W и в нем выполняем gdal16 или gdaldev, после этого можно конвертировать.
Запустить конвертор очень просто:
ogr2osm input.shp
Результатом конвертации будет файл с таким же именем и расширением osm. Система координат данных будет прочитана из файла PRJ, если его нет, подразумевается что данные в Lat/Long WGS84.
Атрибутивная информация, содержащаяся в DBF файле, будучи очень полезной, часто не отвечает условиям обозначения объектов в OSM. Это статья не объясняет, как правильно описывать атрибуты, для этого служат специальные справочники. Здесь мы опишем как правильно настроить сам процесс и приведем примеры.
Для переназначения полей и значений необходимо иметь специальный файл, где эти переназначения описаны, он должен лежать в папке translations. Запускается конвертор в этом случае с ключем -t, за которым следует имя файла описания, без расширения py:
python ogr2osm.py -t vmap0 built-utf.shp
С помощью файла описания можно:
Файл описания является небольшой программой на языке Python, представляющей собой функцию, которой передаются атрибуты shape-файла (attrs):
# -*- coding: utf-8 -*- def translateAttributes(attrs): if not attrs: return
Внимание: должна обязательно быть указана строка кодировки UTF8 и сам текст должен быть в этой же кодировке.
После этого, стандартного начала идет описание правил, оно обычно начинается с очистки поля деятельности:
tags = {}
Рассмотрим на примерах что и как прописывается, определения тегов идут в порядке обратном тому, в котором они будут прописываться объектам, т.е. первый тег описанный в файле правил будет последним в списке тегов объекта.
Переименование поля
По умолчанию названия полей превращаются в названия тегов, чтобы этого избежать, можно их переименовывать. Этот пример показывает как поле CODE, содержащее некоторые значения, переименовывается при экспорте в тег cladr:code, содержащий собственно значения.
if attrs['CODE']: tags.update({'cladr:code':attrs['CODE']})
Переименование поля и замена значения по условию
Все создаваемые объекты для записей, у которых в поле TYPE в shape-файле записана буква 'с' должны получить тег cladr:suffix со значением 'Село':
if attrs['TYPE'] == 'с': tags.update({'cladr:suffix':'Село'})
Изменение строк
При изменении значений можно использовать любые функции питона. Это пример например переводит строку в нижний регистр и делает первую букву заглавной.
if attrs['NAM']: str = attrs['NAM'].lower().capitalize() tags.update({'name:en':str})
Теги/ключи попадают в результирующий файл неотсортированными по имени, но они будут автоматически отсортированы при работе с данными в JOSM.
Пример окончательного файла настроек преобразования для перевода данных VMap0, который можно использовать как образец, также находится в архиве с обновленным кодом программы ogs2osm (скачать).
Обсудить в форуме Комментариев 8
Последнее обновление: September 09 2021
Дата создания: 13.06.2010
Автор(ы): Максим Дубинин
© GIS-Lab и авторы, 2002-2021. При использовании материалов сайта, ссылка на GIS-Lab и авторов обязательна. Содержание материалов - ответственность авторов. (подробнее).