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 Fri 28 October 2011 12:10

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

[mapserver] Filtre sur les coordonnées d'un point

Bonjour

faisant suite au sujet "BBOX transmise dans l'URL englobant maxExtent"
j'ai pensé à une solution qui serait de transmettre dans la requête à mapserver
les limites de maxextent et de faire un filtre sur les coordonnées par rapport à ces limites

je spécifie par exemple le filtre de la façon suivante :

FILTER "x(coord)>'%XMIN%' and x(coord)<'%XMAX%' and ..."

j'ai commencé par faire un test avec des constantes :
FILTER "x(coord)>'-100000.0' and x(coord)<'10000000.0'"

mais plus aucune donnée ne m'est retournée (rien ne s'affiche)
quelque soit apparemment les valeurs spécifiées

est-c'qu'il y aurait une erreur dans la syntaxe ?

merci pour votre éclairage

Jean-Marie

Hors ligne

 

#2 Mon 21 November 2011 21:19

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

Re: [mapserver] Filtre sur les coordonnées d'un point

Bonsoir,

Je suppose que la source de données est PostGIS et que le champ géométrique s'appelle "coord" ?

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 Tue 22 November 2011 10:01

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [mapserver] Filtre sur les coordonnées d'un point

Bonjour

effectivement ;
mon layer de données est décrit de la façon suivante :

Code:

layer
  name "DONNEES"
  group "DONNEES"
  type point
  status on
  connectiontype postgis
  connection "host=%HOST% dbname=....."
  data "coord from table using unique num"
  FILTER ...
end

le problème est que dans postgis les coordonnées sont en degrés
or les valeurs de  maxExtent sont dans une projection (par exemple EPSG:27572)

le filtre doit donc se faire sur la base de cette projection

Jean-Marie

Hors ligne

 

#4 Tue 22 November 2011 10:28

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

Re: [mapserver] Filtre sur les coordonnées d'un point

Bonjour,

Alors il faut aussi utiliser x(st_transform(coord,27572)).

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 Fri 25 November 2011 15:14

Jean-Marie64
Participant actif
Lieu: Pau
Date d'inscription: 6 Nov 2007
Messages: 131

Re: [mapserver] Filtre sur les coordonnées d'un point

Bonjour

effectivement je peux faire la chose suivante :

Code:

  connectiontype postgis
..
  data "coord from table using unique num"

  FILTER "date >= '%BEGINDATE%' and date < '%ENDDATE%' and st_transform(coord,27572) && st_setsrid('BOX(%LONMIN% %LATMIN%,%LONMAX% %LATMAX%)'::box2d,27572) "

constatant que  st_transform(coord,27572) augmente de manière non négligeable le temps d'exécution de la requête WMS,
je suis finalement resté en degré, ce qui est plus rapide, soit :

Code:

  FILTER "date >= '%BEGINDATE%' and date < '%ENDDATE%' and rectangle(%LONMIN%,%LATMIN%,%LONMAX%,%LATMAX%,coord)"

alternative :

Code:

data "coord from (select date,coord,num from table where date between '%BEGINDATE%' and  '%ENDDATE%' and rectangle(%LONMIN%,%LATMIN%,%LONMAX%,%LATMAX%,coord)) as new_table using unique num"

je n'ai pas vu de différence en temps d'exécution entre mettre la condition dans FILTER ou dans data


Jean-Marie

Hors ligne

 

Pied de page des forums

Powered by FluxBB