banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 Mon 03 May 2010 11:10

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Configuration TileCache en mod_python sous Linux

Bonjour,

Je retrouve un problème à configurer TileCache en mod_python.
J’ai regardé dans les différents posts sur ce forum mais je commence un peu à me perdre. Quelqu’un saurait’ il m’apporter quelques conseils ?

Voici ma config actuelle (sous linux) :

J’ai mon fichier tilecache.cfg (/etc/tilecache.cfg) qui comporte les lignes suivantes (en plus de la couche [basic]) :

Code:

[cache]
type=Disk
base=/CACHE/

En mettant DiskCache à la place de Disk je n’ai pas l’impression que ça change grand-chose.

Dans /etc/apache2/httpd.conf j’ai les lignes suivantes :

Code:

Alias /tilecache /var/www/html/tilecache/
<Directory "/var/www/html/tilecache/">
AddHandler python-program .py
PythonHandler TileCache.Service
PythonOption TileCacheConfig /etc/tilecache.cfg
PythonPath "['/var/www/html/tilecache/'] + sys.path"
PythonDebug On
Order allow,deny
Allow from all
</Directory>

Là je me pose une question : « Faut-il pointer vers le répertoire tilecache comprenant tilecache.py, tilecache_seed.py, le répertoire TileCache ou vers ce dernier répertoire comprenant Cache.py, Service.py … ?

Et enfin sous /var/www/html/tilecache/tilecache.py :

Code:

#!/usr/bin/env python

from TileCache import Service, cgiHandler, cfgfiles

if __name__ == '__main__':
    svc = Service.load(*cfgfiles)
    cgiHandler(svc)

J’ai l’impression qu’en remplaçant /usr/bin/env python par /usr/bin/python dans tilecache.py ça ne change rien.

Lorsque je tape http://xxxxxx.fr/html/tilecache/tilecache.py? Dans un navigateur j’ai bien :

<Services>
<TileMapService version="1.0.0" href="http://xxxxxxxx.fr/1.0.0/"/>
</Services>


Ce qui indique que le module python d’Apache fonctionne.

Par contre lorsque je veux ouvrir l’exemple Vmap0 mes tuiles s’affichent en rose et quand j’essaie d’afficher une dalle j’ai l’erreur suivante :

An error occurred: [Errno 13] Permission denied: '/CACHE/basic'
  File "/var/www/html/tilecache/TileCache/Service.py", line 256, in modPythonHandler
    host )
  File "/var/www/html/tilecache/TileCache/Service.py", line 208, in dispatchRequest
    return self.renderTile(tile, params.has_key('FORCE'))
  File "/var/www/html/tilecache/TileCache/Service.py", line 139, in renderTile
    if (data): image = self.cache.set(tile, data)
  File "/var/www/html/tilecache/TileCache/Caches/Disk.py", line 77, in set
    self.makedirs(dirname)
  File "/var/www/html/tilecache/TileCache/Caches/Disk.py", line 34, in makedirs
    raise E


Et lorsque je tape la commande /var/www/html/tilecache/tilecache_seed.py [basic] 1 2 dans une invite de commandes j’ai l’erreur suivante :

-bash: line 13: /var/www/html/tilecache/tilecache_seed.py: Permission denied


Dans un post précédant (http://georezo.net/forum/viewtopic.php? … lecache.py) sur le même sujet, Guillaume Sueur indiquait :

Tilecache doit évidemment avoir été installé sur le système (python setup.py install), et pas uniquement décompressé dans un répertoire quelconque !


Mais je ne comprends pas bien en quoi cela consiste.

Quelqu’un peut-il m’avancer ?

Merci d’avance pour toute aide.
Estelle

Hors ligne

 

#2 Mon 03 May 2010 11:44

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: Configuration TileCache en mod_python sous Linux

Bonjour,

Je crois que ton install est OK, puisque TileCache répond bien, mais que ton répertoire /CACHE/ n'a pas les droits en écriture pour l'utilisateur apache (ou www-data selon les distros).

Guillaume

Hors ligne

 

#3 Mon 03 May 2010 11:47

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Configuration TileCache en mod_python sous Linux

Bonjour,

Pour faire suite au message de Guillaume, ton répertoire doit être sous l'utilisateur www-data (ou du moins l'utilisateur utilisé pour le service Apache).

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#4 Mon 03 May 2010 11:47

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Merci Guillaume et Yves.
Je vais regarder de ce côté.
Cela pourrait-il être dû à un manque de place sur le disque ?

