Version 7 (modified by cedric, 14 years ago) (diff) |
---|
Noeuds mer RHT
Céline je ne retrouve pas tes scripts pour les noeuds mer... Ce serait bien de les coller ici.
Intégration des noeuds mer dans la table rht_topology.
alter table rht.rht_topology add column noeudmer boolean default FALSE; update rht.rht_topology set noeudmer=TRUE where id_drain in (select id_drain from rht.noeudmer where noeudmer); --1083
Identification des différentes zones, manche, Bretagne, Méditerranée, Golfe de Gascogne, Est France, Pyrénnées, pb topologie centre France.
alter table rht.noeudmer add column zonegeo character varying(30); update rht.noeudmer_polygon set location='pb topologie centre france' where location is null; update rht.noeudmer n set zonegeo=location from( Select location,id_drain from rht.noeudmer_polygon p join rht.noeudmer n on st_intersects(p.the_geom,n.the_geom)) s where s.id_drain=n.id_drain; -- 1114 update rht.noeudmer set zonegeo='Golfe de Gascogne' where zonegeo='Biscaye'; select * from rht.noeudmer where zonegeo is null; -- zero lignes
comment aller chercher les infos sur le nombre de barrages et la distance mer, les données sont dans la ccm ?
installation de dblink (je suis aller chercher le code sql dans contrib), dblink s'installe dans une base de données PostgreSQL: pgsql/contrib/dblink/dblink.sql
/* cross database query*/ -- je crée une table contenant la ccm.riversegments pour la France avec les colonnes qui m'intéressent. select dblink_connect('connectionccm','hostaddr=93.20.247.238 port=5432 dbname=eda2 user=postgres password=petromyzon***'); create schema ccm; drop table if exists ccm.riversegments_france; create table ccm.riversegments_france as ( SELECT * FROM dblink('connectionccm','SELECT wso1_id,cs_nbdams,cum_len_sea,the_geom FROM ccm21.riversegments r join europe.wso w on r.wso_id=w.wso_id where area=''France''') AS t(wso1_id int, cs_nbdams integer, cum_len_sea numeric,the_geom geometry) ); -- je vais chercher dans la ccm les informations sur les distances mer et les cumuls de barrages select distinct on (zonegeo) zonegeo from rht.noeudmer; alter table rht.noeudmer add column cumnbbar integer; alter table rht.noeudmer add column dmer numeric; alter table rht.noeudmer add column wso1_id integer; update rht.noeudmer set (cumnbbar,dmer,wso1_id)= (jointure.cs_nbdams,jointure.cum_len_sea,jointure.wso1_id) from -- resultat final de la jointure spatiale entre ccm et noeudfrontiere (select distinct on (id_drain) id_drain, min(distance) as distance, wso1_id,cs_nbdams, cum_len_sea from ( -- requete intermédiaire dont on prend le min (sub) select id_drain, ST_distance(noeudfrontiere.the_geom,ccmrs.the_geom) as distance,ccmrs.* FROM ccm.riversegments_france ccmrs join (select id_drain, the_geom from rht.noeudmer where noeudmer and zonegeo in ('Est','pyrénées')) as noeudfrontiere on ST_DWithin(noeudfrontiere.the_geom,ccmrs.the_geom, 500)) as sub group by id_drain, distance, wso1_id,cs_nbdams, cum_len_sea) as jointure where noeudmer.id_drain=jointure.id_drain; --100 lignes modifiées