#1 Wed 29 April 2009 11:55
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Mise en place Tilecache - Tuiles roses Vmap0
Bonjour,
J'ai tenté une mise en œuvre de tilecache pour accélérer le service WMS de l'application que je met en place.
J'ai suivi le tutoriel de geotribu ainsi que les infos dispo sur neo-geo
Voila ce que j'ai fait :
1. Décompressé Tilecache-2.10 dans c:/ms4w/Apache/htdocs - j'ai renommé mon dossier "tilecache-2.10" par "tilecache"
2. Dans c:/ms4w/Apache/conf/httpd.conf, j'ai ajouté les lignes suivantes (à la fin) :
<Directory /ms4w/Apache/htdocs/tilecache>
AddHandler cgi-script .cgi
Options +ExecCGI
</Directory>
3. Dans le fichier tilecache.cfg j'ai spécifié le répertoire dans lequel je souhaite que les tuiles soient stockées (ce répertoire existe bien)
[cache]
type=Disk
base=/ms4w/Apache/htdocs/tilefolder
Pour info, les lignes suivantes sont décochées, je n'y ai pas touché :
[basic]
type=WMS
url=http://labs.metacarta.com/wms/vmap0
extension=png
4. J'ai redémarré Apache.
Au final, lorsque je teste la page (http://172.**.***.***/tilecache/) je n'ai que des tuiles roses, et rien dans le dossier du cache.
J'ai fait pas mal de recherche sur le net (forum, user list), mais rien de concluant, quelque chose doit m'échapper ! d'autant que la procédure est sensé être simple ... et que j'ai l'ai recommencée à plusieurs reprises ...
Avez-vous des idées, pour me permettre d'avancer ?
Merci (!)
Rémi
Hors ligne
#2 Wed 29 April 2009 12:03
Re: Mise en place Tilecache - Tuiles roses Vmap0
bonjour,
Cela me parait incorrecte :
Code:
[cache] type=Disk base=/ms4w/Apache/htdocs/tilefolder
Il doit manquer le c devant. D'autre part, j'ai "DiskCache" chez moi et pas "Disk"
Je suppose que tu as créé un alias dans la config d'apache ?:
Code:
Alias tilecache /ms4w/Apache/htdocs/tilecache
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
#3 Wed 29 April 2009 12:24
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour Yves,
Il doit manquer le c
devant. D'autre part, j'ai "DiskCache" chez moi et pas "Disk"
Modifications effectuées....
Je suppose que tu as créé un alias dans la config d'apache ?:
Je n'ai pas créé d'alias... Je viens donc de rajouter cette ligne dans le httpd.conf, est-ce correct ?
Après avoir redémarré Apache, c'est malheureusement toujours pareil, les tuiles sont roses.
Merci encore,
rémi
Hors ligne
#4 Wed 29 April 2009 12:41
Re: Mise en place Tilecache - Tuiles roses Vmap0
Que renvoie :
Code:
http://172.**.***.***/tilecache/tilecache.py
?
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
#5 Wed 29 April 2009 12:48
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Re: Mise en place Tilecache - Tuiles roses Vmap0
La page n'est pas trouvé, il me renvoie --> NOT FOUND
Je n'ai effectivement pas de tilecache.py dans mon dossier tilecache...
EDIT : J'ai renommé le tilecache.cgi en tilecache.py
Voila son contenu :
#!/usr/bin/env python
from TileCache import Service, cgiHandler, cfgfiles
if __name__ == '__main__':
svc = Service.load(*cfgfiles)
cgiHandler(svc)
Dernière modification par Remi01 (Wed 29 April 2009 12:53)
Hors ligne
#6 Wed 29 April 2009 12:55
Re: Mise en place Tilecache - Tuiles roses Vmap0
EDIT : J'ai renommé le tilecache.cgi en tilecache.py
Non, modifie l'url !
J'ai utilisé ma config qui n'utilise pas le mod_cgi de tilecache mais le mod_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
#7 Wed 29 April 2009 13:02
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Re: Mise en place Tilecache - Tuiles roses Vmap0
Donc avec cet Url
http://172.**.***.***/tilecache/tilecache.cgi
J'obtiens un joli "500 Internal server error"
...
Dernière modification par Remi01 (Wed 29 April 2009 13:55)
Hors ligne
#8 Wed 29 April 2009 14:01
Re: Mise en place Tilecache - Tuiles roses Vmap0
As tu bien remplacé tous les ms4w/... par c:/ms4w/.... est ce que le chemin est bien correcte ?
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
#9 Wed 29 April 2009 14:33
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Re: Mise en place Tilecache - Tuiles roses Vmap0
Merci encore pour ton aide Yves !!
-----
Problème résolu, en fait il s'agissait du "Shebang" du fichier tilecache.cgi qui n'était pas renseigné correctement.
L'erreur Apache était
couldn't spawn child process: C:/ms4w/Apache/htdocs/tilecache/tilecache.cgi
La ligne modifié du fichier tilecache.cgi est :
#! C:/Python26/python.exe
Le fond vmap0 s'affiche désormais correctement !
A bientôt
Hors ligne
#10 Thu 28 May 2009 16:38
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Salut,
Grâce à ce sujet, j'ai pu également trouver mes erreurs dans la configuration de tilecache et donc je suis bien arrivé à afficher le fond vmap0.
Par contre, dès que je veux essayer d'afficher une de mes couches, je retrouve les tuiles roses.
Pourtant j'ai l'impression de mettre les bons paramètres dans tilecache.cfg :
Code:
[communes] type=WMSLayer url=http://localhost/cgi-bin/mapserv?map=c:/ms4w/Apache/htdocs/projet_test/natura.map bbox=314054,1732848,576643,2069423 layers=communes srs=EPSG:27593 extent_type=loose maxResolutions=0.0013309327968750034 levels=10 extension=png metaTile=true
Pourquoi ce bug ?
Dernière modification par Maxime31 (Thu 28 May 2009 16:38)
Hors ligne
#11 Thu 28 May 2009 16:45
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour,
Une petites astuces pour débuguer : sauver la tuile et l'ouvrir dans un éditeur de texte pour lire le message d'erreur
Autre manière : installer firebug, le lancer (et l'activer), cliquer sur "Inspecter" et cliquer sur le une des tuiles, l'onglet HTML s'ouvre dans firebug, rechercher l'url de la tuile et l'ouvrir dans un nouvel onglet. Le message d'erreur devrait s'afficher dans le navigateur !
Quel est le message d'erreur ?
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
#12 Thu 28 May 2009 16:52
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour Yves, merci de ta réponse rapide et de cette technique pour voir le bug !
Code:
Message d'erreur : An error occurred: can't find resolution index for 291.882857. Available resolutions are: [1314.74609375, 657.373046875, 328.6865234375, 164.34326171875, 82.171630859375, 41.0858154296875, 20.54290771484375, 10.271453857421875, 5.1357269287109375, 2.5678634643554687]
J'imagine qu'il faut spécifier les résolutions dans le .cfg ou un truc dans le genre non ?
Hors ligne
#13 Thu 28 May 2009 17:01
Re: Mise en place Tilecache - Tuiles roses Vmap0
bonjour,
Il y a plusieurs solutions et elles dépendent de ce que tu as fait du côté d'OpenLayers. As tu redéfinie les résolutions ou les niveau de zoom ? Si oui tu devras les retrouver une par une ! Mais tu peux déjà rajouter la résolution 291.882857.
En effet cela se rajoute dans le fichier de config de TileCache.
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
#14 Thu 28 May 2009 17:04
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Côté OL, j'ai juste fait ça :
Code:
map= new OpenLayers.Map('map', {maxExtent:new OpenLayers.Bounds(416635, 1729996, 685832, 1934314), maxResolution: 'auto', units:'meters', projection:'EPSG:27593'}); var wms1 = new OpenLayers.Layer.WMS("Communes", "http://localhost/tilecache/tilecache.cgi?", {layers: "communes"}); map.addLayer(wms1);
Donc j'ai juste à rajouter dans le fichier config de Tilecache : resolutions=291.882857 ?
Hors ligne
#15 Thu 28 May 2009 17:09
Re: Mise en place Tilecache - Tuiles roses Vmap0
Maxime,
Non il faut rajouter les résolutions pour chaque niveau de zoom ! Via firebug, tu peux zoomer d'un niveau et lancer la commande map.getResolution() pour chaque niveau de zoom et obtenir ainsi tes résolutions !
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
#16 Thu 28 May 2009 17:11
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Re: Mise en place Tilecache - Tuiles roses Vmap0
Je conseille également Firebug, j'ai mis du temps à comprendre comment l'utiliser mais au final j'ai bien fait, c'est très pratique.
Concernant les résolutions, personnellement j'y arrive "à tâtons".
J'ai spécifié des échelles logiques dans la carte Openlayers, configuré Mapserver pour enchainer les layers correctement et ensuite grâce à firebug il est possible de connaitre les résolutions à spécifier en utilisant la méthode décrite par Yves pour trouver le message d'erreur, celui-ci donnant la bonne valeur de résolution pour l'échelle courante.
Ensuite, il faut recommencer pour toutes les échelles ...
C'est sans doute la pire méthode, mais j'ai pas réussi à faire mieux
Bon courage !
Dernière modification par Remi01 (Thu 28 May 2009 17:12)
Hors ligne
#17 Thu 28 May 2009 17:14
- Remi01
- Participant actif
- Date d'inscription: 18 Jan 2007
- Messages: 74
Re: Mise en place Tilecache - Tuiles roses Vmap0
Via firebug, tu peux zoomer d'un niveau et lancer la commande map.getResolution() pour chaque niveau de zoom et obtenir ainsi tes résolutions !
Y.
Voila de quoi se simplifier la vie, merci Yves !
Hors ligne
#18 Thu 28 May 2009 17:18
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Mais lorsqu'on met maxResolutions=291.882857 et levels=10 par exemple, Tile Cache n'est pas censé calculer automatiquement les resolustions suivantes ?
J'ai donc fait les modifs :
Code:
resolutions=291.8828571428571,145.94142857142856,72.97071428571428,36.48535714285714,18.24267857142857,9.121339285714285 maxresolution=291.8828571428571 levels=6
Maintenant, j'ai cette erreur An error occurred: Current x value 491357.011429 is too far from tile corner x 463498.022857 ??
Dernière modification par Maxime31 (Thu 28 May 2009 17:24)
Hors ligne
#19 Fri 29 May 2009 09:25
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Re-bonjour à tous,
Je me permets de relancer le sujet d'hier soir :
Maintenant, j'ai cette erreur An error occurred: Current x value 491357.011429 is too far from tile corner x 463498.022857 ???
Hors ligne
#20 Fri 29 May 2009 10:19
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour,
C'est la partie la plus délicate. J'aurais du mal à te répondre mais je crois savoir que ce message provient d'une mauvaise résolution. D'autres experts pourront mieux te répondre (René-Luc ou Guillaume).
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
#21 Fri 29 May 2009 10:24
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Ok merci, je vais attendre leurs réponses.
Hors ligne
#22 Fri 29 May 2009 10:38
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour,
Les coordonnées des tuiles demandées par OpenLayers ne correspondent pas à celles prévues par tilecache. Ceci est dû à une trop grande différence entre les bounding boxes de ton objet map d'un côté et de ton cache de l'autre. Essaie de les rendre cohérents, et de rajouter l'option extent_type=loose à la définition de ton cache pour autoriser le débordement des tuiles (car sinon, aux petites échelles, des tuiles peuvent manquer).
Cordialement,
Guillaume
Hors ligne
#23 Fri 29 May 2009 10:58
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour,
J'ai rajouté extent_type sur mon cache :
Code:
[cache] type=DiskCache base=c:/ms4w/Apache/htdocs/tilefolder/ extent_type=loose
Mais j'ai toujours cette erreur... ??
Hors ligne
#24 Fri 29 May 2009 11:03
Re: Mise en place Tilecache - Tuiles roses Vmap0
Bonjour,
Selon Guillaume : 'Ceci est dû à une trop grande différence entre les bounding boxes de ton objet map d'un côté et de ton cache de l'autre'. Donc vérifie les et nettoie ton cache a chaque modification du fichier de configuration de TileCache.
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
#25 Fri 29 May 2009 11:21
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Effectivement, les bounding boxes étaient mal définies puisque j'avais laissé d'anciennes valeurs dans mon objet map...
Désolé de vous avoir fait perdre du temps sur une erreur d'inattention.
Cependant, j'ai une autre erreur quand je teste l'url d'une des tuiles :
Code:
An error occurred: No module named Image File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Service.py", line 323, in cgiHandler format, image = service.dispatchRequest( params, path_info, req_method, host ) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Service.py", line 208, in dispatchRequest return self.renderTile(tile, params.has_key('FORCE')) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Service.py", line 138, in renderTile data = layer.render(tile, force=force) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Layer.py", line 435, in render image = self.renderMetaTile(metatile, tile) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Layer.py", line 393, in renderMetaTile import StringIO, Image
Est-ce normal ?
Hors ligne
#26 Fri 29 May 2009 11:24
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: Mise en place Tilecache - Tuiles roses Vmap0
voilà. Maintenant installe le module python-imaging.
Hors ligne
#27 Fri 29 May 2009 11:30
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Merci de ta réponse.
J'ai un nouveau message d'erreur :
Code:
An error occurred: HTTP Error 404: Not Found File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Service.py", line 323, in cgiHandler format, image = service.dispatchRequest( params, path_info, req_method, host ) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Service.py", line 208, in dispatchRequest return self.renderTile(tile, params.has_key('FORCE')) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Service.py", line 138, in renderTile data = layer.render(tile, force=force) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Layer.py", line 435, in render image = self.renderMetaTile(metatile, tile) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Layer.py", line 395, in renderMetaTile data = self.renderTile(metatile) File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Layers\WMS.py", line 29, in renderTile tile.data, response = wms.fetch() File "C:\ms4w\Apache\htdocs\tilecache\TileCache\Client.py", line 58, in fetch response = self.client.open(urlrequest) File "C:\Python26\lib\urllib2.py", line 389, in open response = meth(req, response) File "C:\Python26\lib\urllib2.py", line 502, in http_response 'http', request, response, code, msg, hdrs) File "C:\Python26\lib\urllib2.py", line 427, in error return self._call_chain(*args) File "C:\Python26\lib\urllib2.py", line 361, in _call_chain result = func(*args) File "C:\Python26\lib\urllib2.py", line 510, in http_error_default raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
Question de config non ?
Hors ligne
#28 Fri 29 May 2009 12:28
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: Mise en place Tilecache - Tuiles roses Vmap0
En effet. Vérifie que tilecache peut accéder à la ressource que tu as spécifié pour la couche.
et teste d'abord la configuration de tilecache seul en utilisant, depuis le répertoire où se situe tilecache.cfg :
Code:
tilecache_seed.py [nom_couche] 0 1
ça te permettra de vérifier que le cache se construit bien. Ensuite tu pourras essayer de l'exploiter depuis OpenLayers.
Hors ligne
#29 Fri 29 May 2009 12:39
- Maxime31
- Participant assidu
- Date d'inscription: 3 Sep 2008
- Messages: 175
Re: Mise en place Tilecache - Tuiles roses Vmap0
Euh je ne vois pas bien comment effectuer le test avec tilecache_seed.py ?
Et j'avais une autre question : est-ce normal que dans les fichiers .py de mon dossier tilecache, tous ont comme première ligne #!/usr/bin/python alors que dans le fichier tilecache.cgi, j'ai remplacé par #! C:/Python26/python.exe ?
Dernière modification par Maxime31 (Fri 29 May 2009 12:45)
Hors ligne
#30 Fri 29 May 2009 12:58
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: Mise en place Tilecache - Tuiles roses Vmap0
comme je l'ai indiqué. Tu lances (en ligne de commande) :
Code:
tilecache_seed.py [nom_couche] 0 1
depuis le répertoire où si situe tilecache.cfg. Eventuellement :
Code:
python.exe tilecache_seed.py [nom_couche] 0 1
si les .py ne sont pas associés à python, voire
Code:
c:\Python26\python.exe tilecache_seed.py [nom_couche] 0 1
si python n'est pas dans ton PATH.
La première ligne des fichiers python ne sert pas à grand'chose sous windows. Tu peux laisser les valeurs par défaut.
Hors ligne