Dernière modification par Sitelle (Mon 03 May 2010 11:47)

Hors ligne

 

#5 Tue 04 May 2010 09:38

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Effectivement c'était bien une question de droit d'écriture de l'utilisateur www-data. Merci.
Pour le manque de place c'est l'erreur suivante :

An error occurred: [Errno 28] No space left on device: '/CACHE/basic'


A laquelle je vais devoir remédier à présent smile

Hors ligne

 

#6 Wed 26 May 2010 10:35

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Bonjour,

Comme tout le monde, je souhaiterai à présent mettre mes propres wms en cache.
Tout fonctionne bien avec le fond Metacarta mais avec mes propres données, ça coince.

Mes dalles affichées sont roses à toutes les échelles et quand j'essaie d'accéder à l'url d'une dalle, le navigateur m'indique juste que le lien semble brisé.

Pour info l'url de la dalle propose cette requête :


Quand j'essaie de générer le cache avec tilecache_seed ça ne fonctionne pas non plus (alors que ça fonctionne pour metacarta) et j'ai l'erreur suivante :

/etc$ sudo -u www-data /var/www/html/tilecache/tilecache_seed.py test 0 2

Traceback (most recent call last):
  File "/var/www/html/tilecache/tilecache_seed.py", line 9, in <module>
    TileCache.Client.main()
  File "/var/www/html/tilecache/TileCache/Client.py", line 153, in main
    layer = svc.layers[args[0]]
KeyError: 'test'


Du coup je ne comprends pas bien à quoi ça peut être dû.

Petites précisions :

Lorsque j'essaie d'afficher mon mapfile avec l'url suivante ça affiche bien mon image.


Mon mapfile est le suivant :

Code:

MAP
    NAME "mywms"
    IMAGETYPE PNG 
    EXTENT 343974 1708994 1030912 2163897
    SIZE 800 600
    IMAGECOLOR 255 255 255
    SHAPEPATH "/var/www/dev/"
    TRANSPARENT on 
       PROJECTION
        "init=epsg:27572"  
    END

WEB
IMAGEPATH "/CACHE/" 
IMAGEURL "/ms_tmp/"
METADATA
  "wms_title" "rast1"
  "wms_onlineresource" "http://xxxxxxxxxxxxxxxxxxxxxxxxxxx.fr/cgi-bin/mapserv?map=/var/www/dev/mapfile.map&"
  "wms_srs" "epsg:27572"
  "wms_format" "image/png"
END
TEMPLATE "/var/www/dev/modele.html"
END


OUTPUTFORMAT
                NAME "png"
                DRIVER "AGG/PNG"
                MIMETYPE "image/png"
                IMAGEMODE RGBA
                FORMATOPTION "QUANTIZE_FORCE=ON"
                FORMATOPTION "QUANTIZE_DITHER=OFF"
                FORMATOPTION "QUANTIZE_COLORS=256"
                FORMATOPTION  "INTERLACE=OFF"
                TRANSPARENT ON
    END

#################Layer ######################


LAYER 
    NAME rast1
    GROUP rast1
    METADATA
    "wms_title" "rast1"
    "wms_srs" "EPSG:27572"
    "wms_format" "image/png"
    END
    STATUS OFF
    TILEINDEX scan25
    TILEITEM "location"
    TYPE RASTER
        CLASS
        STYLE
           # COLOR 245 245 245
            OUTLINECOLOR 0 0 0
          #  SYMBOL 'circle'
          #  SIZE 10
           END
       #TEMPLATE "void" 
       
       
       END            
  END 
    
####### Fin du Layer ##########
    
END

La déclaration de la couche dans tilecache.cfg est la suivante :

Code:

[test]
type=WMS
url=http://xxxxxxxxxxxxxxxxxxx.fr/cgi-bin/mapserv?map=/var/www/dev/scan25.map&
extension=png
srs=EPSG:27572

