Version 39 (modified by celine, 14 years ago) (diff) |
---|
back to first page..
back to RHT
Integrating BDCarthage2011 into eda2.0_RHT
---Céline D: cd D:\CelineJouanin\BDCarthage2011 C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f COURS_D_EAU.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f HYDROGRAPHIE_SURFACIQUE.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f LAISSE.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f NOEUD_HYDROGRAPHIQUE.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f POINT_EAU_ISOLE.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f REGION_HYDROGRAPHIQUE.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f SECTEUR.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f SOUS_SECTEUR.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f TRONCON_HYDROGRAPHIQUE.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -U postgres -p 5432 -f ZONE_HYDROGRAPHIQUE.sql create schema bd_carthage2011; alter table cours_d_eau set schema bd_carthage2011; alter table hydrographie_surfacique set schema bd_carthage2011; alter table laisse set schema bd_carthage2011; alter table noeud_hydrographique set schema bd_carthage2011; alter table point_eau_isole set schema bd_carthage2011; alter table region_hydrographique set schema bd_carthage2011; alter table secteur set schema bd_carthage2011; alter table sous_secteur set schema bd_carthage2011; alter table troncon_hydrographique set schema bd_carthage2011; alter table zone_hydrographique set schema bd_carthage2011; CREATE INDEX indextroncon ON bd_carthage2011.troncon_hydrographique USING btree (id_bdcarth);
Joining BdCarthage with RHT
select ST_IsClosed(the_geom) from rht.rht_200 order by ST_IsClosed(the_geom); select ST_IsClosed(the_geom), id_bdcarth from bd_carthage2011.troncon_hydrographique order by ST_IsClosed(the_geom); ---5 fermés create table rht.rht_300 as select id_drain, gid, st_buffer(the_geom,200) as the_geom from rht.rht; CREATE INDEX indexrht_300 ON rht.rht_200 USING GIST ( the_geom GIST_GEOMETRY_OPS ); drop table if exists rht.rht_bdcarthage_200; create table rht.rht_bdcarthage_200 as select r.*, id_bdcarth as gidbdc from rht.rht_200 r join bd_carthage2011.troncon_hydrographique bdc on ST_contains(r.the_geom,bdc.the_geom) order by id_drain;
Bretagne
see CookBook RHT_UGA and CookBook BDCarthage_UGA
DROP TABLE IF EXISTS rht.rht_Bretagne; CREATE TABLE rht.rht_Bretagne AS SELECT * FROM rht.rht WHERE id_drain IN (SELECT id_drain FROM uga2010.id_drain WHERE uga='Bretagne'); ALTER TABLE rht.rht_Bretagne ADD CONSTRAINT pk_id_drain_rht_Bretagne PRIMARY KEY (id_drain); INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") SELECT '', 'rht', 'rht_Bretagne', 'the_geom', ST_CoordDim(the_geom), ST_SRID(the_geom), GeometryType(the_geom) FROM rht.rht_Bretagne LIMIT 1; DROP TABLE IF EXISTS bd_carthage2011.troncon_Bretagne; CREATE TABLE bd_carthage2011.troncon_Bretagne AS SELECT * FROM bd_carthage2011.troncon_hydrographique WHERE id_bdcarth IN (SELECT id_bdcarth FROM uga2010.id_bdcarthage WHERE uga='Bretagne'); ALTER TABLE bd_carthage2011.troncon_Bretagne ADD CONSTRAINT pk_id_bdcarth_Bret PRIMARY KEY (id_bdcarth); --- en attendant utilise gid alter table bd_carthage2011.troncon_Bretagne drop constraint pk_id_bdcarth_Bret ALTER TABLE bd_carthage2011.troncon_Bretagne ADD CONSTRAINT pk_id_bdcarth_Bret PRIMARY KEY (gid); INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") SELECT '', 'bd_carthage2011', 'troncon_Bretagne', 'the_geom', ST_CoordDim(the_geom), ST_SRID(the_geom), GeometryType(the_geom) FROM bd_carthage2011.troncon_Bretagne LIMIT 1; drop table rht.rht_bretagne150; create table rht.rht_bretagne150 as select id_drain, gid, st_buffer(the_geom,150) as the_geom from rht.rht_bretagne; ---12578 ms CREATE INDEX indexrht_bretagne150 ON rht.rht_bretagne150 USING GIST ( the_geom GIST_GEOMETRY_OPS );
---essai1 select r.*, id_bdcarth as gidbdc, ST_Distance(r.the_geom,bdc.the_geom) as distance, ST_HausdorffDistance(r.the_geom,bdc.the_geom) as st_hausdorffdistance from rht.rht_bretagne r, bd_carthage2011.troncon_bretagne bdc; ---essai2 select r.*, id_bdcarth as gidbdc, ST_Distance(r.the_geom,bdc.the_geom) as distance, ST_HausdorffDistance(r.the_geom,bdc.the_geom) as st_hausdorffdistance from rht.rht_bretagne r, bd_carthage2011.troncon_bretagne bdc, rht.rht_bretagne300 as r300 where r.the_geom && bdc.the_geom AND ST_Intersects(bdc.the_geom,r300.the_geom); ---96226 lines 152105ms
Create a layer with a polygon to select one river basin
See CookBook Quantum Gis Create polygon
d: cd D:\CelineJouanin\EDA20RHT C:\"Program Files"\PostgreSQL\8.4\bin\shp2pgsql -s 3035 -c -g the_geom -W LATIN1 -I clip_troncon.shp clip_troncon > clip_troncon.sql C:\"Program Files"\PostgreSQL\8.4\bin\psql -d eda2.0_RHT -h localhost -U postgres -p 5432 -f clip_troncon.sql Alter table clip_troncon set schema rht; DROP TABLE IF EXISTS bd_carthage2011.troncon_bv; CREATE TABLE bd_carthage2011.troncon_bv AS select bdc.* from bd_carthage2011.troncon_hydrographique bdc, rht.clip_troncon as clip where st_contains(clip.the_geom,bdc.the_geom)=true; ALTER TABLE bd_carthage2011.troncon_bv ADD CONSTRAINT pk_id_bdcarth_bv PRIMARY KEY (gid); INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") SELECT '', 'bd_carthage2011', 'troncon_bv', 'the_geom', ST_CoordDim(the_geom), ST_SRID(the_geom), GeometryType(the_geom) FROM bd_carthage2011.troncon_bv LIMIT 1; DROP TABLE IF EXISTS rht.rht_bv; CREATE TABLE rht.rht_bv AS SELECT r.* FROM rht.rht r, rht.clip_troncon as clip where st_contains(clip.the_geom,r.the_geom)=true; ALTER TABLE rht.rht_bv ADD CONSTRAINT pk_id_drain_rht_bv PRIMARY KEY (id_drain); INSERT INTO geometry_columns(f_table_catalog, f_table_schema, f_table_name, f_geometry_column, coord_dimension, srid, "type") SELECT '', 'rht', 'rht_bv', 'the_geom', ST_CoordDim(the_geom), ST_SRID(the_geom), GeometryType(the_geom) FROM rht.rht_bv LIMIT 1; ---essai3 select r.*, id_bdcarth as gidbdc, ST_Distance(r.the_geom,bdc.the_geom) as distance, ST_HausdorffDistance(r.the_geom,bdc.the_geom) as st_hausdorffdistance from rht.rht_bv r, bd_carthage2011.troncon_bv bdc, rht.rht_bretagne300 as r300 where r.the_geom && bdc.the_geom AND ST_Intersects(bdc.the_geom,r300.the_geom) order by id_bdcarth; ---30 lines 359ms ---essai4 select r.*, id_bdcarth as gidbdc, ST_Distance(r.the_geom,bdc.the_geom) as distance, ST_HausdorffDistance(r.the_geom,bdc.the_geom) as st_hausdorffdistance from rht.rht_bv r, bd_carthage2011.troncon_bv bdc, rht.rht_bretagne300 as r300 where r.the_geom && bdc.the_geom AND ST_Intersects(bdc.the_geom,r300.the_geom) AND nature !='Aqueduc, conduite forcée' and num_superp !=1 order by id_bdcarth; ---400 lines 359ms -- essai5 select distinct on (id_bdcarth) id_bdcarth, min(distance) as distance, id_drain from ( select r.id_drain, id_bdcarth, ST_Distance(r.the_geom,bdc.the_geom) as distance from rht.rht_bv r join rht.rht_bretagne150 rht150 on r.id_drain=rht150.id_drain join bd_carthage2011.troncon_bv bdc on st_intersects(bdc.the_geom,rht150.the_geom) where nature !='Aqueduc, conduite forcée' and num_superp !=1 ) as toto group by id_bdcarth, distance, id_drain order by id_bdcarth ; ---400 lines 359ms
For France
drop table if exists rht.rht_150; create table rht.rht_150 as select id_drain, gid, st_buffer(the_geom,150) as the_geom from rht.rht; ---12578 ms CREATE INDEX indexrht_150 ON rht.rht_150 USING GIST ( the_geom GIST_GEOMETRY_OPS ); CREATE INDEX indexrht150 ON rht.rht_150 USING btree (id_drain); drop table if exists rht.rht_bdcarthage; create table rht.rht_bdcarthage as select distinct on (id_bdcarth) id_bdcarth, min(distance) as distance, id_drain from ( select r.id_drain, id_bdcarth, ST_Distance(r.the_geom,bdc.the_geom) as distance from rht.rht r join rht.rht_150 rht150 on r.id_drain=rht150.id_drain join bd_carthage2011.troncon_hydrographique bdc on st_intersects(bdc.the_geom,rht150.the_geom) where nature !='Aqueduc, conduite forcée' and num_superp !=1 ) as toto group by id_bdcarth, distance, id_drain order by id_bdcarth ; ---393393 lines CREATE INDEX indexrhtbdc ON rht.rht_bdcarthage USING btree (id_bdcarth); CREATE INDEX indexrhtbdc2 ON rht.rht_bdcarthage USING btree (id_drain); select count(*) from bd_carthage2011.troncon_hydrographique ---528422 lines select count(*) from rht.rht ---114601 lines select count(*) from rht.rht_bdcarthage --- 393393 lines select id_drain from rht.rht_bdcarthage where id_drain not in select id_drain from rht.rht_bdcarthage; --- ---Changement de buffer (en cours) drop table if exists rht.rht_150b; create table rht.rht_150b as select id_drain, gid, st_buffer(the_geom,150,'endcap=flat join=round') as the_geom from rht.rht; ---104717 ms CREATE INDEX indexrht_150b ON rht.rht_150b USING GIST ( the_geom GIST_GEOMETRY_OPS ); CREATE INDEX indexrht150b ON rht.rht_150b USING btree (id_drain); drop table if exists rht.rht_bdcarthage2; create table rht.rht_bdcarthage2 as select distinct on (id_bdcarth) id_bdcarth, min(distance) as distance, id_drain from ( select r.id_drain, id_bdcarth, ST_Distance(r.the_geom,bdc.the_geom) as distance from rht.rht r join rht.rht_150b rht150b on r.id_drain=rht150b.id_drain join bd_carthage2011.troncon_hydrographique bdc on st_intersects(bdc.the_geom,rht150b.the_geom) where nature !='Aqueduc, conduite forcée' and num_superp !=1 ) as toto group by id_bdcarth, distance, id_drain order by id_bdcarth ; ---393393 lines CREATE INDEX indexrhtbdc2 ON rht.rht_bdcarthage2 USING btree (id_bdcarth); CREATE INDEX indexrhtbdcgeom22 ON rht.rht_bdcarthage2 USING btree (id_drain); /------Requête effectuée avec Cédric le 7/10/2011 select distinct on (id_bdcarth,id_drain) id_bdcarth, min(distance) as distance, id_drain from ( select r.id_drain, id_bdcarth, ST_Distance(r.the_geom,bdc.the_geom) as distance from (select * from rht.rht where id_drain in('309179','309116','309047','309048')) as r join rht.rht_150 rht150 on r.id_drain=rht150.id_drain join bd_carthage2011.troncon_hydrographique bdc on st_intersects(bdc.the_geom,rht150.the_geom) where nature !='Aqueduc, conduite forcée' and num_superp !=1 ) as toto group by id_bdcarth, distance, id_drain order by id_bdcarth ; ---393393 lines --- Même requête mais en ne conservant que les id_drain qui n'ont pas id_bdcarth associé dans rht.rht_bdcarthage select distinct on (id_bdcarth,id_drain) id_bdcarth, min(distance) as distance, id_drain from ( select r.id_drain, id_bdcarth, ST_Distance(r.the_geom,bdc.the_geom) as distance from (select * from rht.rht where id_drain in(select id_drain from rht.rht except (select id_drain from rht.rht_bdcarthage))) as r join rht.rht_150 rht150 on r.id_drain=rht150.id_drain join bd_carthage2011.troncon_hydrographique bdc on st_intersects(bdc.the_geom,rht150.the_geom) where nature !='Aqueduc, conduite forcée' and num_superp !=1 ) as toto group by id_bdcarth, distance, id_drain order by id_bdcarth ; --- Comparaison des longeurs des segements select length(r.the_geom)-length(bd.the_geom)as diff, length(r.the_geom), length(bd.the_geom), rbd.id_drain, rbd.id_bdcarth from rht.rht_bdcarthage rbd join rht.rht r on rbd.id_drain=r.id_drain join bd_carthage2011.troncon_hydrographique bd on bd.id_bdcarth=rbd.id_bdcarth order by diff; ---Comparaison des longueurs id_drain et de la somme des longeurs des id_bdcarth associés
Export the tables
C:\"Program Files"\PostgreSQL\8.4\bin\pg_dump -U postgres -p 5432 -t rht.rht_bdcarthage eda2.0_RHT> rht_bdcarthage.sql C:\"Program Files"\PostgreSQL\8.4\bin\pg_dump -U postgres -p 5432 -t rht.rht_150 eda2.0_RHT> rht_150.sql