TWMS - кеширующий тайловый WMS-сeрвер

Не подскажите, в чём проблема, поставит twms, ссылка http://localhost/wms/?layers=yhsat&bbox=38.2645676,56.1453162,39.4603353,56.8057105&srs=EPSG:4326&width=500&height=499 отображается в браузере картинкой - вроде всё работает.

Прописываю в merkaartor wms-сервер: http://localhost/wms/?layers=yhsat&

Загружаю москву и вижу в логах merkaartor-а:
ImageMapLayer::drawFull: getting: “/wms/?layers=yhsat&&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&TRANSPARENT=TRUE&LAYERS=yasat&SRS=&STYLES=&FORMAT=image/jpeg&WIDTH=1077&HEIGHT=793&BBOX=4188547.050088,7505192.442148,4189097.635557,7505597.840734”
requesting: “localhost/wms/?layers=yhsat&&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&TRANSPARENT=TRUE&LAYERS=yasat&SRS=&STYLES=&FORMAT=image/jpeg&WIDTH=1077&HEIGHT=793&BBOX=4188547.050088,7505192.442148,4189097.635557,7505597.840734”
getting: “http://localhost/wms/?layers=yhsat&&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&TRANSPARENT=TRUE&LAYERS=yasat&SRS=&STYLES=&FORMAT=image/jpeg&WIDTH=1077&HEIGHT=793&BBOX=4188547.050088,7505192.442148,4189097.635557,7505597.840734
Bg image ratio 1
Bg image scale 1 QSize(1077, 793) : QSize(1077, 793)
500 error: 662

В логах апача:
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/usr/lib/python2.6/site-packages/web/application.py”, line 242, in process
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] return self.handle()
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/usr/lib/python2.6/site-packages/web/application.py”, line 233, in handle
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] return self._delegate(fn, self.fvars, args)
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/usr/lib/python2.6/site-packages/web/application.py”, line 415, in _delegate
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] return handle_class(cls)
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/usr/lib/python2.6/site-packages/web/application.py”, line 390, in handle_class
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] return tocall(*args)
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/var/www/latlon/wms/twms.py”, line 47, in GET
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] return handler()
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/var/www/latlon/wms/twms.py”, line 36, in handler
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] resp, ctype, content = twms_main(data)
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/var/www/latlon/wms/twms/twms.py”, line 90, in twms_main
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] req_bbox = projections.from4326((27.6518898,53.8683186,27.6581944,53.8720359), srs)
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/var/www/latlon/wms/twms/projections.py”, line 158, in from4326
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] return transform(line, “EPSG:4326”, srs)
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] File “/var/www/latlon/wms/twms/projections.py”, line 189, in transform
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] pr2 = projs[srs2][“proj”]
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1] KeyError: u’’
[Sat Nov 06 18:22:04 2010] [error] [client 127.0.0.1]

Заработало после того, как в настройках merkaartor-а для этого WMS сервера указал опцию: EPSG:900913

Вроде показывается всё верно :slight_smile:

Вопрос к знающим - что это такое?

http://localhost/wms/?layers=yhsat&&VERSION=1.1.1&SERVICE=WMS&REQUEST=GetMap&TRANSPARENT=TRUE&LAYERS=yasat&**SRS=&**STYLES=&FORMAT=image/jpeg&WIDTH=1077&HEIGHT=793&BBOX=4188547.050088,7505192.442148,4189097.635557,7505597.840734
меркатор с какого-то перепугу сказал, что twms должен отдать картинку по ббоксу в проекции с названием “”. twms такой не знает, вот и ругается.