Et dans mon fichier index.html :

Code:

        function init(){
            map = new OpenLayers.Map( $('map'), {'maxResolution': 3527.775872778807, projection: new OpenLayers.Projection("EPSG:27572")});
            layer = new OpenLayers.Layer.WMS( "Scan25", 
                    "http://xxxxxxxxxxxxx.fr/html/tilecache/tilecache.py?", {layers: 'test', format: 'image/png' } );
            map.addLayer(layer);
            map.addControl(new OpenLayers.Control.Permalink());
            if (!map.getCenter()) map.zoomToMaxExtent();
        }

Merci d'avance pour toute aide.
Estelle

Dernière modification par Sitelle (Wed 26 May 2010 10:36)

Hors ligne

 

#7 Wed 26 May 2010 11:42

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Configuration TileCache en mod_python sous Linux

Bonjour,

Quelle est la configuration du vhost du serveur Apache ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#8 Wed 26 May 2010 15:04

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Alors...
Après avoir fait

find -name *vhost*


On me présente 4 fichiers :
./var/log/apache2/other_vhosts_access.log
./etc/apache2/mods-available/vhost_alias.load
./usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-vhosts.conf
./usr/lib/apache2/modules/mod_vhost_alias.so

./var/log/apache2/other_vhosts_access.log


est vide

Dans le fichier suivant :

./etc/apache2/mods-available/vhost_alias.load


J'ai la ligne :

Code:

LoadModule vhost_alias_module /usr/lib/apache2/modules/mod_vhost_alias.so

Mais je n'arrive pas à éditer mod_vhost_alias.so

Et dans ./usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-vhosts.conf
J'ai :

Code:

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "/var/log/apache2/dummy-host2.example.com-error_log"
    CustomLog "/var/log/apache2/dummy-host2.example.com-access_log" common
</VirtualHost>

Mais je n'ai pas l'impression d'avoir regardé les bons fichiers. En fait ce n'est pas moi qui ai fait l'installation d'Apache.

Hors ligne

 

#9 Wed 26 May 2010 15:18

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Ah tiens aussi dans /etc/apache2/sites_enabled/000-default j'ai :

Code:

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    
    DocumentRoot /var/www/
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>
        <Directory /var/www/tilecache/>
    AddHandler python-program .py
    PythonHandler TileCache.Service
    PythonOption TileCacheConfig /etc/tilecache.cfg
</Directory>
    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from xxx.0.0.0/zzz.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Hors ligne

 

#10 Wed 26 May 2010 16:33

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Configuration TileCache en mod_python sous Linux

C'est bien le deuxième post qui m'intéressé wink

Code:

    </Directory>
        <Directory /var/www/tilecache/>
    AddHandler python-program .py
    PythonHandler TileCache.Service
    PythonOption TileCacheConfig /etc/tilecache.cfg
</Directory>

Est ce que /etc/tilecache.cfg est bien le fichier de configuration que tu utilises ? Est ce que ton site est bien situé dans /var/www/ et qu'il n'y a pas d'autres vhost ?

Est ce que mod_python est bien installé ? Regarde dans /etc/apache/mod_enabled/ s'il n'y a pas mod_python, regarde dans mod-available/ s'il y est lance a2enmod python dans une console, sinon installe le et lance la commande a2enmod python

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#11 Wed 26 May 2010 17:47

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Merci Yves.

Alors :
Mon fichier de configuration est bien tilecache.cfg.
Mon site est sous /var/www/html/tilecache/

Pour les autres questions il faut que je fasse une recherche plus approfondie.
Est-ce que, si je n'ai pas de mod_python ni dans etc/apach/mod_enabled ni dans etc/apach/mod_available, alors ça veut dire que le mod_python n'est pas bien installé ?

Et est-ce que cela fonctionnerai quand même avec Metacarta si le mod_python était mal installé ?

Dernière modification par Sitelle (Wed 26 May 2010 17:54)

Hors ligne

 

#12 Wed 26 May 2010 18:34

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Configuration TileCache en mod_python sous Linux

Sitelle a écrit:

