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 Wed 18 July 2012 08:30

christophe_hardy
Participant actif
Lieu: Arras
Date d'inscription: 24 Oct 2011
Messages: 101

[mapserver - Postgis]

Bonjour,

J'ai un soucis pour créer un MAP. Je pense savoir d'où vient le souci, mais impossible de trouver la solution.
Voici mon code :

Code:

LAYER
CONNECTIONTYPE POSTGIS
DATA "wkb_geometry from (select * from etab where [b]3_erp[/b] <> 'Oui') as foo USING UNIQUE ogc_fid"

Ma requête ne fonctionne pas, et à priori c'est le nom de mon champ qui commence par un chiffre 3_erp. Je dis cela, car lorsque j'effectue cette même requête avec un autre champ, le MAP fonctionne :

Code:

LAYER
CONNECTIONTYPE POSTGIS
DATA "wkb_geometry from (select * from etab where code_insee = '64005') as foo USING UNIQUE ogc_fid"

J'ai essayé plusieurs méthodes pour qu'il reconnaisse mon champ : ""3_erp"", """3_erp""", /"3_erp/", etab.3_erp, mais aucune ne fonctionne.

Quelqu'un connais l'astuce pour ce genre de requête ?

Merci beaucoup.

Hors ligne

 

#2 Wed 18 July 2012 10:54

VianneyD
Participant assidu
Date d'inscription: 30 May 2011
Messages: 153

Re: [mapserver - Postgis]

Bonjour,

As-tu essayé cela :

Code:

DATA "wkb_geometry from (select * from etab where 3_erp NOT LIKE 'Oui') as foo USING UNIQUE ogc_fid"

Vianney Dugrain

Hors ligne

 

#3 Wed 18 July 2012 11:28

VianneyD
Participant assidu
Date d'inscription: 30 May 2011
Messages: 153

Re: [mapserver - Postgis]

Tu as raison, le problème vient bien du nom du champ.
Il peut comporter des chiffres, mais il semble qu'il faille a minima que le nom du champ commence par un caractère


Vianney Dugrain

Hors ligne

 

#4 Wed 18 July 2012 11:42

christophe_hardy
Participant actif
Lieu: Arras
Date d'inscription: 24 Oct 2011
Messages: 101

Re: [mapserver - Postgis]

Oui j'ai essayé le NOT LIKE mais toujours pas de carte ...

Je pense aussi que c'est le chiffre qui fait planter.
J'ai essayé plusieurs méthode pour trouver des guillemets convenables mais je ne vois pas ...

Hors ligne

 

#5 Thu 19 July 2012 09:43

tbonfort
Participant actif
Date d'inscription: 11 Oct 2007
Messages: 87

Re: [mapserver - Postgis]

christophe_hardy a écrit:

Bonjour,

J'ai un soucis pour créer un MAP. Je pense savoir d'où vient le souci, mais impossible de trouver la solution.
Voici mon code :

Code:

LAYER
CONNECTIONTYPE POSTGIS
DATA "wkb_geometry from (select * from etab where [b]3_erp[/b] <> 'Oui') as foo USING UNIQUE ogc_fid"

Ma requête ne fonctionne pas, et à priori c'est le nom de mon champ qui commence par un chiffre 3_erp. Je dis cela, car lorsque j'effectue cette même requête avec un autre champ, le MAP fonctionne :

Code:

LAYER
CONNECTIONTYPE POSTGIS
DATA "wkb_geometry from (select * from etab where code_insee = '64005') as foo USING UNIQUE ogc_fid"

J'ai essayé plusieurs méthodes pour qu'il reconnaisse mon champ : ""3_erp"", """3_erp""", /"3_erp/", etab.3_erp, mais aucune ne fonctionne.

Quelqu'un connais l'astuce pour ce genre de requête ?

Merci beaucoup.


Bonjour,
Mapserver supporte l'echappement des quotes depuis la version 5.6 je crois (peut-etre 6.0).

Code:

DATA "wkb_geometry from (select * from etab where \"3_erp\" <> 'Oui') as foo USING UNIQUE ogc_fid"

--
thomas

Hors ligne

 

#6 Thu 19 July 2012 10:36

christophe_hardy
Participant actif
Lieu: Arras
Date d'inscription: 24 Oct 2011
Messages: 101

Re: [mapserver - Postgis]

Je ne dois pas avoir la version à jour alors, je vais regarder cela ...

Merci beaucoup

Hors ligne

 

#7 Mon 23 July 2012 09:07

christophe_hardy
Participant actif
Lieu: Arras
Date d'inscription: 24 Oct 2011
Messages: 101

Re: [mapserver - Postgis]

Rien à faire, même avec la version 5.6, ma requête ne fonctionne pas :

Code:

    DATA "wkb_geometry from (SELECT * FROM etab where \"3_erp\" = 'Oui') as foo USING UNIQUE ogc_fid"

J'ai aussi essayé la fonction :

Code:

$oLayer->updateFromString("LAYER FILTER (\"maTable\".\"monChamp\" = 'maValeur') END");

Mais soit je dois mal l'appliquer car pas de réponse dans ma carte

(lien du sujet : http://georezo.net/forum/viewtopic.php?id=80211)

Hors ligne

 

#8 Mon 23 July 2012 09:38

damika
Participant occasionnel
Lieu: Bidart
Date d'inscription: 3 Aug 2010
Messages: 33

Re: [mapserver - Postgis]

Bonjour,
Concernant la déspécialisation des doubles ou simple quote, également impossible pour nous de l'appliquer malgré les exemples donnés sur MapServer.

Il n'est pas possible de mettre du Mapscript directement dans un Mapfile mais la solution serait effectivement de passer par un FILTER

Code:

DATA "wkb_geometry from etab USING UNIQUE ogc_fid"
    FILTER ("3_erp"='Oui')

Hors ligne

 

#9 Mon 23 July 2012 10:06

christophe_hardy
Participant actif
Lieu: Arras
Date d'inscription: 24 Oct 2011
Messages: 101

Re: [mapserver - Postgis]

J'ai enfin trouvé la solution, en combinant les informations d'un peu tout le monde.
Voici la solution :

Code:

DATA "wkb_geometry from etab USING UNIQUE ogc_fid"
    FILTERITEM "3_erp"
    FILTER ("3_erp" = 'Non')

Il faut bien préciser sur quel champ il faut faire la sélection avant de mettre la condition, sinon ça ne renvoi aucune réponse.
Cette solution fonctionne.

Merci à vous.

Hors ligne

 

Pied de page des forums

Powered by FluxBB