Changes between Version 2 and Version 3 of Noeud - parcours RHT


Ignore:
Timestamp:
Jan 4, 2012 2:47:00 PM (13 years ago)
Author:
celine
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Noeud - parcours RHT

    v2 v3  
    22back to ["RHT"][[BR]] 
    33 
     4-- INTEGRATION DU RHT et sa TOPOLOGIE -- 
    45Les données ont été préalablement projetées en 3035 sous !ArcGis[[BR]] 
    56Intégration de la table avec id_drain, fnode, tnode 
     
    1213ALTER TABLE rhtvs2 SET SCHEMA rht; 
    1314 
     15ALTER TABLE rht.rhtvs2 RENAME COLUMN fnode_ TO fnode; 
     16ALTER TABLE rht.rhtvs2 RENAME COLUMN tnode_ TO tnode; 
     17 
    1418-- Constraints 
    15 ALTER TABLE rht.rhtvs2 DROP CONSTRAINT rht_pkey; 
    16 ALTER TABLE rht.rhtvs2 ADD CONSTRAINT  pk_id_drain PRIMARY KEY (id_drain); 
     19ALTER TABLE rht.rhtvs2 DROP CONSTRAINT rhtvs2_pkey; 
     20ALTER TABLE rht.rhtvs2 ADD CONSTRAINT  pkey_id_drain PRIMARY KEY (id_drain); 
    1721 
    1822-- Create an index on rht 
     
    2125 
    2226DROP INDEX IF EXISTS rht.indexrhtvs2; 
    23 CREATE INDEX indexrht2 
     27CREATE INDEX indexrhtv2 
    2428ON rht.rhtvs2 
    2529USING btree (id_drain); 
     
    2731 
    2832 
     33-- Noeuds mer RHT -- 
     34{{{ 
     35drop table if exists rht.noeudmervs2; 
     36create table rht.noeudmervs2 as select * from rht.rhtvs2 where tnode not in (select fnode from rht.rhtvs2); 
     37CREATE INDEX indexmer ON rht.noeudmervs2 USING btree (id_drain); 
     38CREATE INDEX indexmergeom ON rht.noeudmervs2 USING GIST ( the_geom GIST_GEOMETRY_OPS ); 
     39COMMENT ON table rht.noeudmervs2 IS 'Table test to know the downstream node from the sea'; 
    2940 
     41select count(*) from rht.noeudmervs2; --- 1114 lines 
     42 
     43Intégration des noeuds mer dans la table rhtvs2. 
     44 
     45alter table rht.rhtvs2 add column noeudmer boolean default FALSE; 
     46update rht.rhtvs2 set noeudmer=TRUE 
     47where id_drain in (select id_drain from rht.noeudmervs2 where noeudmer); --1083 
     48 
     49Identification des différentes zones, manche, Bretagne, Méditerranée, Golfe de Gascogne, Est France, Pyrénnées, pb topologie centre France. 
     50 
     51alter table rht.noeudmervs2 add column zonegeo character varying(30); 
     52alter table rht.noeudmervs2_polygon add column location character varying(30); 
     53update rht.noeudmervs2_polygon set location='pb topologie centre france' where location is null; 
     54update rht.noeudmervs2 n set zonegeo=location from( 
     55Select location,id_drain from rht.noeudmervs2_polygon p 
     56join  rht.noeudmervs2 n on st_intersects(p.the_geom,n.the_geom)) s 
     57where s.id_drain=n.id_drain; -- 1114 
     58update rht.noeudmervs2 set zonegeo='Golfe de Gascogne' where zonegeo='Biscaye'; 
     59select * from rht.noeudmervs2 where zonegeo is null; -- zero lignes 
     60 
     61comment aller chercher les infos sur le nombre de barrages et la distance mer, les données sont dans la ccm ? 
     62 
     63installation 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 
     64 
     65/* cross database query*/ 
     66-- je crée une table contenant la ccm.riversegments pour la France avec les colonnes qui m'intéressent. 
     67 
     68select dblink_connect('connectionccm','hostaddr=93.20.247.238 port=5432 dbname=eda2 user=postgres password=petromyzon***'); 
     69create schema ccm; 
     70drop table if exists ccm.riversegments_france; 
     71create table ccm.riversegments_france as ( 
     72SELECT * 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''') 
     73 AS  t(wso1_id int, cs_nbdams integer, cum_len_sea numeric,the_geom geometry) 
     74); 
     75 
     76-- je vais chercher dans la ccm les informations sur les distances mer et les cumuls de barrages 
     77 
     78select distinct on (zonegeo) zonegeo from rht.noeudmervs2; 
     79 
     80alter table rht.noeudmervs2 add column cumnbbar integer; 
     81alter table rht.noeudmervs2 add column dmer numeric; 
     82alter table rht.noeudmervs2 add column wso1_id integer; 
     83 
     84 
     85update rht.noeudmervs2 set (cumnbbar,dmer,wso1_id)= (jointure.cs_nbdams,jointure.cum_len_sea,jointure.wso1_id) from 
     86        -- resultat final de la jointure spatiale entre ccm et noeudfrontiere 
     87        (select distinct on (id_drain) id_drain, min(distance) as distance, wso1_id,cs_nbdams, cum_len_sea from ( 
     88                -- requete intermédiaire dont on prend le min (sub) 
     89                select id_drain, ST_distance(noeudfrontiere.the_geom,ccmrs.the_geom) as distance,ccmrs.* 
     90                FROM ccm.riversegments_france ccmrs join 
     91                (select id_drain, the_geom from rht.noeudmervs2 where noeudmer and zonegeo in ('Est','pyrénées')) as noeudfrontiere 
     92                on ST_DWithin(noeudfrontiere.the_geom,ccmrs.the_geom, 500)) as sub 
     93        group by id_drain, distance, wso1_id,cs_nbdams, cum_len_sea) as jointure 
     94where noeudmer.id_drain=jointure.id_drain; --100 lignes modifiées 
     95 
     96=> sauvegarde pour Céline 
     97 
     98e: 
     99cd E:\IAV\eda\rht 
     100pg_dump  -U postgres -p 5432 -t rht.rht_topology -t rht.noeudmervs2 -t rht.noeudmervs2_polygon eda2.0_RHT> sauve3tablesnoeudsmer.sql 
     101 
     102---Celine 
     103d: 
     104cd D:\CelineJouanin\EDA20RHT 
     105C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -h localhost -U postgres -p 5432 -f sauve3tablesnoeudsmer.sql 
     106 
     107Mise à jour de la table rht_topology 
     108 
     109alter table rht.rht_topology add column cumnbbar integer; 
     110alter table rht.rht_topology add column dmer numeric; 
     111alter table rht.rht_topology drop column wso1_id ; 
     112 
     113update  rht.noeudmervs2 set dmer=0 where dmer is null and noeudmer; -- 983 -- a modifier pour prendre peut être la moitié de la distance du tronçon... a voir avec Céline 
     114select * from rht.noeudmervs2 where dmer>0; -- il n'a pas trouvé de bassin dans les pyrénées... bizarre.... Mais on vivra bien avec !!! 
     115-- mise à jour des données dans rht_topology 
     116update rht.rht_topology set (dmer, cumnbbar)=(sub.dmer, sub.cumnbbar) 
     117from (select id_drain,dmer,cumnbbar from rht.noeudmervs2 where dmer is not null and noeudmer) sub 
     118where sub.id_drain=rht_topology.id_drain; --1083 
     119 
     120