Vous n'êtes pas identifié(e).
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
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
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
2012/10/14 polo <carrotpaul _AT_ yahoo.fr>:
> Merci,
>
> Je comprend mieux !! Le problème est résolu.
Parfait
> 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
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