Et est-ce que cela fonctionnerai quand même avec Metacarta si le mod_python était mal installé ?


Que veux tu dire pour Metacarta ?

Tu peux publier ton fichier /etc/tilecache.cfg stp ?

Y


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#13 Wed 26 May 2010 19:56

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: Configuration TileCache en mod_python sous Linux

Bonjour,

Si le tilecache_seed ne marche pas, c'est qu'il y a un problème dans le fichier de conf. Il ne manquerait pas les resolutions pour ton layer par hasard ?

Hors ligne

 

#14 Thu 27 May 2010 09:35

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Voici mon fichier tilecache.cfg :

Code:

# Configuration for MC TileCache

# TileCache can load Layers or Caches from anywhere in sys.path. If you 
# prefer to load from somewhere which is *not* on sys.path, you can use
# the path configuration paramter to set a comma-seperated list of 
# filesystem paths which you want prepended to sys.path.
#[tilecache_options]
#path=/home/you

# Some TileCache options are controlled by metadata. One example is the
# crossdomain_sites option, which allows you to add sites which are then
# included in a crossdomain.xml file served from the root of the TileCache
#[metadata]
#crossdomain_sites=openstreetmap.org,openaerialmap.org

# [cache] section examples: (mandatory!)
# 
# Disk:
# [cache] 
# type=Disk   (works out of the box)
# base=<full path to cache directory>
# 
# Memcached:
# [cache]
# type=Memcached  (you'll need memcache.py and memcached running!)
# servers=192.168.1.1:11211
#
# Amazon S3:
# [cache]
# type=AWSS3
# access_key=your_access_key
# secret_access_key=your_secret_access_key

[cache]
type=DiskCache
base=/CACHE/

# [layername] -- all other sections are named layers
#
# type={MapServerLayer,WMSLayer} 
#   *** if you want to use MapServerLayer, you *must* have Python mapscript
#       installed and available ***
# 
# mapfile=<full path to map file>   
# url=<full URL of WMS>             
# layers=<layer>[,<layer2>,<layer3>,...] 
#                                   *** optional iff layername if what
#                                       your data source calls the layer **
# extension={png,jpeg,gif}          *** defaults to "png"               ***
# size=256,256                      *** defaults to 256x256             ***
# bbox=-180.0,-90.0,180.0,90.0      *** defaults to world in lon/lat    ***
# srs=EPSG:4326                     *** defaults to EPSG:4326           ***
# levels=20                         *** defaults to 20 zoom levels      ***
# resolutions=0.1,0.05,0.025,...    *** defaults to global profile      ***
# metaTile=true                     *** metatiling off by default
#                                       requires python-imaging         ***
# metaSize=5,5                      *** size of metatile in tiles
#                                       defaults to 5 x 5               ***
# metaBuffer=10                     *** size of metatile buffer in px   ***
# mime_type=image/png  *** by default, the mime type is image/extension ***   
#                      *** but you may want to set extension=png8 for   ***
#                      *** GeoServer WMS, and this lets you set the     ***
#                      *** mime_type seperately.                        ***

# The following is a demonstration of a layer which would be generated
# according to the 'Google projection'. This uses the standard values for
# a spherical mercator projection for maxextent, maxresolution, units 
# and srs.
# [google-tiles]
# type=WMS
# url=http://localhost/cgi-bin/mapserv?map=/mapdata/world.map
# layers=world
# spherical_mercator=true

# Standard MapServer layer configuration.
# [vmap0]
# type=MapServer
# layers=vmap0
# mapfile=/var/www/vmap0.map

# Rendering OpenStreetMap data with Mapnik; should use metaTiling to
# avoid labels across tile boundaries 
# [osm]
# type=Mapnik
# mapfile=/home/user/osm-mapnik/osm.xml
# spherical_mercator=true
# tms_type=google
# metatile=yes


[rast1]
type=WMS
url=http://xxxxxxxxxxxxxxxxxxxxxxxx.fr/cgi-bin/mapserv?map=/var/www/dev/mapfile.map&
extension=png
srs=EPSG:27572

Quand je dis Metacarta c'est le fond [basic] d'OpenLayers proposé pour tester le bon fonctionnement de TileCache.

