[OSM-dev-fr] [SQL] calcul de surface
Vincent de Chateau-Thierry
vdct at laposte.net
Mer 6 Oct 15:30:23 BST 2010
Bonjour,
> De : "Vincent Pottier"
>
> Pour calculer la surface couverte en landuse, j'utilise :
>
> SELECT count(*), SUM(ST_area( way)) AS area
> FROM france_polygon
> WHERE landuse LIKE '%'
>
> Ce qui donne :
> 205217 44.5064532891517
>
> Mais je n'ai aucune idée de l'unité du résultat. Comment le traduire en
> km² ?
En effet, tu as obtenu des degrés carré, pas très pratique pour se faire une idée de la surface :-)
> De même :
> SELECT osm_id, name, ROUND(ST_area( way))/1000000 AS area
> FROM france_polygon
> WHERE admin_level='2'
>
> me retourne systématiquement 0 pour les surfaces. Mais je peux trouver
> la surface de la France métropolitaine sur wikipédia.
Idem, la division par 1000000 des degrés carrés ramène vite à 0.
Si tu es en PostGIS 1.5, tu peux pour obtenir "simplement" des mètres carrés, manipuler
le type "Geography" à la place du type "Geometry". Plein d'explications ici :
http://www.postgis.org/documentation/manual-1.5/ch04.html#PostGIS_Geography
Si tu es en 1.4, il te faut passer de coordonnés lon/lat en coordonnées planes (projetées)
avant de calculer les aires, histoire de manipuler des mètres.
La fonction à utiliser est ST_Transform :
http://www.postgis.org/documentation/manual-1.4/ST_Transform.html
avec comme code EPSG cible 3035 (pour conserver les surfaces plutôt que les angles).
vincent
Une messagerie gratuite, garantie à vie et des services en plus, ça vous tente ?
Je crée ma boîte mail www.laposte.net
More information about the dev-fr
mailing list