#1 Fri 23 April 2010 12:47
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
syntaxe filter mapfile postgis
Bonjour
mon mapfile ci dessous permet de me connecter à ma table carto postgis "states_ugl"
je n'arrive pas à parametrer la propriété "FILTER" du mapfile
j'ai essayé ca :
Code:
FILTER "STATE='Michigan'"
où "STATE" est un champ de ma table "states_ugl" et "Michigan" une des valeurs contenues dans le champ "STATE"
le système me renvoie le message d'erreur suivant:
msDrawMap(): Image handling error. Failed to draw layer named 'states_ugl'. prepare_database(): Query error. Error declaring cursor: ERREUR: la colonne « state » n'existe pas LINE 1: ...he_geom)),'NDR'),gid::text from states_ugl WHERE (STATE='Mic... ^ With query string: DECLARE mycursor BINARY CURSOR FOR SELECT asbinary(force_collection(force_2d( the_geom)),'NDR'),gid::text from states_ugl WHERE (STATE='Michigan') and ( the_geom && setSRID( 'BOX3D(-97.239 40.4671357063404,-82.123 50.5388642936596)'::BOX3D,-1) )
Faut il modifier la propriété "DATA" ?
Je soupconne une histoire de double quote , de quote simple....
Mon mapfile:
Code:
MAP imageCOLOR 10 78 100 IMAGETYPE PNG STATUS ON EXTENT -97.239 41.62 -82.123 49.386 SIZE 512 347 LAYER CONNECTION "host=localhost dbname=postgistest user=postgres password=azertyuiop port=5432" CONNECTIONTYPE POSTGIS DATA "the_geom from states_ugl using unique gid" NAME "states_ugl" TYPE POLYGON STATUS DEFAULT CLASS COLOR 89 225 225 OUTLINECOLOR 0 0 0 END END END
Dernière modification par icadedt (Fri 23 April 2010 14:29)
Hors ligne
#2 Fri 23 April 2010 18:21
Re: syntaxe filter mapfile postgis
Bonjour,
Essayez :
Code:
FILTER ("[STATE]"=="Michigan")
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 Mon 26 April 2010 10:06
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
Re: syntaxe filter mapfile postgis
Bonjour,
Essayez :Code:
FILTER ("[STATE]"=="Michigan")Y.
ca n'a pas l'air de marcher , pourrais je savoir sur quel sgbd cette syntaxe marche?
il me semble que postgresql n'aime pas trop les crochets aux noms de champ
Hors ligne
#4 Mon 26 April 2010 11:32
Re: syntaxe filter mapfile postgis
Bonjour,
les crochets ne sont pas envoyé à Postgresql/postgis, c'est une nomenclature propre à MapServer pour lui indiquer que c'est une colonne. Les guillemets doubles sont là pour protéger le texte si celui-ci présente des espaces par exemple.
Enfin le texte dans la colonne ne doit pas comporter de guillemet double, si cela arrive il faut utiliser des guillemets simples.
Si tu n'arrives pas à résoudre le problème soit le retour est null soit il y a un problème, tu peux :
1. activer les logs dans postgresql et retrouver la requete envoyée par mapserver
2. activer les logs dans mapserver et voir les étapes réalisées par celui-ci et voir où il bloque.
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 Mon 26 April 2010 12:43
- icadedt
- Participant assidu
- Lieu: ici et là
- Date d'inscription: 21 Jul 2006
- Messages: 478
Re: syntaxe filter mapfile postgis
j'ai essayé la syntaxe suivante et ca marche
Code:
FILTER ("STATE"='Michigan')
la mise entre parentheses semble etre fondamentale !
mettre un egal plutot qu'un double egal
merci
PS: perso je crois que la syntaxe à FILTER doit respecter celle du SQL du sgbd sur lequel le mapfile est branché
Dernière modification par icadedt (Mon 26 April 2010 12:48)
Hors ligne