OSM, TileCache и Mapnik - PullRequest
       41

OSM, TileCache и Mapnik

2 голосов
/ 24 мая 2011

Я уже две с половиной недели пытаюсь получить локальную копию OpenStreetMap, работающую на сервере. Я скачал файл планеты и импортировал его в базу данных PostGIS под названием «osm». Я использовал инструменты OSM Mapnik для генерации таблицы стилей XML для использования Mapnik. Я использовал TileLite, чтобы доказать, что Mapnik может отображать плитки OSM из базы данных. Плитки даже выглядят так, как я хочу, чтобы они выглядели.

Моя проблема сейчас в том, что я не могу заставить TileCache работать с Mapnik. У меня установлен экземпляр MapServer, который я использую для обслуживания шейп-файлов. Это работает с TileCache. Стандартный базовый слой в файле конфигурации TileCache также работает. Пожалуйста, помогите с моим уровнем OSM:

[osm]
type=Mapnik
mapfile=/var/maps/bin/mapnik/osm.xml
spherical_mercator=true
bbox=-16697000,8610000,-16667000,8640000
maxResolution=156543.0339/4
levels=18
srs=EPSG:900913

Я прочитал каждое последнее сообщение в блоге, сообщение на форуме и учебник, которые я могу найти. Любая помощь будет оценена. Я подозреваю, что либо что-то пропустил, либо я делаю что-то глупое.

1 Ответ

4 голосов
/ 24 мая 2011

Nik

Я могу понять потенциальные трудности здесь и то, что вы пробовали несколько вещей. Вы не сказали, с какими именно проблемами вы столкнулись, поэтому я думаю, что это ваша проблема:

  • Вы используете OpenLayers для проверки правильности производства плиток, но при подключении к плиткам, созданным с помощью TileCache, все не совпадает.

Что это? Если нет, пожалуйста, предоставьте немного больше деталей.

Если это проблема, то, скорее всего, вам нужно убедиться, что вы используете тип слоя "TMS" в OpenLayers и сопоставите его с параметрами слоя TileCache.cfg. «TMS» очень похож на схему листов OSM за исключением того, что значение y перевернуто.

Во всяком случае, что-то вроде этого должно работать:

tilecache.cfg

[osm]
type=Mapnik
mapfile=/full/path/to/osm.xml
spherical_mercator=true

Слой OpenLayers

var tms = new OpenLayers.Layer.TMS("TileCache TMS Layer","http://localhost:8000/",
                { serviceVersion: "1.0.0", layername: "osm",  type: "png" });
map.addLayers([tms]);

Я извлек это из своего старого примера с первого раза, когда я заработал эту работу: http://mapnik -utils.googlecode.com / svn / example_code / tilecache / openlayers_osm.html

...