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é ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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 ? smile

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

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

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

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

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" wink

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

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

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 ! smile

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

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

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 ! wink



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 ! wink


Encore merci à Yves et Thomas pour leur savoir. smile

Jule.

Hors ligne

 

Pied de page des forums

Powered by FluxBB