[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