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

twms здесь не при чем. Писал об этом. Не надо прыгать по масштабам, wmsplugin этого не любит.

ikz, причём здесь именно twms

У меня получались точно такие же картинки (микс из 3-6 зумов) без всякого twms. Можешь проверить в логах, это wmsplugin отдает команды на получение тайлов с разных зумов.

Решил установить себе TWMS, так как, почему-то, JOSM упорно не хочет показывать WMS Космоснимки.
Вроде всё сделал как написано в вики http://code.google.com/p/twms/wiki/Installing
Однако на выходе получилось следующее:

MOD_PYTHON ERROR

ProcessId:      844
Interpreter:    'SNK.DOMAIN.RU'

ServerName:     'SNK.DOMAIN.RU'
DocumentRoot:   'D:/GPS/TWMS'

URI:            '/index.py'
Location:       None
Directory:      'D:/GPS/TWMS/'
Filename:       'D:/GPS/TWMS/index.py'
PathInfo:       None

Phase:          'PythonHandler'
Handler:        'index'

Traceback (most recent call last):

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 1537, in HandlerDispatch
    default=default_handler, arg=req, silent=hlist.silent)

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 1202, in _process_target
    module = import_module(module_name, path=path)

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 296, in import_module
    log, import_path)

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 680, in import_module
    execfile(file, module.__dict__)

  File "D:\GPS\TWMS\index.py", line 18, in <module>
    import twms

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 991, in load_module
    return _global_modules_cache.import_module(self.__file)

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 680, in import_module
    execfile(file, module.__dict__)

  File "D:\GPS\TWMS\twms.py", line 20, in <module>
    from twms.twms import *

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 991, in load_module
    return _global_modules_cache.import_module(self.__file)

  File "C:\Program Files\Python\Lib\site-packages\mod_python\importer.py", line 488, in import_module
    assert(file != parent_info.file), "Import cycle in %s." % file

AssertionError: Import cycle in D:\GPS\TWMS\twms.py.


MODULE CACHE DETAILS

Accessed:       Wed Sep 08 10:56:48 2010
Generation:     0

_mp_6223fa8d894feab9126da5b7bbe42831 {
  FileName:     'D:\\GPS\\TWMS\\index.py'
  Instance:     1 [IMPORT]
  Generation:   0 [ERROR]
  Modified:     Mon Aug 09 01:08:34 2010
  Children:     'D:\\GPS\\TWMS\\twms.py'
}

_mp_658b7967f7b6f2b6747b1490d6e62168 {
  FileName:     'D:\\GPS\\TWMS\\twms.py'
  Instance:     1 [IMPORT]
  Generation:   0 [ERROR]
  Modified:     Mon Aug 09 01:08:34 2010
}


Нутром чую, что ругается на “from twms.twms import *”.
Можно это как-то вылечить?

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]