Guillaume, je vais essayer en rajoutant les résolutions.

Dernière modification par Sitelle (Thu 27 May 2010 09:36)

Hors ligne

 

#15 Thu 27 May 2010 11:43

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

J'ai ajouté les résolutions dans le fichier de configuration :

Code:

# Configuration for MC TileCache

# TileCache can load Layers or Caches from anywhere in sys.path. If you 
# prefer to load from somewhere which is *not* on sys.path, you can use
# the path configuration paramter to set a comma-seperated list of 
# filesystem paths which you want prepended to sys.path.
#[tilecache_options]
#path=/home/you

# Some TileCache options are controlled by metadata. One example is the
# crossdomain_sites option, which allows you to add sites which are then
# included in a crossdomain.xml file served from the root of the TileCache
#[metadata]
#crossdomain_sites=openstreetmap.org,openaerialmap.org

# [cache] section examples: (mandatory!)
# 
# Disk:
# [cache] 
# type=Disk   (works out of the box)
# base=<full path to cache directory>
# 
# Memcached:
# [cache]
# type=Memcached  (you'll need memcache.py and memcached running!)
# servers=192.168.1.1:11211
#
# Amazon S3:
# [cache]
# type=AWSS3
# access_key=your_access_key
# secret_access_key=your_secret_access_key

[cache]
type=DiskCache
base=/CACHE/

# [layername] -- all other sections are named layers
#
# type={MapServerLayer,WMSLayer} 
#   *** if you want to use MapServerLayer, you *must* have Python mapscript
#       installed and available ***
# 
# mapfile=<full path to map file>   
# url=<full URL of WMS>             
# layers=<layer>[,<layer2>,<layer3>,...] 
#                                   *** optional iff layername if what
#                                       your data source calls the layer **
# extension={png,jpeg,gif}          *** defaults to "png"               ***
# size=256,256                      *** defaults to 256x256             ***
# bbox=-180.0,-90.0,180.0,90.0      *** defaults to world in lon/lat    ***
# srs=EPSG:4326                     *** defaults to EPSG:4326           ***
# levels=20                         *** defaults to 20 zoom levels      ***
# resolutions=0.1,0.05,0.025,...    *** defaults to global profile      ***
# metaTile=true                     *** metatiling off by default
#                                       requires python-imaging         ***
# metaSize=5,5                      *** size of metatile in tiles
#                                       defaults to 5 x 5               ***
# metaBuffer=10                     *** size of metatile buffer in px   ***
# mime_type=image/png  *** by default, the mime type is image/extension ***   
#                      *** but you may want to set extension=png8 for   ***
#                      *** GeoServer WMS, and this lets you set the     ***
#                      *** mime_type seperately.                        ***

# The following is a demonstration of a layer which would be generated
# according to the 'Google projection'. This uses the standard values for
# a spherical mercator projection for maxextent, maxresolution, units 
# and srs.
# [google-tiles]
# type=WMS
# url=http://localhost/cgi-bin/mapserv?map=/mapdata/world.map
# layers=world
# spherical_mercator=true

# Standard MapServer layer configuration.
# [vmap0]
# type=MapServer
# layers=vmap0
# mapfile=/var/www/vmap0.map

# Rendering OpenStreetMap data with Mapnik; should use metaTiling to
# avoid labels across tile boundaries 
# [osm]
# type=Mapnik
# mapfile=/home/user/osm-mapnik/osm.xml
# spherical_mercator=true
# tms_type=google
# metatile=yes


[rast1]
type=WMS
url=http://xxxxxxxxxxxxxxxxxxxxxxxxxxxx.fr/cgi-bin/mapserv?map=/var/www/dev/mapfile.map&
extension=png
resolutions=0.031747816880420915, 0.009524345064126272, 0.004762172532063136, 0.0015873908440210457, 0.0006349563376084181, 0.00031747816880420905, 0.00015873908440210453, 0.00007936954220105226, 0.000047621725320631366, 0.000031747816880420904, 0.000023810862660315683 
levels=11
maxresolution=0.031747816880420915
srs=EPSG:27572

