всё время наступаю на грабли WMS по такой схеме:
Сгенерил свой слой, прописал в rails-сервере ссылку вида:
http://gpw.rs.int/tilecache/tilecache.cgi/1.0.0/drsk/${z}/${x}/${y}.png
Слой показывается. Всё работает. Ссылки вида:
http://gpw.rs.int/tilecache/tilecache.cgi/1.0.0/drsk/13/7098/3006.png
Открываются.
Если же пытаюсь обратиться как к WMS:
http://gpw.rs.int/tilecache/tilecache.cgi?LAYERS=drsk&TRANSPARENT=true&FORMAT=png&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=131.923828125,43.06640625,132.01171875,43.154296875&WIDTH=256&HEIGHT=256
То ответ такой:
An error occurred: can't find resolution index for 0.000343. Available resolutions are:
[156543.03390000001, 78271.516950000005, 39135.758475000002, 19567.879237500001, 9783.9396187500006, 4891.9698093750003, 2445.9849046875001, 1222.9924523437501, 611.49622617187504, 305.74811308593752, 152.87405654296876, 76.43702827148438, 38.21851413574219, 19.109257067871095, 9.5546285339355475, 4.7773142669677737, 2.3886571334838869, 1.1943285667419434, 0.59716428337097172, 0.29858214168548586]
Кусок карты примерно один и тот же. Обращался к wms из тестового примера на OpenLayers.js, при подстановке туда другого слоя (base, который в конфиге tilecache-а ссылается на http://labs.metacarta.com/wms/vmap0 ) - карта отображается.
В гугле (http://osgeo-org.1803224.n2.nabble.com/Configuration-of-TileCache-and-OpenLayers-td1837117.html) нашёл решение:
Нужно вычесть от одной координаты слоя другую (брать из bbox в generate_tiles.py), поделить это на 512 и получим maxResolution. Прописываем bbox и maxResolution в html-ку из которой обращаемся к tilecache-у, а так же прописываем bbox слоя в конфиг tilecache-а для этого слоя.
Попробовал - не получилось.
Вопрос - правильное ли это решение, если да - где я ошибся, если нет - то какое правильное?
Пробовал сгенерить “базовую карту”:
bbox = (-180.0,-85.0, 180.0,85.0)
render_tiles(bbox, mapfile, tile_dir, 0, 5, "World")
Думаю, уж эта-то должна отображаться правильно по-умолчанию - ан нет - та же проблема.
WMS нужен, чтобы отображать эти слои в виде подложки в josm.
Код js в html-ке, для отобраджения базового и моего слоя:
var base_map = new OpenLayers.Layer.WMS( "tilecache",
"http://gpw.rs.int/tilecache/tilecache.cgi?",
{ layers: 'basic',
format: 'png'} );
map.addLayer(base_map);
var tc = new OpenLayers.Layer.WMS( "tilecache",
"http://gpw.rs.int/tilecache/tilecache.cgi?",
{ layers: 'drsk',
transparent: 'true',
format: 'png'} );
map.addLayer(tc);
Конфиг tilecache-а по поводу этих слоёв:
[basic]
type=WMS
url=http://labs.metacarta.com/wms/vmap0
extension=png
[drsk]
type=MapnikLayer
mapfile=/opt/osm/mapnik/mapnik_drsk/mapnik/osm2.xml
spherical_mercator=true
tms_type=google
metatile=yes