Страница 1 из 1
Нужна помощь с переводом из 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
Заранее благодарен
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 12:21
Александр Мурый
Максим, поделись тайным знанием, _как_ ты это делаешь.
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 12:35
Александр Мурый
Пытался перевести OSM XML в SHP как минимум половиной средств из перечисленного на
этой странице — геометрия конвертируется, атрибуты нет. Как быть с осмовскими тегами?
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 12:55
Denis Rykov
Привет, вот
этот инструмент пробовал?
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. Наверное это не супер красиво, но сработало как надо.
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 13:30
Максим Дубинин
Денис, надо было osm2shape, а не наоборот.
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 13:30
Максим Дубинин
Вы все очень сложно мыслите, учитесь)
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 13:46
Александр Мурый
Мой вариант (более длинный):
1. Открываем *.osm в JOSM, пересохраняем в GeoJSON
2. Немного правим .json (заменяем
\\" на
\"):
3. Открываем .json в QGIS, пересохраняем в SHP (или с помощью ogr2ogr):
Код: Выделить всё
export SHAPE_ENCODING=""
ogr2ogr RU-CHE_det-v1.shp RU-CHE_det-v1.json
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 14:25
bim2010
Открываем OSM XML в
Merkaartor и выполняем экспорт в KML(есть ограничения на размер). Затем, например с помощью GM конвертируем в SHP, при этом можно указать дополнительные условия для экспорта, например для определенного значения тега OSM.
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 27 апр 2013, 14:35
bim2010
Конечно всего перечисленного не достаточно для правильного конвертирования из-за
особенностей структуры данных проекта OpenStreetMap.
Re: Нужна помощь с переводом из OSM XML в Shape
Добавлено: 29 апр 2013, 23:03
bim2010
Какого тега не хватает в 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 объект - дет.дом ?