Pages: 1
- Sujet précédent - [Mapserver] conversion d'un champ date de type timestamp en entier - Sujet suivant
#1 Tue 14 June 2011 17:00
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
[Mapserver] conversion d'un champ date de type timestamp en entier
Bonjour
dans mon mapfile je me connecte à une base de données Postgresql et je veux pouvoir
effectuer une opération arithmétique sur le champ date de type timestamp ;
je donne l'exemple ci-dessous où j'assigne à des point une couleur spécifique si :
%NOW% - [date] <= 3 minutes :
Code:
CONNECTIONTYPE POSTGIS CONNECTION 'host=localhost dbname=DB' .... class name "now - 3min" EXPRESSION (%NOW% - [date] <= 180) style width 1 color 255 0 0 end end
comme [date] est de type timestamp donc dans le format "yyyy-mm-dd hh:mm:ss"
je ne peut pas effectuer la différence %NOW% - [date]
comment puis-je m'y prendre pour me ramener à un entier (ex nombre de secondes depuis le 01/01/1970)
pour pouvoir effectuer l'opération ?
merci bien
Jean-Marie
Hors ligne
#2 Tue 14 June 2011 17:17
Re: [Mapserver] conversion d'un champ date de type timestamp en entier
Bonjour,
Il devrait y avoir deux possibilités :
* soit dans la requête SQL dans le champ DATA tu récupères le champ "date" en le transformant avec une fonction postgresql
* espérer que la nouveauté sur les expressions apportent une fonction sur les champs date : voir http://www.portailsig.org/content/sorti … ersion-600
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 14 June 2011 18:09
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [Mapserver] conversion d'un champ date de type timestamp en entier
Bonjour
il y a effectivement la fonction sql 'extract(epoch from mon_timestamp)' qui me permet de travailler sur des entiers en secondes ;
exemple de requête :
Code:
select extract(epoch from date), x(coord), y(coord) from table where extract(epoch from date) > 1308030000 and extract(epoch from date) < 1308045518;
je pense que je peux alors écrire dans le mapfile quelque chose comme :
Code:
DATA "extract(epoch from date) from %DBTABLE%"
comment puis-je alors prendre en compte ces entiers dans la définition de ma classe ?
merci d'avance
JM
Hors ligne
#4 Wed 15 June 2011 12:27
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [Mapserver] conversion d'un champ date de type timestamp en entier
apparemment je pensais introduire la fonction de la façon suivante (qui fonctionne bien en ligne de commande sql) :
Code:
data "coord from (select date,coord,num[b],extract(epoch from date[/b]) as bangdate from table) as new_table using unique num"
le problème est qu'en rajoutant l'expression :
Code:
extract(epoch from date) as bangdate
je ne récupère plus aucune données
alors qu'en enlevant la fonction soit :
Code:
data "coord from (select date,coord,num from table) as new_table using unique num"
je reçois bien mes données
en quoi l'introduction de la fonction, de cette manière, peut poser problème ?
merci d'avance
JM
Hors ligne
#5 Wed 15 June 2011 17:29
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [Mapserver] conversion d'un champ date de type timestamp en entier
reBonjour
mon problème demeure ;
comment est-il possible de récupérer le champ date transformé ?
merci bien
Jean-Marie
Hors ligne
#6 Thu 16 June 2011 11:47
- Jean-Marie64
- Participant actif
- Lieu: Pau
- Date d'inscription: 6 Nov 2007
- Messages: 131
Re: [Mapserver] conversion d'un champ date de type timestamp en entier
pour ceux que çà intéresse j'ai finalement contourné le problème
en passant en paramètre les dates me permettant, dans le mapfile,
de définir des intervalles de temps et d'affecter une couleur spécifique à chacun
des points dont la date est dans cet intervalle :
dans ce qui suit [date] est le champ date dans la table de la BD ;
CLASSDATEi est une date au format YYYY-MM-DD HH!MM:SS
passée en paramètre avec OpenLayers
class
name "classdate1"
EXPRESSION ("[date]">"%CLASSDATE1%")
style
symbol "Point"
size 6
color 255 0 0
end
end
class
name "classdate2"
EXPRESSION ("[date]">"%CLASSDATE2%")
style
symbol "Point"
size 6
color 255 255 0
end
end
...
Hors ligne
Pages: 1
- Sujet précédent - [Mapserver] conversion d'un champ date de type timestamp en entier - Sujet suivant