Voici un extrait de mon fichier index.html :

Code:

        function init(){
            map = new OpenLayers.Map( $('map'), {'maxResolution': 0.031747816880420915, projection: new OpenLayers.Projection("EPSG:27572"),scales: [7500,10000,15000,25000,50000, 100000, 200000, 500000,1500000,3000000,10000000]});
            layer = new OpenLayers.Layer.WMS( "Scan25", 
                    "http://xxxxxxxxxxxxxxxxxxxx.fr/html/tilecache/tilecache.py?", {layers: 'rast1', format: 'image/png' } );
            map.addLayer(layer);
            map.addControl(new OpenLayers.Control.Permalink());
            if (!map.getCenter()) map.zoomToMaxExtent();
        }

Et maintenant j'ai des dalles noires qui s'affichent et qui se crée également dans mon cache...
Idem avec tilecache_seed.

Dernière modification par Sitelle (Thu 27 May 2010 11:58)

Hors ligne

 

#16 Thu 27 May 2010 12:03

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9864
Site web

Re: Configuration TileCache en mod_python sous Linux

Bonjour,

Il manque le nom de la couche également :

Code:

[rast1]
type=WMS
url=http://xxxxxxxxxxxxxxxxxxxxxxxxxxxx.fr/cgi-bin/mapserv?map=/var/www/dev/mapfile.map&
layers=rast1
extension=png
resolutions=0.031747816880420915, 0.009524345064126272, 0.004762172532063136, 0.0015873908440210457, 0.0006349563376084181, 0.00031747816880420905, 0.00015873908440210453, 0.00007936954220105226, 0.000047621725320631366, 0.000031747816880420904, 0.000023810862660315683 
levels=11
maxresolution=0.031747816880420915
srs=EPSG:27572

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#17 Thu 27 May 2010 13:48

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Merci de votre aide Guillaume et Yves.

Le fait d'ajouter layers=rast1 dans tileache.cfg ne semble pas changer grand chose.

Dans tilecache_seed j'ai 2 types d'info :

Code:

Cache miss: 169.47996822,-90.0,177.607409341,-81.8725588786, Tile: x: 43, y: 0, z: 0, time: 0.0467131137848
Cache miss: 177.607409341,-90.0,185.734850462,-81.8725588786, Tile: x: 44, y: 0, z: 0, time: 0.0469460487366
Cache miss: -180.0,-81.8725588786,-171.872558879,-73.7451177572, Tile: x: 0, y: 1, z: 0, time: 0.0467920303345
Cache miss: -171.872558879,-81.8725588786,-163.745117757,-73.7451177572, Tile: x: 1, y: 1, z: 0, time: 0.046756029129

Code:

00 (000028, 000000) = (47.5684 -90.0000 55.6958 -81.8726) [0.0472s : 21.099/s] 29/968
00 (000029, 000000) = (55.6958 -90.0000 63.8232 -81.8726) [0.0469s : 21.106/s] 30/968
00 (000030, 000000) = (63.8232 -90.0000 71.9507 -81.8726) [0.0472s : 21.108/s] 31/968
00 (000031, 000000) = (71.9507 -90.0000 80.0781 -81.8726) [0.0457s : 21.131/s] 32/968
00 (000032, 000000) = (80.0781 -90.0000 88.2056 -81.8726) [0.0470s : 21.136/s] 33/968
00 (000033, 000000) = (88.2056 -90.0000 96.3330 -81.8726) [0.0468s : 21.142/s] 34/968
00 (000034, 000000) = (96.3330 -90.0000 104.4604 -81.8726) [0.0471s : 21.144/s] 35/968
00 (000035, 000000) = (104.4604 -90.0000 112.5879 -81.8726) [0.0469s : 21.150/s] 36/968

Faut-il que je définisse précisément ma bbox ?

Hors ligne

 

#18 Thu 27 May 2010 17:08

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

Ah !

Pour certaines échelles de zoom et pour certaines dalles j'ai l'erreur suivante :

