Данные OSM для навигатора DeLorme

Вопросы по нескольким пакетам сразу, или вопросы, которые непонятно к какой ГИС отнести
Ответить
Vorchun
Новоприбывший
Сообщения: 2
Зарегистрирован: 10 фев 2016, 18:46
Репутация: 0

Данные OSM для навигатора DeLorme

Сообщение Vorchun » 10 фев 2016, 19:15

Доброго дня.
Развлекаюсь портированием осм под навигатор от делорма. Процесс выглядит так:
1) преобразование из pbf в осм

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

osmconvert src/*.osm.pbf --out-osm -o=tmp/*.osm.osm
2) объединение в одну карту

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

osmconvert tmp/*.osm.osm --out-pbf -o=mapAll.pbf
3) загрузка в постгру

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

osm2pgsql --create --slim --drop --cache 2000 --cache-strategy dense --number-processes 3 --input-reader pbf --host localhost --port 5432 --database osm --username postgres mapAll.pbf
4) формирование вьюх для специфического формирования слоев
5) выгрузка в шейпы

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

pgsql2shp -h localhost -p 5432 -u postgres -f /home/test/osm/hwLnZ07 osm "SELECT * from hwLnZ07;"
6) импорт шейпов в специфическую ГИС от delorme - xmap (считаю, что система координат выгрузки WGS84), заливка карт в навигатор.

При просмотре карты на навигаторе выяснилась интересная вещь - расхождение координат на 10 минут в направлении север - юг. Например

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

SELECT ST_AsText( ST_Transform(way,4326) ) FROM planet_osm_point WHERE osm_id = 1686293227;
выдает координаты "POINT(37.6187041474775 55.7516334761417)", а в xmap - эти координаты ( 37.6187042 55.9300340 ) соответственно. Воспользовавшись шейпами из вашей выгрузки - все стало на место. Детальное рассмотрение prj файлов показало, что в вашей выгрузке

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

GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]
а то, что у меня

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

PROJCS["Popular Visualisation CRS / Mercator (deprecated)",GEOGCS["Popular Visualisation CRS",DATUM["Popular_Visualisation_Datum",SPHEROID["Popular Visualisation Sphere",6378137,0,AUTHORITY["EPSG","7059"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6055"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4055"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],AUTHORITY["EPSG","3785"],AXIS["X",EAST],AXIS["Y",NORTH]]
К сожелению ответов на вопросы я не нашел
1) В какой системе координат идет osm (я как-то думал, что она в wgs84)
2) Как задать систему координат в которой осуществить выгрузку ( в pgsql2shp таких параметров не нашел )
3) попытка загрузить из осм в постгру в систему координат 4326 - тоже не увенчалась успехом

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

osm2pgsql --proj 4326 --create --slim --drop --cache 2000 --cache-strategy dense --number-processes 3 --input-reader pbf --host localhost --port 5432 --database osm --username postgres mapAll.pbf
Если укажете на мою ошибку, или подскажите где поучить мат.часть буду благодарен.
Спасибо!

trir
Гуру
Сообщения: 5354
Зарегистрирован: 09 апр 2010, 19:30
Репутация: 1021
Ваше звание: просто мимо прохожу
Откуда: Ё-бург

Re: Данные OSM для навигатора DeLorme

Сообщение trir » 11 фев 2016, 06:48

Где то надо пересчитать EPSG:4326 в EPSG:3785
По ходу pbf идёт с EPSG:900913
А зачем вообще такие заморочки? Когда есть готовые shp'ы!

Andrey Zhukov
Гуру
Сообщения: 838
Зарегистрирован: 10 дек 2009, 23:24
Репутация: 169
Ваше звание: старик-гисовик
Откуда: Москва
Контактная информация:

Re: Данные OSM для навигатора DeLorme

Сообщение Andrey Zhukov » 11 фев 2016, 09:25

1 и 3. По умолчанию osm2pgsql заливает данные в Веб-Меркаторе, который известен по многим EPSG (и 3785, и 3857, и 900913). Для 4326 нужно указывать опцию latlong, а не proj 4326.
2. pgsql2shp управляется через банальный SELECT (например, st_transform(way,3395) as way вернет координаты в обычном Меркаторе )

Vorchun
Новоприбывший
Сообщения: 2
Зарегистрирован: 10 фев 2016, 18:46
Репутация: 0

Re: Данные OSM для навигатора DeLorme

Сообщение Vorchun » 11 фев 2016, 10:54

Спасибо за ответы, и за то, что создали отдельную тему.
Мне кажется, что тема в основном про методику конвертации из OSM в shape - при помощи postgis, нежели формировании данных для delorme (там своего хватает).
Почему не воспользовался готовыми shape - первоначально я ими и воспользовался. Но:
0) xmap импортирует шейпы в собственные гис слои. Один шейп в один слой
1) delorme не понимает уникод - это чисто американская контора работающая в основном на внутренний рынок. Постгрес позволяет автоматом проводить транслитерацию.
2) Для каждого гис слоя в xmap существуют настройки при каком z-уровне отображается данный слой. Таким образом встает вопрос о разбиении шейпа на составляющие. Для меня удобнее воспользоваться постгресом и sql
для формирования необходимых слоев.
3) В xmap каждый гис позволяет проводить классификацию, и согласно этой классификации проводить отрисовку слоя. Классифицировать можно только по одному столбцу. Формирование необходимых столбцов классификации удобнее формировать в постгрес.
4) И пожалуй самое главное - я не привязан к указанной выгрузке. Для всего ,что есть в OSM, я смогу сконвертировать тот результат, который нужен мне, никого не напрягая.

p.s. Вообще к результату(shape файлам) открытого проекта, неплохо было бы приложить методику получения этих результатов.

Ответить

Вернуться в «Общий - ПО»

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

Сейчас этот форум просматривают: Bing [Bot] и 2 гостя