ménage dans les tables phase 5 à cause des systèmes de projection

le bon…
This commit is contained in:
MaelReboux 2019-10-28 14:48:45 +01:00
parent c5c6f2891c
commit 0b9107e172
2 changed files with 53 additions and 29 deletions

View file

@ -532,7 +532,7 @@ ALTER TABLE phase_3_trace_secteurs_4326 OWNER TO redadeg;
-- la couche des PK calculés automatiquement -- la couche des PK calculés automatiquement
DROP TABLE IF EXISTS phase_3_pk_auto ; DROP TABLE IF EXISTS phase_3_pk_auto CASCADE ;
CREATE TABLE phase_3_pk_auto CREATE TABLE phase_3_pk_auto
( (
pk_id integer, pk_id integer,
@ -632,8 +632,7 @@ ALTER TABLE phase_4_pk_auto_4326 OWNER TO redadeg;
========================================================================== ==========================================================================
*/ */
-- la table des PK avant modifications manuelles -- la table des PK avant modifications manuelles = PK de référence = phase_3_pk_auto
-- en WGS85 / EPSG:4326 pour se simplier les contrôles
DROP TABLE IF EXISTS phase_5_pk_ref ; DROP TABLE IF EXISTS phase_5_pk_ref ;
CREATE TABLE phase_5_pk_ref CREATE TABLE phase_5_pk_ref
( (
@ -659,26 +658,40 @@ CREATE TABLE phase_5_pk_ref
the_geom geometry, the_geom geometry,
CONSTRAINT phase_5_pk_ref_pkey PRIMARY KEY (pk_id), CONSTRAINT phase_5_pk_ref_pkey PRIMARY KEY (pk_id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text), CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326) CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
) ; ) ;
ALTER TABLE phase_5_pk_ref OWNER TO redadeg; ALTER TABLE phase_5_pk_ref OWNER TO redadeg;
-- on charge cette table avec les données finales de la phase 3 -- on charge cette table avec les données finales de la phase 3
INSERT INTO phase_5_pk_ref SELECT * FROM phase_4_pk_auto_4326 ; TRUNCATE TABLE phase_5_pk_ref ;
INSERT INTO phase_5_pk_ref SELECT * FROM phase_3_pk_auto ;
-- on définit manuellement la couche avec un type mixte parce qu'on a des lignes dans la couche de points… -- on définit manuellement la couche avec un type mixte parce qu'on a des lignes dans la couche de points…
DROP TABLE public.phase_5_pk_umap; DROP TABLE IF EXISTS phase_5_pk_umap_4326;
CREATE TABLE public.phase_5_pk_umap CREATE TABLE phase_5_pk_umap_4326
( (
ogc_fid integer, ogc_fid integer,
pk_id integer, pk_id integer,
secteur_id integer, secteur_id integer,
the_geom geometry, the_geom geometry,
--CONSTRAINT phase_5_pk_umap_pkey PRIMARY KEY (ogc_fid), --CONSTRAINT phase_5_pk_umap_pkey PRIMARY KEY (ogc_fid),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326) CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)
); );
-- la table en 2154 pour travailler
DROP TABLE IF EXISTS phase_5_pk_umap;
CREATE TABLE phase_5_pk_umap
(
pk_id integer,
secteur_id integer,
the_geom geometry,
CONSTRAINT phase_5_pk_umap_pkey PRIMARY KEY (pk_id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
-- la table finale -- la table finale
DROP TABLE IF EXISTS phase_5_pk ; DROP TABLE IF EXISTS phase_5_pk ;
@ -706,7 +719,7 @@ CREATE TABLE phase_5_pk
the_geom geometry, the_geom geometry,
CONSTRAINT phase_5_pk_pkey PRIMARY KEY (pk_id), CONSTRAINT phase_5_pk_pkey PRIMARY KEY (pk_id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text), CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326) CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
) ; ) ;
ALTER TABLE phase_5_pk OWNER TO redadeg; ALTER TABLE phase_5_pk OWNER TO redadeg;

View file