An error occurred: HTTP Error 500: Internal Server Error
  File "/var/www/html/tilecache/TileCache/Service.py", line 256, in modPythonHandler
    host )
  File "/var/www/html/tilecache/TileCache/Service.py", line 208, in dispatchRequest
    return self.renderTile(tile, params.has_key('FORCE'))
  File "/var/www/html/tilecache/TileCache/Service.py", line 138, in renderTile
    data = layer.render(tile, force=force)
  File "/var/www/html/tilecache/TileCache/Layer.py", line 443, in render
    return self.renderTile(tile)
  File "/var/www/html/tilecache/TileCache/Layers/WMS.py", line 29, in renderTile
    tile.data, response = wms.fetch()
  File "/var/www/html/tilecache/TileCache/Client.py", line 58, in fetch
    response = self.client.open(urlrequest)
  File "/usr/lib/python2.5/urllib2.py", line 387, in open
    response = meth(req, response)
  File "/usr/lib/python2.5/urllib2.py", line 498, in http_response
    'http', request, response, code, msg, hdrs)
  File "/usr/lib/python2.5/urllib2.py", line 425, in error
    return self._call_chain(*args)
  File "/usr/lib/python2.5/urllib2.py", line 360, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.5/urllib2.py", line 506, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)


Est-ce que ça vous parle ?

Hors ligne

 

#19 Fri 28 May 2010 08:40

Guillaume Sueur
Participant assidu
Lieu: Toulouse
Date d'inscription: 23 Sep 2005
Messages: 331
Site web

Re: Configuration TileCache en mod_python sous Linux

Hello,

Essaie de lire un peu les paramètres expliqués dans le tilecache.cfg. Il y a par exemple :
# bbox=-180.0,-90.0,180.0,90.0      *** defaults to world in lon/lat

ce qui veut dire que si tu ne précises pas de bbox, il utilisera ces valeurs, qui sont évidemment incompatibles avec du 27572. Le retour du tilecache_seed.py montre bien les extents sur lesquelles les tuiles sont appelées.
Une fois que tu auras renseigné une bbox correcte en EPSG:27572, mets éventuellement extent_type=loose pour autoriser des requêtes en dehors de ta bbox. ça peut être utile aux petites échelles, quand la vue globale dans ton client dépasse les limites de la donnée en cache.

Bonne continuation

Guillaume

Hors ligne

 

#20 Fri 28 May 2010 15:39

Sitelle
Participant occasionnel
Date d'inscription: 1 Feb 2009
Messages: 31

Re: Configuration TileCache en mod_python sous Linux

ça fonctionne !

Effectivement le paramètre bbox est très important.

Voici au final les paramètres du tilecache.cfg :

Code:

[rast1]
type=WMS
url=http://xxxxxxxxxxxxxxxxxxxxxxxxxx.fr/cgi-bin/mapserv?map=/var/www/html/tilecache/mapfile.map&
layers=rast1
extension=png
bbox=343974,1708994,1030912,2163897
extent_type=loose
srs=EPSG:27572
levels=11
resolutions=3527.775872778807, 1058.332761833642, 529.166380916821, 176.38879363894034, 70.55551745557612, 35.27775872778806, 17.63887936389403, 8.819439681947015, 5.291663809168209, 3.527775872778806, 2.6458319045841043 
maxresolution=3527.775872778807

Il est aussi important en fait de définir les mêmes paramètres dans le map d'OpenLayers :

Code:

        function init(){
            map = new OpenLayers.Map( $('map'), {'maxResolution': 3527.775872778807, 
                            projection: new OpenLayers.Projection("EPSG:27572"),
                            scales: [7500,10000,15000,25000,50000, 100000, 200000, 500000,1500000,3000000,10000000],
                            maxExtent: new OpenLayers.Bounds(343974,1708994,1030912,2163897),
                            units:"m"});
            layer = new OpenLayers.Layer.WMS( "Scan25","http://xxxxxxxxxxxxx.fr/html/tilecache/tilecache.py?", {layers: 'rast1', format: 'image/png' } );
            map.addLayer(layer);
            map.addControl(new OpenLayers.Control.Permalink());
            if (!map.getCenter()) map.zoomToMaxExtent();
        }

Merci encore à vous deux et bon we.
Estelle

Hors ligne

 

Pied de page des forums

Powered by FluxBB