В связи с тем, что сообщество, к сожалению, не доросло (последней каплей послужило http://www.openstreetmap.org/user/Fedka/diary/12356 - пристыжайте его сами) - готовые сборки twms для windows изъяты из распространения.

спасибо конечно, а можно сделать таковой чтоб он только космоснимки показывал? ибо на медленной скорости тянуть подложку из инета - не айс.

Предлагаю быть хоть как-то последовательным и помимо изъятия с гугль-кода, убрать ссылку на готовый файл из этой темы (или снести его с яндекс.файлов, см. сообщение 2 этой же темы), и написать, всё-таки, инструкцию, как оно работает под виндой.

Собственно, я к чему: после бинга с космоснимками работать стало совсем грустно - тормозит, зараза…
Полистал эту тему, решил, что разбираться, что такое питон, мне категорически влом, скачал готовый бинарник.
Работает (кроме космоснимков мне ничего не интересно), НО! Периодически показывает голубой квадрат с предложением очистить кэш и обновить страницу.
Что с этим делать, блин?

Да, а ещё в процессе закачки (или ожидания закачки?..) тайлов зачем-то грузит процессор на все 100%. Как-то нехорошо…

esaulenka, если показывает голубой квадрат, значит прописан неправильный ключ. В бинарнике такое особо не поправишь.

Оно?

Подозрительно это, остальное-то грузится…

Ушёл выяснять, что такое python for win32 :wink:

Отчитываюсь :slight_smile:

Читаем http://code.google.com/p/twms/wiki/Installing, гуглим зависимости, скачиваем, устанавливаем:
python: http://www.python.org/download/ (я скачивал 2.7, скорее всего, 3.1 не подойдёт)
python-webpy: http://webpy.org/install
python-pyproj: http://code.google.com/p/pyproj/downloads/list
python-imaging: http://pypi.python.org/pypi/PIL (ахтунг! ссылка на download слегка мимо, нам надо http://effbot.org/downloads/#pil))

Качаем последнюю версию, http://code.google.com/p/twms/downloads/list, распаковываем, например, в D:\Maps\JOSM\ (каталог twms-0.0xx создаётся самостоятельно).

Лезем в файл D:\Maps\JOSM\twms-0.02w\twms\twms.conf, (Котяра! Напиши, пожалуйста, в документации, ГДЕ находится конфиг. Мне совсем неочевидно было), редактируем строки

tiles_cache = “D:/Maps/JOSM/AppData/twms_cache/”
install_path = “D:/Maps/JOSM/twms-0.02w/”
gpx_cache = “D:/Maps/JOSM/twms-0.02w/traces/”

(ахтунг! виндузятникам обратить внимание на слэши!)

Собственно, всё. Запускаем “python twms.py”, прописываем в JOSM’овском imagery wms:http://localhost:8080/?layers=irs& и радуемся.
Первая закачка почему-то заметно медленней, чем с того же latlon’а, зато потом летает :slight_smile:

Хм. Проблема актуальна. Зато теперь я знаю, где править :slight_smile:

Да, и ещё: как из батника убить этот скрипт? Ctrl-C жать некрасиво.
Update:
дополнил батник запуска JOSM строчками
start /min /belownormal python %CD%\twms-0.02w\twms.py
и
taskkill /im Python.exe
По хорошему, конечно, надо при старте писать во временный файлик PID процесса, как в лучших домах Европы, но при наличии ровно одного питоньего скрипта - сойдёт и так. Обе утилиты - из комплекта WinXP.

Именно Ctrl-C

Кстати, кеш очень удобно объединить с сас-планетовским

Можно вытягивать из другого wms. Только я этого тебе не говорил… :wink:

Столкнулся с такой проблемой: twms меняет проекцию тайла.
Вот что выдаёт twms стоящий на моём сервере:

И вот как это в реальности выглядит.

Запрос к twms:


http://192.168.1.5:8081/?layers=city&format=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=59.677734375,33.1787109375,59.688720703125,33.189697265625&WIDTH=256&HEIGHT=256

Настройки:


"city": { \
     "name": "City mapnik",
     "prefix": "city",                  # tile directory
     "ext": "png",                      # tile images extension
     "scalable": False,                 # could zN tile be constructed of four z(N+1) tiles
     "fetch": fetchers.Tile,    # function that fetches given tile. should return None if tile wasn't fetched
     "remote_url": "http://localhost/tiles/%s/%s/%s.png",
     "transform_tile_number": lambda z,x,y: (z-1,x,y),
     "proj": "EPSG:4326",
     "empty_color": "#F1EEE8",
     "cache_ttl": 864000,
}

И вот что у меня в OpenLayers:


        var map;        
        function init(){
    var options = {
        projection: "EPSG:4326",
        controls: [
              new OpenLayers.Control.MouseDefaults(), 
              new OpenLayers.Control.PanZoomBar(), 
              new OpenLayers.Control.MousePosition(),
              new OpenLayers.Control.LayerSwitcher()
            ]
    };


    map = new OpenLayers.Map('map', options);
                
    var wms = new OpenLayers.Layer.WMS( "My ciry", 
                "http://192.168.1.5:8081/?layers=city&format=image%2Fpng&"
            ); 
....

Подскажите как сделать нормальную проекцию.

Там проекция EPSG:3857, а вовсе не EPSG:4326. По крайней мере в twms.

PaulKaz, а что ж ему еще делать-то, если вы его заставляете EPSG:3857-тайлы воспринимать как EPSG:4326, а после этого ещё и спрашиваете их у него как EPSG:4326?
И пока что непонятно, зачем тут вообще twms, такие тайлы лучше напрямую подключить к openlayers :slight_smile:

Поменял в twms на “proj”: “EPSG:3857”, не помогло. В OL ставлю: projection: “EPSG:3857”, вообще перестаёт отображать карту.

Мне нужно отображать карту только своего города, поскольку если собирать больше, то процесс создания тайлов занимает больно много времени. Для этого использую в OL restrictedExtent, которая почему-то работает только с WMS…

PaulKaz, restrictedExtent работает и со сферическим меркатором, просто координаты надо задавать именно в нём, в сферическом меркаторе. Как минимум, возьмите за пример maps.navitel.su - там всё сделано тайлами, но есть и ограничения по скроллу.
И да, это уже вопросы по OL, не по twms - twms с работой справляется, запрошенные кривые тайлы выдаёт как следует :slight_smile:

У меня стоит win64+osgeo4w+postgis+tomcat6+geojazzy wmstilecache
в Openlayers загрузка карты идет очень медленно, несмотря на использование т.н tilecache. Решил попробовать twms.
Установил python27

1)Правильно ли я понимаю, что помимо самих файлов twms я должен установить mod_wsgi?
2)Непонятна сама цепочка, на что должен ссылаться OL? Сейчас у меня ссылается на tilecache, а та в совю очередь ссылается на wms mapserver.
3)Целесообразно ли ко всему прочему использовать FastCGI?

Komяpa, то есть для правильного отображения в настройках twms должна стоять проекция: 3857 и в OL у карты тоже такая же проекция?
И в запросе переменная SRS, должна иметь значение: EPSG:3857

Виндовая сборка заработала под вайном(1.3.27, ubuntu 11.04) Работает на ура.

luiswoo, извращенец. для debian-like дебка же собрана.