Django-fr

Forum

#1 11-10-2012 11:35:35

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Geodjango reprojeter point

Bonjour,

Dans le projet que j'ai en cours actuellement, je me sert de données géographiques. Ces données sont en EPSG:4326 ce qui correspond au WGS84 (systèmes mondial commun en latitudes - longitudes) or les données par défaut dans les application de cartographie en ligne type openlayer et leaflet, sont en EPSG 900913.

Voici donc mon problème, je me sert de FLoppyForms (add-on geodjango) permettant de saisir des données géographiques et d'intégrer cela dans un formulaire. Quand je récupère ces données, je remarque qu'elles sont en EPSG:900913 que je dois ensuite transformer en EPSG:4326.

from django.contrib.gis.geos import *

x = self.cleaned_data['geom'].x
y = self.cleaned_data['geom'].y
srid = self.cleaned_data['geom'].srid

J'ai testé ça :
point = GEOSGeometry(self.cleaned_data['geom'])

ça aussi
point = self.cleaned_data['geom']

et même ça
point = Point(x, y, srid)

pointWGS84 = point.transform(4326)

Le point WGS84 apparait en "none" alors qu'il devrait être transformé.

Avez-vous une idée ?

Hors ligne

#2 11-10-2012 12:49:09

Bruno Renié
Membre
Inscription : 11-08-2010
Messages : 52

Re : Geodjango reprojeter point

Bonjour,

2012/10/11 polo <carrotpaul _AT_ yahoo.fr>:
> Bonjour,
>
> Dans le projet que j'ai en cours actuellement, je me sert de données
> géographiques. Ces données sont en EPSG:4326 ce qui correspond au WGS84
> (systèmes mondial commun en latitudes - longitudes) or les données par
> défaut dans les application de cartographie en ligne type openlayer et
> leaflet, sont en EPSG 900913.
>
> Voici donc mon problème, je me sert de FLoppyForms (add-on geodjango)
> permettant de saisir des données géographiques et d'intégrer cela dans
> un formulaire. Quand je récupère ces données, je remarque qu'elles sont
> en EPSG:900913 que je dois ensuite transformer en EPSG:4326.
>
> (snip)
>
> pointWGS84 = point.transform(4326)

transform() ne clone pas l'objet mais applique la transformation sur
place. Pour récupérer un nouvel objet, il faut passer clone=True.

https://docs.djangoproject.com/en/dev/ref/contrib/gis/geos/#django.contrib.gis.geos.GEOSGeometry.transform

D'autre part tu peux passer le srid voulu directement dans la
définition du formulaire :

import floppyforms as forms

class GeoForm(forms.Form):
    geom = forms.gis.PointField(srid=4326)

Avec ça, form.cleaned_data['geom'] devrait contenir le point en WGS84
sans qu'il y ait besoin de jouer avec les transformations.

Hors ligne

#3 14-10-2012 10:13:32

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Geodjango reprojeter point

Merci,

Je comprend mieux !! Le problème est résolu.

Vous êtes la personne qui a développé floppyforms ? Si oui, pensez vous y intégrer un jour Leaflet ?

Merci

Hors ligne

#4 15-10-2012 15:51:21

Bruno Renié
Membre
Inscription : 11-08-2010
Messages : 52

Re : Geodjango reprojeter point

2012/10/14 polo <carrotpaul _AT_ yahoo.fr>:
> Merci,
>
> Je comprend mieux !! Le problème est résolu.

Parfait smile

> Vous êtes la personne qui a développé floppyforms ? Si oui, pensez vous
> y intégrer un jour Leaflet ?

Oui je suis l'auteur de floppyforms. Le support de Leaflet (via
Leaflet.draw) est envisagé pour une version future, sans estimation de
date pour l'instant.

Bruno

Hors ligne

#5 16-10-2012 10:16:41

torrak
Membre
Inscription : 31-08-2011
Messages : 47

Re : Geodjango reprojeter point

Dans ce cas, si je tiens l'auteur de FloppyForms, je souhaite vous féliciter pour cette application qui est vraiment bien foutue et sympa à utiliser.

J'attends avec impatience le support Leaflet...

Encore merci

Hors ligne

Pied de page des forums