Рендерить пибрид с помощью mapnik

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
geka83
Участник
Сообщения: 78
Зарегистрирован: 03 май 2014, 21:02
Репутация: 5

Рендерить пибрид с помощью mapnik

Сообщение geka83 » 05 мар 2015, 23:47

Здравствуйте!! Подскажите в каком направление искать и возможно ли это сделать с помощью mapnika! Есть локальный тайловый сервер куда загуржаются и нарезаются на тайлы космические снимки земной поверхности, а также база данных OSM установлен mapnik. Необходимо с помощью mapnika на основе имеющейся нарезки тайлов спутникового снимка земли и базы данных OSM отрендерить гибрид (т.е. нанести на на имеющееся тайлы основные дороги и названия населенных пунктов).

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Рендерить пибрид с помощью mapnik

Сообщение SergeyRyzhkov » 06 мар 2015, 10:16

Интересная задача. Через месяц придется самому решение искать.
Если найдете что-то - отпишитесь, пожалуйста.

Пока что на ум приходит (к Mapnik не относится), из БД OSM нарезать также тайлы, а затем тем или иным способом "смержить" два набора, например используя GDAL.
Загвоздка в том что сами по себе тайлы не геопривязаны. Вернее если в структуре, например, файловой то косвенно имеем привязку, но как отдельный файл - нет

geka83
Участник
Сообщения: 78
Зарегистрирован: 03 май 2014, 21:02
Репутация: 5

Re: Рендерить пибрид с помощью mapnik

Сообщение geka83 » 06 мар 2015, 14:46

Читал якобы космоснимки http://blog.kosmosnimki.ru/2010/02/17/h ... osmosnimki делают гибрид с помощью мапника. Значит по идее можно! Но пока не могу найти технических аспектов реализации!

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

Re: Рендерить пибрид с помощью mapnik

Сообщение Denis Rykov » 06 мар 2015, 15:34

Очень просто, берете MapProxy, подключаете тайловый источник и слой на базе мапника и комбинируете как угодно.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Рендерить пибрид с помощью mapnik

Сообщение SergeyRyzhkov » 06 мар 2015, 15:40

А еще способы есть сформировать (сгенерить) тайлы из нескольких источников?
MapProxy и т.д. - это хорошо, но хотелось бы иметь минимум доп. установок.

geka83
Участник
Сообщения: 78
Зарегистрирован: 03 май 2014, 21:02
Репутация: 5

Re: Рендерить пибрид с помощью mapnik

Сообщение geka83 » 06 мар 2015, 16:05

Спасибо Денис! Буду теперь разбираться!

Аватара пользователя
SergeyRyzhkov
Гуру
Сообщения: 909
Зарегистрирован: 02 июл 2014, 19:13
Репутация: 203
Ваше звание: GP-экотеррористы
Откуда: Санкт-Петербург
Контактная информация:

Re: Рендерить пибрид с помощью mapnik

Сообщение SergeyRyzhkov » 12 мар 2015, 15:20

geka83
Делитесь результатом :)

bms
Интересующийся
Сообщения: 16
Зарегистрирован: 12 дек 2009, 16:35
Репутация: 0
Откуда: Москва

Re: Рендерить пибрид с помощью mapnik

Сообщение bms » 10 апр 2015, 10:42

Чтобы срендерить гибридный тайл достаточно добавить к объекту 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 гостя