#1 Mon 31 August 2009 14:41
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
[TileCache/OpenLayers] Problème de configuration
Bonjour,
Je suis actuellement en train de mettre en place TileCache 2.10 avec MapServer 5.4.2 et je me retrouve face à quelques petites incompréhensions dans la configuration de celui-ci.
J'ai lu tous les post concernant TileCache sur ce forum qui m'ont appris beaucoup de choses mais je n'arrive tout de même pas à comprendre la logique de configuration de TileCache avec OpenLayers.
J'aimerais savoir ce qu'il est impératif de configurer, où et comment ?
J'entends par là :
- Faut-il configurer la bbox dans OpenLayers et dans tilecache.cfg ?
- Faut-il configurer les résolutions disponibles dans les deux ?
- Pourquoi lorsque je configure les résolutions dans les deux j'arrive à obtenir une erreur comme quoi OpenLayers demande une résolution qui n'est pas disponible ?
J'ai la bizarre impression qu'OpenLayers fait une transformation des résolutions que je lui met dans scales car j'ai beau mettre qu'une seule résolution et je tombe toujours sur un message d'erreur car une résolution exotique est demandée...
Est-ce que la définition d'une projection dans OpenLayers via :
Code:
projection:new OpenLayers.Projection("EPSG:900913")
peut influer sur la définition des scales ?
Merci encore.
Jule.
Hors ligne
#2 Tue 01 September 2009 14:29
- Guillaume Sueur
- Participant assidu
- Lieu: Toulouse
- Date d'inscription: 23 Sep 2005
- Messages: 331
- Site web
Re: [TileCache/OpenLayers] Problème de configuration
Bonjour,
Attention à bien utiliser resolutions et non scales pour la configuration. C'est beaucoup plus simple.
Guillaume
Hors ligne
#3 Tue 01 September 2009 16:24
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Ah oui en effets j'ai bêtement pensé que scales correspondait à resolutions... Merci Guillaume !
Ce premier problème résolu je me retrouve face à cette erreur :
Code:
An error occurred: /usr/local/lib/python2.5/site-packages/_mapscript.so: undefined symbol: _ZN3agg17g_elder_bit_tableE File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Service.py", line 256, in modPythonHandler host ) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Service.py", line 208, in dispatchRequest return self.renderTile(tile, params.has_key('FORCE')) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Service.py", line 138, in renderTile data = layer.render(tile, force=force) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Layer.py", line 443, in render return self.renderTile(tile) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Layers/MapServer.py", line 48, in renderTile wms = self.get_map(tile) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Layers/MapServer.py", line 20, in get_map import mapscript File "/usr/local/lib/python2.5/site-packages/mapscript.py", line 7, in <module> import _mapscript
J'ai recherché sur internet une solution à ce problème lié visiblement à la bibliothèque AGG 2.5.
Je suis tombé sur ce lien : http://n2.nabble.com/.../
Malheureusement, une recompilation d'AGG en ajoutant l'option de compilation -fPIC ne résout pas mon problème...
(j'ai bien évidemment recompilé MapServer avec la nouvelle compilation d'AGG 2.5)
Quelqu'un aurait une idée pour passer ce nouvel obstacle ou mieux le résoudre ?
Hors ligne
#4 Tue 01 September 2009 16:52
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Hmm en fait je viens de trouver le problème...
J'avais tout simplement oublié de recompiler le module mapscript python...
Du coup un petit :
Code:
$> cd /path/to/mapserver/mapscript/python/ $> rm -rf build/ $> python setup.py build $> python setup.py install
Et ce fut donc réglé.
Bon maintenant il me reste à bien régler ma BBOX et mes résolutions pour coller avec la BBOX de mes données.
En revanche, en jouant un peu sur le zoome sur la seule tuile qui s'affichait sur mon écran j'ai généré cette erreur :
Code:
An error occurred: msEvalExpression: Expression parser error. Failed to parse expression: 'ret\'='grass' or 'ret\'='farm' or 'ret\'='greenfield' or 'ret\'='allotments' or 'ret\'='meadow' or 'ret\'='field' msyyparse(): Expression parser error. syntax error msEvalExpression: Expression parser error. Failed to parse expression: ''='wood' or 'ret\'="forest" msyyparse(): Expression parser error. syntax error msEvalExpression: Expression parser error. Failed to parse expression: 'ret\'='residential' msyyparse(): Expression parser error. syntax error msEvalExpression: Expression parser error. Failed to parse expression: 'ret\'='industrial' or 'ret\'='commercial' or 'ret\'='airport' or 'ret\'='brownfield' or 'ret\'='military' or 'ret\'='railway' msyyparse(): Expression parser error. syntax error File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Service.py", line 256, in modPythonHandler host ) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Service.py", line 208, in dispatchRequest return self.renderTile(tile, params.has_key('FORCE')) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Service.py", line 138, in renderTile data = layer.render(tile, force=force) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Layer.py", line 443, in render return self.renderTile(tile) File "/usr/local/lib/python2.5/site-packages/TileCache-2.10-py2.5.egg/TileCache/Layers/MapServer.py", line 51, in renderTile mapImage = wms.draw() File "/usr/local/lib/python2.5/site-packages/mapscript.py", line 1421, in draw def draw(*args): return _mapscript.mapObj_draw(*args)
Je dois être maudit ! ^^
Des pistes ? Merci.
Jule.
Hors ligne
#5 Wed 02 September 2009 14:40
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
J'ai réussi à correctement régler ma BBOX mais par contre j'obtiens toujours une dalle rose à un endroit précis avec le même message d'erreur que précédemment. Quand je dis un endroit précis c'est que même si je zoom ou je dézoom la dalle chargée qui contient un certain point (x,y) de ma carte est toujours rose.
Ayant pris des données venant d'OSM je ne pense pas que mes données soient corrompues...
Quelqu'un sait-il d'où cela peut venir ?
Hors ligne
#6 Wed 02 September 2009 14:42
Re: [TileCache/OpenLayers] Problème de configuration
Bonjour,
Tente de voir si tes données sont valides :
Code:
select * from maTable Where isValid(the_geom) = false;
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 02 September 2009 15:48
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Bonjour,
Je ne sais pas comment appliqué votre prototype de commande car j'ai nourri ma base de donnée via la commande osm2pgsql ce qui m'a créé plusieurs tables :
Code:
Schema | Name | Type --------+------------------+-------- public | geometry_columns | table public | osm_line | table public | osm_nodes | table public | osm_point | table public | osm_polygon | table public | osm_rels | table public | osm_roads | table public | osm_ways | table public | spatial_ref_sys | table
et je n'ai pas de colonne the_geom du fait...
Peut-être mon problème vient de là. Comment puis-je faire autrement ?
Merci.
Hors ligne
#8 Wed 02 September 2009 15:56
Re: [TileCache/OpenLayers] Problème de configuration
Non Jule, j'ai oublié que pour les données osm, l'import créé un champ "ways" et non "the_geom"
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 02 September 2009 16:06
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Voici le retour de la requête :
Code:
select * from osm_roads Where isValid(way) = false; osm_id | access | addr:flats | addr:housenumber | addr:interpolation | admin_level | aerialway | aeroway | amenity | area | barrier | bicycle | bridge | boundary | building | construction | cutting | disused | embankment | foot | highway | historic | horse | junction | landuse | layer | learning | leisure | lock | man_made | military | motorcar | name | natural | oneway | power | power_source | place | railway | ref | religion | residence | route | service | sport | tourism | tracktype | tunnel | waterway | width | wood | z_order | way_area | way --------+--------+------------+------------------+--------------------+-------------+-----------+---------+---------+------+---------+---------+--------+----------+----------+--------------+---------+---------+------------+------+---------+----------+-------+----------+---------+-------+----------+---------+------+----------+----------+----------+------+---------+--------+-------+--------------+-------+---------+-----+----------+-----------+-------+---------+-------+---------+-----------+--------+----------+-------+------+---------+----------+----- (0 rows)
Suis-je sensé tester cette requête sur toutes les tables ? Car certaines tables ne possèdent pas le champ "way". D'ailleurs je n'ai pas de champ "ways", par contre peut-être dois-je tester sur la table osm_ways ?
Dernière modification par Jule (Wed 02 September 2009 16:09)
Hors ligne
#10 Wed 02 September 2009 16:14
Re: [TileCache/OpenLayers] Problème de configuration
Il faut que tu testes toutes tes tables spatiales que tu utilises. Regarde la table geometry_columns qui liste les tables spatiales ainsi que le no dul champ géométrique :
Code:
SELECT * FROM geometry_columns;
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 02 September 2009 16:32
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Merci je commence à mieux comprendre !
Alors pour toutes les tables : osm_line, osm_point et osm_roads tout ce passe très bien puisqu'aucune ligne n'est sélectionnée.
En revanche sur la dernière table géométrique osm_polygon, je me retrouve avec énormément de lignes de NOTICE: lorsque je lance la commande de test.
Ex. :
Code:
... NOTICE: Self-intersection at or near point 1.68655e+07 -3.92734e+06 NOTICE: Self-intersection at or near point 1.68784e+07 -3.87945e+06 NOTICE: Hole lies outside shell at or near point 1.68727e+07 -3.93387e+06 NOTICE: Hole lies outside shell at or near point 1.6881e+07 -2.75788e+06 NOTICE: Hole lies outside shell at or near point 1.69062e+07 -2.77387e+06 NOTICE: Self-intersection at or near point 1.68784e+07 -3.87945e+06 ...
Jule.
Hors ligne
#12 Wed 02 September 2009 16:41
Re: [TileCache/OpenLayers] Problème de configuration
Tu peux tenter de voir si c'est bien cette couche qui pose problème de 2 manières :
1. tu ne l'utilise pas dans ton mapfile (commente les lignes)
2. tu ajoutes un champ activ de type boléen que tu défines à true quand isValide(way) = true Puis dans ton mapfil tu filtres les lignes sur actif=true
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 02 September 2009 16:57
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
En effet, ce sont bien les layers de TYPE POLYGON qui posent problème sans ces layers toutes les dalles s'affichent correctement !
De plus, je viens de faire une recherche et il semblerait qu'il y ai eu des problèmes de dump de données OSM durant le moi de juillet, avec un peu de chance c'est pile poil les données que je possède...
Je vais récupérer des données à jour et re-tester.
Je vous tiendrai au courant.
Merci mille fois,
Jule.
Hors ligne
#14 Tue 08 September 2009 10:59
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Bonjour,
Alors il se trouve que j'ai essayé plusieurs choses mais rien n'y fait... J'obtiens toujours les mêmes NOTICE suivis d'un grand blanc puis d'une suite interminable de caractères hexadécimaux même avec des fichiers à jour.
Quelqu'un a-t-il déjà eu le même problème ?
Ou quelqu'un utilise-t-il des données OSM sans problèmes afin de me donner sa configuration et la méthode qu'il a suivit ?
Peut-être que je fais quelque chose de travers alors voici pas à pas ce que j'ai fait :
Tout d'abord, je possède :
- Geos 3.1.1
- Proj 4.6.1
- PostgreSQL 8.3
- PostGIS 1.4.0
- osm2pgsql SVN version 0.67-
Tour à tour j'exécute les commandes :
Code:
$> createdb osm -U postgres $> createlang plpgsql osm -U postgres createlang: language "plpgsql" is already installed in database "osm" $> psql -U postgres -d osm -f /path/to/postgresql/share/postgresql/contrib/postgis.sql $> psql -U postgres -d osm -f /path/to/postgresql/share/postgresql/contrib/spatial_ref_sys.sql $> osm2pgsql -U postgres -W -d osm -p osm -s -C 1024 /path/to/australia.osm.bz2
Ni plus, ni moins... En revanche j'ai quelques messages sur la sortie d'erreur lorsque j'exécute postgis.sql et je n'arrive pas à savoir si cela pose problème :
Code:
psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:52: NOTICE: type "spheroid" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:58: NOTICE: return type spheroid is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:64: NOTICE: argument type spheroid is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:70: NOTICE: argument type spheroid is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:87: NOTICE: type "geometry" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:93: NOTICE: return type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:99: NOTICE: argument type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:105: NOTICE: argument type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:123: NOTICE: return type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:129: NOTICE: return type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:135: NOTICE: argument type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:141: NOTICE: argument type geometry is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:322: NOTICE: type "box3d" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:328: NOTICE: argument type box3d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:334: NOTICE: return type box3d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:340: NOTICE: argument type box3d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:355: NOTICE: type "box3d_extent" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:360: NOTICE: argument type box3d_extent is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:378: NOTICE: type "box2d" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:466: NOTICE: type "chip" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:472: NOTICE: return type chip is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:478: NOTICE: argument type chip is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:484: NOTICE: argument type chip is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:502: NOTICE: return type box2d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:508: NOTICE: return type box2d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:514: NOTICE: argument type box2d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:520: NOTICE: argument type box2d is only a shell psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:2235: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "spatial_ref_sys_pkey" for table "spatial_ref_sys" psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:2253: NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "geometry_columns_pk" for table "geometry_columns" psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:4077: NOTICE: type "pgis_abs" is not yet defined DETAIL: Creating a shell type definition. psql:/path/to/posgresql/share/postgresql/contrib/postgis.sql:4082: NOTICE: argument type pgis_abs is only a shell
Merci,
Jule.
EDIT : Je me rends compte que ça déborde un peu du thread... Peut-être faudrait-il que je post ce message dans un nouveau thread ?
Dernière modification par Jule (Tue 08 September 2009 11:08)
Hors ligne
#15 Thu 10 September 2009 15:32
- Jule
- Participant occasionnel
- Date d'inscription: 21 Jul 2009
- Messages: 48
Re: [TileCache/OpenLayers] Problème de configuration
Bonjour,
Je viens de résoudre mon problème grâce à tbonfort qui m'a dépanné ça en moins de temps qu'il n'en faut pour l'écrire !
Je récapitule le problème :
Code:
An error occurred: msEvalExpression: Expression parser error. Failed to parse expression: 'ret\'='grass' or 'ret\'='farm' or 'ret\'='greenfield' or 'ret\'='allotments' or 'ret\'='meadow' or 'ret\'='field' ...
La solution :
Alors tout d'abord les NOTICE: ne présentent pas de problème majeur comme l'indique le sens du mot notice...
Mon problème d'erreur était en effet lié à une erreur dans les données OSM : un caractère "\" venait perturber le parser de MapServer.
(un "ret\" s'est glissé dans les données à la place de "retail")
La solution apportée par tbonfort est donc :
Code:
select * from osm_polygon where landuse ~ '^ret.$';
Ceci permet de sélectionner la/les lignes qui posent problème. Si jamais il n'y en a que quelques unes alors pour corriger le problème il suffit de rentrer la commande suivante :
Code:
update osm_polygon set landuse='retail' where landuse ~ '^ret.$';
Je vais essayer d'en faire profiter la communauté OpenStreetMap donc certainement que l'erreur sera corrigé par la suite, cependant en attendant ça peut toujours dépanner !
Encore merci à Yves et Thomas pour leur savoir.
Jule.
Hors ligne