@ -39,7 +39,7 @@ echo ""
# on commence par vider la table qui contiendra les calculs d'itinéraires # on commence par vider la table qui contiendra les calculs d'itinéraires
echo " vidage de la couche de routage" echo " vidage de la couche de routage"
$PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME -c "TRUNCATE TABLE phase_5_pk_umap ;" $PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME -c "TRUNCATE TABLE phase_5_pk_umap_4326 ;"
echo " fait" echo " fait"
echo "" echo ""
@ -50,80 +50,91 @@ echo " secteur 1"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027042/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027042/ > data/phase_5_pk_umap_tmp.geojson
# chargement initial # chargement initial
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 2" echo " secteur 2"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027081/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027081/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 3" echo " secteur 3"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027101/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027101/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 4" echo " secteur 4"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027104/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027104/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 5" echo " secteur 5"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027107/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027107/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 6" echo " secteur 6"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027110/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027110/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 7" echo " secteur 7"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027114/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027114/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 8" echo " secteur 8"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027117/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027117/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 9" echo " secteur 9"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027120/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027120/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
echo " secteur 10" echo " secteur 10"
curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027123/ > data/phase_5_pk_umap_tmp.geojson curl -sS http://umap.openstreetmap.fr/fr/datalayer/1027123/ > data/phase_5_pk_umap_tmp.geojson
# on rajoute à la couche # on rajoute à la couche
ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \ ogr2ogr -f "PostgreSQL" PG:"host=$DB_HOST user=$DB_USER password=$DB_PASS dbname=$DB_NAME" \
data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap -explodecollections -append data/phase_5_pk_umap_tmp.geojson -nln phase_5_pk_umap_4326 -explodecollections -append
# ensuite on supprime les enregistrement aberrants # ensuite on supprime les enregistrement aberrants
echo "" echo ""
echo " suppression des données nulles" echo " suppression des données nulles"
$PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME -c "DELETE FROM phase_5_pk_umap WHERE ST_geometrytype(the_geom) <> 'ST_Point' OR secteur_id IS NULL OR pk_id IS NULL ;" $PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME -c "DELETE FROM phase_5_pk_umap_4326 WHERE ST_geometrytype(the_geom) <> 'ST_Point' OR secteur_id IS NULL OR pk_id IS NULL ;"
echo " fait" echo " fait"
# et on charge la couche en 2154 pour pouvoir travailler
echo ""
echo " chargement de la couche de travail en 2154"
$PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME \
-c "TRUNCATE phase_5_pk_umap ;
INSERT INTO phase_5_pk_umap
SELECT pk_id, secteur_id, ST_Transform(the_geom,2154) AS the_geom
FROM phase_5_pk_umap_4326
ORDER BY pk_id ;"
echo " fait"
echo "" echo ""
echo "" echo ""
@ -219,7 +230,7 @@ echo ""
read nb_pk_deplaces <<< $( $PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME --no-align -t --quiet -c \ read nb_pk_deplaces <<< $( $PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME --no-align -t --quiet -c \
"SELECT COUNT(*) "SELECT COUNT(*)
FROM phase_5_pk_ref r FULL JOIN phase_5_pk_umap u ON r.pk_id = u.pk_id FROM phase_5_pk_ref r FULL JOIN phase_5_pk_umap u ON r.pk_id = u.pk_id
WHERE TRUNC(ST_Distance(ST_Transform(r.the_geom,2154), ST_Transform(u.the_geom,2154))::numeric,2) > 1" WHERE TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) > 1 ;"
) )
echo " $nb_pk_deplaces PK déplacés manuellement" echo " $nb_pk_deplaces PK déplacés manuellement"
@ -233,9 +244,9 @@ $PSQL -X -h $DB_HOST -U $DB_USER -d $DB_NAME \
SELECT SELECT
r.pk_id, r.pk_id,
r.secteur_id, r.secteur_id,
TRUNC(ST_Distance(ST_Transform(r.the_geom,2154), ST_Transform(u.the_geom,2154))::numeric,2) as distance TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) as distance
FROM phase_5_pk_ref r FULL JOIN phase_5_pk_umap u ON r.pk_id = u.pk_id FROM phase_5_pk_ref r FULL JOIN phase_5_pk_umap u ON r.pk_id = u.pk_id
WHERE TRUNC(ST_Distance(ST_Transform(r.the_geom,2154), ST_Transform(u.the_geom,2154))::numeric,2) > 1 WHERE TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) > 1
) )
SELECT '1' as tri, '> 1000' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance >= 1000) SELECT '1' as tri, '> 1000' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance >= 1000)
UNION SELECT '2' as tri, '> 500' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance >= 500 AND distance < 1000) UNION SELECT '2' as tri, '> 500' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance >= 500 AND distance < 1000)
@ -261,7 +272,7 @@ echo "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
echo " Application des traitements SQL phase 5" echo " Application des traitements SQL phase 5"
echo "" echo ""
#$PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME < traitements_phase_5.sql $PSQL -h $DB_HOST -U $DB_USER -d $DB_NAME < traitements_phase_5.sql
echo " fait" echo " fait"
echo "" echo ""