Рендерить пибрид с помощью mapnik
-
- Участник
- Сообщения: 78
- Зарегистрирован: 03 май 2014, 21:02
- Репутация: 5
Рендерить пибрид с помощью mapnik
Здравствуйте!! Подскажите в каком направление искать и возможно ли это сделать с помощью mapnika! Есть локальный тайловый сервер куда загуржаются и нарезаются на тайлы космические снимки земной поверхности, а также база данных OSM установлен mapnik. Необходимо с помощью mapnika на основе имеющейся нарезки тайлов спутникового снимка земли и базы данных OSM отрендерить гибрид (т.е. нанести на на имеющееся тайлы основные дороги и названия населенных пунктов).
- SergeyRyzhkov
- Гуру
- Сообщения: 909
- Зарегистрирован: 02 июл 2014, 19:13
- Репутация: 203
- Ваше звание: GP-экотеррористы
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Рендерить пибрид с помощью mapnik
Интересная задача. Через месяц придется самому решение искать.
Если найдете что-то - отпишитесь, пожалуйста.
Пока что на ум приходит (к Mapnik не относится), из БД OSM нарезать также тайлы, а затем тем или иным способом "смержить" два набора, например используя GDAL.
Загвоздка в том что сами по себе тайлы не геопривязаны. Вернее если в структуре, например, файловой то косвенно имеем привязку, но как отдельный файл - нет
Если найдете что-то - отпишитесь, пожалуйста.
Пока что на ум приходит (к Mapnik не относится), из БД OSM нарезать также тайлы, а затем тем или иным способом "смержить" два набора, например используя GDAL.
Загвоздка в том что сами по себе тайлы не геопривязаны. Вернее если в структуре, например, файловой то косвенно имеем привязку, но как отдельный файл - нет
-
- Участник
- Сообщения: 78
- Зарегистрирован: 03 май 2014, 21:02
- Репутация: 5
Re: Рендерить пибрид с помощью mapnik
Читал якобы космоснимки http://blog.kosmosnimki.ru/2010/02/17/h ... osmosnimki делают гибрид с помощью мапника. Значит по идее можно! Но пока не могу найти технических аспектов реализации!
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Рендерить пибрид с помощью mapnik
Очень просто, берете MapProxy, подключаете тайловый источник и слой на базе мапника и комбинируете как угодно.
Spatial is now, more than ever, just another column- The Geometry Column.
- SergeyRyzhkov
- Гуру
- Сообщения: 909
- Зарегистрирован: 02 июл 2014, 19:13
- Репутация: 203
- Ваше звание: GP-экотеррористы
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Рендерить пибрид с помощью mapnik
А еще способы есть сформировать (сгенерить) тайлы из нескольких источников?
MapProxy и т.д. - это хорошо, но хотелось бы иметь минимум доп. установок.
MapProxy и т.д. - это хорошо, но хотелось бы иметь минимум доп. установок.
-
- Участник
- Сообщения: 78
- Зарегистрирован: 03 май 2014, 21:02
- Репутация: 5
Re: Рендерить пибрид с помощью mapnik
Спасибо Денис! Буду теперь разбираться!
- SergeyRyzhkov
- Гуру
- Сообщения: 909
- Зарегистрирован: 02 июл 2014, 19:13
- Репутация: 203
- Ваше звание: GP-экотеррористы
- Откуда: Санкт-Петербург
- Контактная информация:
Re: Рендерить пибрид с помощью mapnik
geka83
Делитесь результатом
Делитесь результатом

-
- Интересующийся
- Сообщения: 16
- Зарегистрирован: 12 дек 2009, 16:35
- Репутация: 0
- Откуда: Москва
Re: Рендерить пибрид с помощью mapnik
Чтобы срендерить гибридный тайл достаточно добавить к объекту mapnik.map второй слой с описанным стиле, естественно
Код: Выделить всё
m = mapnik.Map(600, 600, 'init:epsg:3857')
s = mapnik.Style()
s1 = mapnik.Style()
r = mapnik.Rule()
r1 = mapnik.Rule()
r.symbols.append(mapnik.RasterSymbolizer())
r1.symbols.append(mapnik.LineSymbolizer())
s.rules.append(r)
s1.rules.append(r1)
m.append_style('Raster', s)
m.append_style('Vector', s1)
layer = mapnik.Layer('world', m.srs)
layer.datasource = mapnik.Gdal(file='/path/to/file.tif)
layer.styles.append('Raster')
m.layers.append(layer)
layer1 = mapnik.Layer('fields', m.srs)
layer1.datasource = mapnik.PostGIS(host='...', user='...', password='...', dbname='...',table='vector_table',srid=3857)
layer1.styles.append('Vector')
m.layers.append(layer1)
m.zoom_all()
image = mapnik.Image(m.width, m.height)
mapnik.render(m, image)
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя