Нужна помощь с переводом из OSM XML в Shape

Обсуждение материалов сайта: вопросы, замечания, предложения
Ответить
Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Нужна помощь с переводом из OSM XML в Shape

Сообщение Максим Дубинин » 26 апр 2013, 22:36

Нужна помощь для проекта по детдомикам.

Кто-то может перевести OSM XML в ESRI Shape с сохранением структуры как в шейпах? Рассказывать как это делается мне не нужно, я знаю, просто занят другим. Нужно просто взять и сделать.

OSM XML:
- download/file.php?id=6277 курган
- download/file.php?id=6240 челябинск
- download/file.php?id=6446 москва

ESRI Shape:

- http://gis-lab.info/data/detdom/RU-KGN_det.7z
- http://gis-lab.info/data/detdom/RU-CHE_det.7z
- http://gis-lab.info/data/detdom/RU-MOW_det.7z

Заранее благодарен
пристегивайтесь, турбулентность прямо по курсу

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Александр Мурый » 27 апр 2013, 12:21

Максим, поделись тайным знанием, _как_ ты это делаешь.
Редактор материалов, модератор форума

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Александр Мурый » 27 апр 2013, 12:35

Пытался перевести OSM XML в SHP как минимум половиной средств из перечисленного на этой странице — геометрия конвертируется, атрибуты нет. Как быть с осмовскими тегами?
Редактор материалов, модератор форума

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Denis Rykov » 27 апр 2013, 12:55

Привет, вот этот инструмент пробовал?
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Максим Дубинин » 27 апр 2013, 13:29

Отбой, сам сделал.

Вот вам тайное знание:

Код: Выделить всё

# -*- coding: utf-8 -*-
import sys
from bs4 import BeautifulSoup
args = sys.argv[ 1: ]
soup = BeautifulSoup(''.join(open(args[0])))

f = open(args[1],'w')
f.write('lat;long;id;name;addr_o;region;district;url;g_region;g_district;g_settl;g_street;g_building;g_geocoded;g_status\n')

nodes = soup.findAll('node')
for node in nodes:
    tags = node.findAll('tag')
    for tag in tags:
        if tag['k'] == 'id':
            id1 = tag['v']
        elif tag['k'] == 'addr_o':
            addr_o = tag['v']
        elif tag['k'] == 'district':
            district = tag['v']
        elif tag['k'] == 'g_building':
            g_building = tag['v']
        elif tag['k'] == 'g_district':
            g_district = tag['v']
        elif tag['k'] == 'g_geocoded':
            g_geocoded = tag['v']
        elif tag['k'] == 'g_region':
            g_region = tag['v']
        elif tag['k'] == 'g_settl':
            g_settl = tag['v']
        elif tag['k'] == 'g_street':
            g_street = tag['v']
        elif tag['k'] == 'name':
            name = tag['v']
        elif tag['k'] == 'region':
            region = tag['v']
        elif tag['k'] == 'url':
            url = tag['v']
        
    lat = node['lat']
    lon = node['lon']
    print(id1)
    g_status = "none"
    
    f.write(lat.encode("utf-8") + ";" + lon.encode("utf-8") + ";" + id1.encode("utf-8") + ";" + name.encode("utf-8") + ";" + addr_o.encode("utf-8") + ";" + region.encode("utf-8") + ";" + district.encode("utf-8") + ";" + url.encode("utf-8") + ";" + g_region.encode("utf-8") + ";" + g_district.encode("utf-8") + ";" + g_settl.encode("utf-8") + ";" + g_street.encode("utf-8") + ";" + g_building.encode("utf-8") + ";" + g_geocoded.encode("utf-8") + ";" + g_status.encode("utf-8") + "\n")

f.close()
ну и потом в кугисе сконвертировал csv в shape. Наверное это не супер красиво, но сработало как надо.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Максим Дубинин » 27 апр 2013, 13:30

Денис, надо было osm2shape, а не наоборот.
пристегивайтесь, турбулентность прямо по курсу

Аватара пользователя
Максим Дубинин
MindingMyOwnBusiness
Сообщения: 9128
Зарегистрирован: 06 окт 2003, 20:20
Репутация: 747
Ваше звание: NextGIS
Откуда: Москва
Контактная информация:

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Максим Дубинин » 27 апр 2013, 13:30

Вы все очень сложно мыслите, учитесь)
пристегивайтесь, турбулентность прямо по курсу

Александр Мурый
Гуру
Сообщения: 5173
Зарегистрирован: 26 сен 2009, 16:26
Репутация: 793
Ваше звание: званий не имею
Откуда: Москва

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение Александр Мурый » 27 апр 2013, 13:46

Мой вариант (более длинный):
1. Открываем *.osm в JOSM, пересохраняем в GeoJSON
2. Немного правим .json (заменяем \\" на \"):

Код: Выделить всё

sed -i 's/\\"/\"/g' RU-KGN_det-v1.json
3. Открываем .json в QGIS, пересохраняем в SHP (или с помощью ogr2ogr):

Код: Выделить всё

export SHAPE_ENCODING=""
ogr2ogr RU-CHE_det-v1.shp RU-CHE_det-v1.json
Редактор материалов, модератор форума

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение bim2010 » 27 апр 2013, 14:25

Открываем OSM XML в Merkaartor и выполняем экспорт в KML(есть ограничения на размер). Затем, например с помощью GM конвертируем в SHP, при этом можно указать дополнительные условия для экспорта, например для определенного значения тега OSM.

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение bim2010 » 27 апр 2013, 14:35

Конечно всего перечисленного не достаточно для правильного конвертирования из-за особенностей структуры данных проекта OpenStreetMap.

bim2010
Гуру
Сообщения: 977
Зарегистрирован: 27 янв 2009, 22:57
Репутация: 258

Re: Нужна помощь с переводом из OSM XML в Shape

Сообщение bim2010 » 29 апр 2013, 23:03

Какого тега не хватает в OSM XML примерах, приведеных выше?
Предлагаю вариант Tag:amenity=social_facility
http://wiki.openstreetmap.org/wiki/RU:T ... l_facility
social_facility:for=orphan
http://wiki.openstreetmap.org/wiki/RU:K ... l_facility
Т. е. при наличии качественного снимка Бинг, почему бы не отметить в OSM объект - дет.дом ?

Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя