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&