Surface de la route par maille

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Surface de la route par maille

Insaf
Bonjour,
J'ai besoin de déterminer la surface de la route par cellule, pour cela, j'ai exécuter la requête suivante:

create table maillage as select STO_CreateGrid(100,100) from route_1000;
create table gridIntersectWithroute as select ST_intersection(a.the_geom,b.the_geom) as the_geom, a.gid from maillage a,route_1000 b where ST_IsValid(b.the_geom) and ST_intersects(a.the_geom,b.the_geom);
create table exploded as select STO_Explode() from gridIntersectWithroute;
create table filterPointsAndLines as select * from exploded where ST_Dimension(the_geom) = 2;
create table unionGridroute as select ST_Union(the_geom) as the_geom,gid from filterPointsAndLines group by gid;
create table routeSurfacePerCell as select (ST_length(the_geom)*LARGEUR) as area,gid from unionGridroute;
create table surface as select a.the_geom, a.gid, b.area as area
from maillage as a,routeSurfacePerCell as b where a.gid=b.gid;

mais ça n'a pas marché :)

Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

Gwendall Petit
Administrator
Bonjour Insaf,

C'est normal que ça ne fonctionne pas car il y quelques petites erreurs dans ton script

-- création du maillage
create table maillage as select STO_CreateGrid(500,500) from route_1000;

-- découpage des tronçons routiers avec les cellules de la grille
-- ici, il faut que tu rajoutes le champ "LARGEUR" sinon il n'apparaîtra pas dans les tables suivantes et tu ne pourras pas faire ton calcul final
create table gridIntersectWithroute as select ST_intersection(a.the_geom,b.the_geom) as the_geom, a.gid, b.LARGEUR from maillage a,route_1000 b where ST_IsValid(b.the_geom) and ST_intersects(a.the_geom,b.the_geom);

-- décomposition du résultat du découpage
create table exploded as select STO_Explode() from gridIntersectWithroute;

-- Filtrage des données pour ne conserver que les objets de type "ligne" --> 1 (et non 2 comme tu l'avais mis --> c'est pour les polygones)
create table filterPointsAndLines as select * from exploded where ST_Dimension(the_geom) = 1;

-- Unification de tous les tronçons compris dans la même cellule de la grille
create table unionGridroute as select ST_Union(the_geom) as the_geom,gid ,Max(LARGEUR) as largeur from filterPointsAndLines group by gid;

-- calcul de la surface de route
create table routeSurfacePerCell as select (ST_length(the_geom)*largeur) as area,gid from unionGridroute;

-- Jointure entre la grille et la dernière couche pour associer la surface de route par maille
create table surface as select a.the_geom, a.gid, b.area as area from maillage as a,routeSurfacePerCell as b where a.gid=b.gid;
J'ai fais le test et ça marche bien (cf image)

Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

Insaf
In reply to this post by Insaf
merci :)
Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

timea
Finalement le calcul de la surface des routes marche après tant échange en décembre! Cool! Je vais le tester avec la dernière version d'Orbis.
Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

ebocher
Administrator
Il a toujours marché. ;-)

C'est l'un des operateurs de base d'OG.

Le 19 février 2010 17:16, timea [via OrbisGIS] <[hidden email]> a écrit :
Finalement le calcul de la surface des routes marche après tant échange en décembre! Cool! Je vais le tester avec la dernière version d'Orbis.


View message @ http://n2.nabble.com/Surface-de-la-route-par-maille-tp4592345p4598687.html
To start a new topic under OrbisGIS Users, email [hidden email]
To unsubscribe from OrbisGIS Users, click here.




--
Docteur en géographie,
spécialité géomatique
École Centrale de Nantes
Institut de recherche en sciences et techniques de la ville
http://www.irstv.cnrs.fr/
http://geosysin.iict.ch/irstv-trac/wiki
http://r1.bocher.free.fr
http://www.projet-sigle.org
Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

timea
Tant mieux...
Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

ebocher
Administrator
Merci d'éviter de polluer la liste avec des reponses sans intérêt pour les échanges.


2010/2/19 timea [via OrbisGIS] <[hidden email]>
Tant mieux...


View message @ http://n2.nabble.com/Surface-de-la-route-par-maille-tp4592345p4598752.html
To start a new topic under OrbisGIS Users, email [hidden email]
To unsubscribe from OrbisGIS Users, click here.




--
Docteur en géographie,
spécialité géomatique
École Centrale de Nantes
Institut de recherche en sciences et techniques de la ville
http://www.irstv.cnrs.fr/
http://geosysin.iict.ch/irstv-trac/wiki
http://r1.bocher.free.fr
http://www.projet-sigle.org
Reply | Threaded
Open this post in threaded view
|

Re: Surface de la route par maille

Gwendall Petit
Administrator
Pour calculer la densité de la route il suffit de rajouter cette ligne à la fin du script SQL
-- calcul de la densité de surface routière par rapport à la surface de la maille
create table density as select a.the_geom, a.gid, b.area/ST_area(a.the_geom) as density from maillage a,routeSurfacePerCell b where a.gid=b.gid;