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

SoNiKa, в той доке явно написано, что mod_python больше не поддерживается. Цепляй к апачу как mod_wsgi, или вообще запускай standalone.

Насколько я помню, у меня вылечилось копированием подкаталога twms(не того, где index.py, а где __init.py, bbox.py и т.д.) в site-packages.
Уж извиняюсь, мы, русские, инструкций не читаем в принципе и всегда делаем по-своему)))

Спасибо.

Да, действительно, написано про apache + mod_wsgi. Однако это написано в подразделе Linux, который был пропущен, так как у меня это всё на Windows.

Сейчас попробуем иначе.

Ничего страшного, завести его на mod_python, в приниципе, можно и несложно. Но mod_python на каждый чих рестартит скрипт заново, не давая возможности делать рам-кеш (сейчас) и каким-то нормальным образом делать коммуникации между параллельными процессами (та самая ненавистная бага с “размытыми тайлами”)

Рекомендую сначала довести до работоспособного состояния в standalone, а уж потом цеплять к апачу.

Вроде передал на apache+mod_wsgi.
Прогресс на лицо, но не полный. Апач стал запускаться. А вот TWMS выдаёт “internal server error”.
В error логе появляется следующее:

[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1] Traceback (most recent call last):
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "C:\\Program Files\\Python 2.7\\lib\\site-packages\\web\\application.py", line 242, in process
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     return self.handle()
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "C:\\Program Files\\Python 2.7\\lib\\site-packages\\web\\application.py", line 233, in handle
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     return self._delegate(fn, self.fvars, args)
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "C:\\Program Files\\Python 2.7\\lib\\site-packages\\web\\application.py", line 415, in _delegate
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     return handle_class(cls)
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "C:\\Program Files\\Python 2.7\\lib\\site-packages\\web\\application.py", line 390, in handle_class
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     return tocall(*args)
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "D:/___www_all/twms.ru/docs/twms.py", line 47, in GET
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     return handler()
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "D:/___www_all/twms.ru/docs/twms.py", line 36, in handler
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     resp, ctype, content = twms_main(data)
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "D:\\___www_all\\twms.ru\\docs\\twms\\twms.py", line 188, in twms_main
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     result_img = getimg(box,srs, (height, width), config.layers[ll], start_time, force)
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "D:\\___www_all\\twms.ru\\docs\\twms\\twms.py", line 394, in getimg
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     out = Image.new("RGBA", (x, y))
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "C:\\Program Files\\Python 2.7\\lib\\site-packages\\PIL\\Image.py", line 1763, in new
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     return Image()._new(core.fill(mode, size, color))
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]   File "C:\\Program Files\\Python 2.7\\lib\\site-packages\\PIL\\Image.py", line 37, in __getattr__
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1]     raise ImportError("The _imaging C module is not installed")
[Wed Sep 08 14:59:50 2010] [error] [client 127.0.0.1] ImportError: The _imaging C module is not installed

на запрос от JOSM`а

127.0.0.1 - - [08/Sep/2010:14:59:50 +0400] "GET /?layers=irs&bbox=30.2216561,59.8379394,30.2408080,59.8475608&srs=EPSG:4326&width=500&height=500 HTTP/1.1" 500 21

Не подскажите - куда дальше копать?

З.Ы. Установлены:
apache_httpd-2.2.16-win32-x86-openssl-0.9.8o
python-2.7
PIL-1.1.7.win32-py2.7

Я бы смотрел зависимости в файле C:\Program Files\Python 2.7\lib\site-packages\PIL\Image.py
Вероятно там указан модуль, который не установлен

Урряяя :slight_smile: Заработало :slight_smile:

В следующей комплектации apache+mod_wsgi:
apache_httpd-2.2.16-win32-x86-openssl-0.9.8o
python-2.6.6
pyproj-1.8.8.win32-py2.6
mod_wsgi-win32-ap22py26-3.3
PIL-1.1.7.win32-py2.6
webpy-webpy-webpy-0.34-17-g7bb7648

Всем огромное спасибо за помощь.

гм. а нельзя этот список уменьшить, например, до трёх строчек?

Если это вопрос ко мне, то я тут не специалист - чего “оно” у меня просило - то и ставил.

У меня такого без twms ни разу не было.

Кстати, сделал FreeBSD порт для tWMS.

http://www.freshports.org/www/twms

У меня было на кадастровой карте. А она ни разу через twms.
Хотел сделать скриншот, но похоже, что wmsplugin уже вылечили, поскольку повторить тот эффект пока не удалось.

Напишу для себя и других чтобы не забыть… ubuntu + apache + mod_wsgi

  1. sudo apt-get install python python-webpy python-pyproj python-imaging libapache2-mod-wsgi apache2 mercurial
  2. hg clone https://twms.googlecode.com/hg/ twms
  3. sudo gedit /etc/apache2/httpd.conf

WSGIPythonPath /var/www/latlon/wms/:/var/www/latlon/wms/twms/
WSGIDaemonProcess twmsd user=www-data group=www-data display-name=(wsgi:twms) python-path=/var/www/latlon/wms/
<VirtualHost *>
ServerAdmin me@komzpa.net
ServerName wms.play.latlon.org
DocumentRoot /var/www/latlon/wms
WSGIScriptAlias / /var/www/latlon/wms/twms.py
WSGIProcessGroup twmsd
AddType text/html .py
<Directory /var/www/latlon/wms/>
Order deny,allow
Allow from all

ErrorLog /var/log/apache2/error.log
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On

  1. sudo mkdir /var/www/latlon && sudo mkdir /var/www/latlon/wms
  2. cd twms
  3. sudo cp -R * /var/www/latlon/wms
  4. sudo chown www-data:www-data /var/www/latlon/wms
  5. sudo usermod -a -G www-data USER
  6. sudo /etc/init.d/apache2 restart
  7. В настройках JOSM->WMS создаем ссылку, например на IRS http://localhost/?layers=irs&

Кстати, а landsat из tiff’ов оно сможет раздавать?

Добавил репозиторий: deb http://go.latlon.org/debian everything latlon
При запуске twms из консоли получаю следующее

Traceback (most recent call last):
File “/usr/bin/twms”, line 19, in
from twms.twms import *
File “/usr/lib/pymodules/python2.6/twms/twms.py”, line 33, in
imp.load_source(“config”, config_path)
File “/etc/twms/twms.conf”, line 16, in
import fetchers
ImportError: No module named fetchers

Полагаю, что это из-за модуля fetchers, который находится где-то, что twms не может его найти… Как прописать путь к модулю?

Не подскажите, в чём проблема, поставит 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 изъяты из распространения.

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