ar_redadeg/scripts/create_tables.sql

756 lines
22 KiB
MySQL
Raw Normal View History

2019-01-01 19:52:23 +00:00
2019-03-17 09:19:08 +00:00
/*
==========================================================================
phase 1 : récupération des données depuis umap et calcul des PK auto
==========================================================================
*/
-- voir la documentation pour la création de la base de données
2019-03-06 19:46:07 +00:00
-- on est obligé de créer des tables en Lambert 93 (EPSG:2154) (ou une CC conforme)
2019-03-17 09:19:08 +00:00
-- car même si les tables originales sont déclarées en 3857
2019-01-01 19:52:23 +00:00
-- en fait les géoémtries sont en 4326
-- donc les calculs de longueur sont faux
2019-03-06 19:46:07 +00:00
-- au moins en créant une table en dur en Lambert 93 / 2154 on est sûr des longueurs
2019-01-01 19:52:23 +00:00
2019-01-13 16:41:56 +00:00
-- la table secteur gère les grands découpage de gestion
2019-03-06 19:46:07 +00:00
DROP TABLE IF EXISTS secteur CASCADE ;
2019-01-13 16:41:56 +00:00
CREATE TABLE secteur
(
id integer,
nom_br text,
2019-05-01 20:49:35 +00:00
nom_fr text,
2019-10-10 19:16:27 +00:00
objectif_km integer,
km_redadeg integer
2019-01-13 16:41:56 +00:00
);
ALTER TABLE secteur OWNER to redadeg;
DROP TABLE IF EXISTS phase_1_trace_3857 ;
CREATE TABLE phase_1_trace_3857
(
fake_column integer
);
ALTER TABLE phase_1_trace_3857 OWNER to redadeg;
DROP TABLE IF EXISTS phase_1_pk_vip_3857 ;
CREATE TABLE phase_1_pk_vip_3857
(
fake_column integer
);
ALTER TABLE phase_1_pk_vip_3857 OWNER to redadeg;
2019-03-06 19:46:07 +00:00
DROP TABLE IF EXISTS phase_1_trace CASCADE ;
CREATE TABLE phase_1_trace
2019-01-01 19:52:23 +00:00
(
ogc_fid integer,
2019-03-06 19:46:07 +00:00
secteur_id int,
2019-01-03 21:19:25 +00:00
ordre int,
longueur numeric,
2019-03-06 19:46:07 +00:00
the_geom geometry(LineString,2154),
CONSTRAINT phase_1_trace_pkey PRIMARY KEY (ogc_fid),
2019-01-01 19:52:23 +00:00
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
2019-03-06 19:46:07 +00:00
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
2019-01-01 19:52:23 +00:00
);
ALTER TABLE phase_1_trace OWNER to redadeg;
2019-01-01 19:52:23 +00:00
2019-03-06 19:46:07 +00:00
DROP TABLE IF EXISTS phase_1_pk_vip CASCADE ;
CREATE TABLE phase_1_pk_vip
2019-01-01 19:52:23 +00:00
(
ogc_fid integer,
name text,
description text,
2019-03-06 19:46:07 +00:00
the_geom geometry(Point,2154),
CONSTRAINT phase_1_pk_vip_pkey PRIMARY KEY (ogc_fid),
2019-01-01 19:52:23 +00:00
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
2019-03-06 19:46:07 +00:00
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
2019-01-01 19:52:23 +00:00
);
ALTER TABLE phase_1_pk_vip OWNER to redadeg;
2019-01-01 19:52:23 +00:00
-- on crée aussi une version correcte en 4326 pour export vers umap
2019-03-06 19:46:07 +00:00
DROP TABLE IF EXISTS phase_1_trace_4326 ;
CREATE TABLE phase_1_trace_4326
(
ogc_fid integer,
name text, -- = section_nom
secteur_id int,
ordre int,
longueur numeric,
the_geom geometry(LineString,4326),
CONSTRAINT phase_1_trace_4326_pkey PRIMARY KEY (ogc_fid),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)
);
ALTER TABLE phase_1_trace_4326 OWNER to redadeg;
2019-01-01 19:52:23 +00:00
-- table des tronçons créés à partir des longs tracés
2019-03-06 19:46:07 +00:00
DROP TABLE IF EXISTS phase_1_trace_troncons CASCADE ;
CREATE TABLE phase_1_trace_troncons
2019-01-01 19:52:23 +00:00
(
uid bigint,
2019-03-06 19:46:07 +00:00
secteur_id int,
2019-01-13 16:11:59 +00:00
ordre bigint,
2019-01-01 19:52:23 +00:00
km bigint,
km_reel bigint,
longueur integer,
2019-03-06 19:46:07 +00:00
the_geom geometry(LineString,2154),
CONSTRAINT phase_1_trace_troncons_pkey PRIMARY KEY (uid),
2019-01-01 19:52:23 +00:00
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
2019-03-06 19:46:07 +00:00
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
2019-01-01 19:52:23 +00:00
);
2019-03-06 19:46:07 +00:00
ALTER TABLE phase_1_trace_troncons OWNER to redadeg;
2019-01-13 16:11:59 +00:00
2019-01-01 19:52:23 +00:00
-- vue des PK auto en fin de tronçon
2019-03-06 19:46:07 +00:00
DROP VIEW IF EXISTS phase_1_pk_auto ;
CREATE VIEW phase_1_pk_auto AS
2019-01-01 19:52:23 +00:00
SELECT
2019-03-06 20:28:35 +00:00
uid, secteur_id, ordre, km, km_reel,
2019-03-06 19:46:07 +00:00
ST_Line_Interpolate_Point(the_geom, 1)::geometry(Point, 2154) AS the_geom
FROM phase_1_trace_troncons
2019-03-06 20:28:35 +00:00
ORDER BY secteur_id ASC, ordre ASC, km ASC ;
ALTER TABLE phase_1_pk_auto OWNER to redadeg;
2019-01-01 19:52:23 +00:00
-- la même mais en 4326 pour export
DROP VIEW IF EXISTS phase_1_pk_auto_4326 ;
2019-01-01 19:52:23 +00:00
CREATE VIEW phase_1_pk_auto_4326 AS
SELECT
2019-03-06 20:28:35 +00:00
uid, secteur_id, ordre, km, km_reel,
ST_Transform(the_geom,4326)::geometry(Point, 4326) AS the_geom
2019-03-06 19:46:07 +00:00
FROM phase_1_pk_auto
2019-03-06 20:28:35 +00:00
ORDER BY secteur_id ASC, ordre ASC, km ASC ;
2019-01-13 16:11:59 +00:00
ALTER TABLE phase_1_pk_auto_4326 OWNER to redadeg;
2019-01-01 19:52:23 +00:00
2019-03-04 22:49:45 +00:00
-- vue tableau de bord de synthèse
2019-03-06 20:51:37 +00:00
DROP VIEW IF EXISTS phase_1_tdb ;
CREATE VIEW phase_1_tdb AS
2019-03-04 22:49:45 +00:00
SELECT
2019-03-06 20:51:37 +00:00
t.secteur_id, s.nom_br, s.nom_fr,
2019-03-06 21:13:14 +00:00
TRUNC( SUM(t.longueur)::numeric , 3) AS longueur_km,
ROUND( SUM(t.longueur)::numeric ) AS longueur_km_arrondi
2019-03-06 20:51:37 +00:00
FROM phase_1_trace t JOIN secteur s ON t.secteur_id = s.id
GROUP BY secteur_id, nom_br, nom_fr
2019-03-04 22:49:45 +00:00
ORDER BY secteur_id ;
ALTER TABLE phase_1_tdb OWNER to redadeg;
2019-03-04 22:49:45 +00:00
2019-01-01 19:52:23 +00:00
2019-03-17 09:19:08 +00:00
/*
==========================================================================
phase 2 : calcul d'itinéraires en appui du réseau routier OSM
==========================================================================
*/
-- les couches PK venant de umap
DROP TABLE IF EXISTS phase_2_pk_secteur_3857 ;
CREATE TABLE phase_2_pk_secteur_3857
(
fake_column integer
);
ALTER TABLE phase_2_pk_secteur_3857 OWNER to redadeg;
DROP TABLE IF EXISTS phase_2_point_nettoyage_3857 ;
CREATE TABLE phase_2_point_nettoyage_3857
(
fake_column integer
);
ALTER TABLE phase_2_point_nettoyage_3857 OWNER to redadeg;
DROP TABLE IF EXISTS phase_2_pk_secteur CASCADE ;
CREATE TABLE phase_2_pk_secteur
(
id integer,
name text,
pgr_node_id integer,
2019-04-28 20:57:00 +00:00
secteur_id integer,
the_geom geometry(Point,2154),
CONSTRAINT phase_2_pk_secteur_pkey PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
2019-04-28 16:37:45 +00:00
ALTER TABLE phase_2_pk_secteur OWNER to redadeg;
2019-04-28 16:37:45 +00:00
-- une vue en 4326 pour export
DROP VIEW IF EXISTS phase_2_pk_secteur_4326 CASCADE ;
2019-04-28 16:37:45 +00:00
CREATE VIEW phase_2_pk_secteur_4326 AS
SELECT
pk.id, pk.name, s.id AS secteur_id, replace(s.nom_fr,' ','') AS nom_fr, replace(s.nom_br,' ','') AS nom_br,
2019-04-28 16:37:45 +00:00
ST_Transform(pk.the_geom,4326)::geometry(Point, 4326) AS the_geom
FROM phase_2_pk_secteur pk JOIN secteur s ON pk.id = s.id
ORDER BY pk.id ;
ALTER TABLE phase_2_pk_secteur_4326 OWNER to redadeg;
2019-03-17 09:19:08 +00:00
2020-02-15 14:41:43 +00:00
-- les polygones des communes source OSM France
DROP TABLE IF EXISTS osm_communes CASCADE ;
2019-09-14 16:12:41 +00:00
CREATE TABLE osm_communes
(
gid serial,
insee character varying(80),
nom character varying(80),
wikipedia character varying(80),
surf_ha numeric,
the_geom geometry,
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POLYGON'::text OR geometrytype(the_geom) = 'MULTIPOLYGON'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154),
CONSTRAINT osm_communes_pkey PRIMARY KEY (gid)
);
CREATE INDEX osm_communes_geom_idx ON osm_communes USING gist(the_geom);
ALTER TABLE osm_communes OWNER to redadeg;
2020-02-15 14:41:43 +00:00
-- la couche avec les info langue minoritaire
DROP TABLE IF EXISTS osm_municipalities CASCADE ;
CREATE TABLE osm_municipalities
(
id serial,
osm_id bigint,
type text,
admin_level text,
name text,
name_fr text,
name_br text,
source_name_br text,
admincode text,
postcode text,
wikidata text,
surf_ha numeric,
x numeric,
y numeric,
the_geom geometry,
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POLYGON'::text OR geometrytype(the_geom) = 'MULTIPOLYGON'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154),
CONSTRAINT osm_municipalities_pkey PRIMARY KEY (id)
);
CREATE INDEX osm_municipalities_geom_idx ON osm_municipalities USING gist(the_geom);
CREATE INDEX osm_municipalities_admincode_idx ON osm_municipalities(admincode);
ALTER TABLE osm_municipalities OWNER to redadeg;
2019-09-14 16:12:41 +00:00
2019-05-08 14:39:51 +00:00
-- la couche qui contient les lignes des routes venant de OSM
DROP TABLE IF EXISTS osm_roads CASCADE ;
2019-03-17 09:19:08 +00:00
CREATE TABLE osm_roads
(
2019-05-15 15:11:03 +00:00
uid bigint NOT NULL,
2019-03-17 09:19:08 +00:00
osm_id bigint,
highway text,
type text,
oneway text,
ref text,
name_fr text,
name_br text,
the_geom geometry,
2019-05-15 15:11:03 +00:00
CONSTRAINT osm_roads_pkey PRIMARY KEY (uid),
2019-03-17 09:19:08 +00:00
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
2019-09-14 16:12:41 +00:00
CREATE INDEX osm_roads_geom_idx ON osm_roads USING gist(the_geom);
2019-05-08 14:39:51 +00:00
ALTER TABLE osm_roads OWNER to redadeg;
2019-03-17 09:19:08 +00:00
2019-05-08 14:39:51 +00:00
-- la couche en version routable
DROP TABLE IF EXISTS osm_roads_pgr CASCADE ;
2019-03-17 18:07:55 +00:00
CREATE TABLE osm_roads_pgr
(
id bigint,
osm_id bigint,
highway text,
type text,
oneway text,
ref text,
name_fr text,
name_br text,
source bigint,
target bigint,
2019-03-28 17:53:10 +00:00
cost double precision,
reverse_cost double precision,
2019-03-17 18:07:55 +00:00
the_geom geometry,
CONSTRAINT osm_roads_pgr_pkey PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
CREATE INDEX osm_roads_pgr_source_idx ON osm_roads_pgr (source);
CREATE INDEX osm_roads_pgr_target_idx ON osm_roads_pgr (target);
2019-05-08 14:39:51 +00:00
ALTER TABLE osm_roads_pgr OWNER to redadeg;
2019-03-17 18:07:55 +00:00
2019-05-08 14:39:51 +00:00
-- la couche des points pour nettoyer la couche de routage
DROP TABLE IF EXISTS phase_2_point_nettoyage CASCADE ;
2019-05-08 14:39:51 +00:00
CREATE TABLE phase_2_point_nettoyage
(
id serial,
pt_id bigint,
edge_id bigint,
distance numeric,
the_geom geometry,
CONSTRAINT phase_2_point_nettoyage_pkey PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE phase_2_point_nettoyage OWNER to redadeg;
2019-03-17 18:07:55 +00:00
2019-05-19 09:23:00 +00:00
-- couche de polygones pour supprimer le contenu de osm_roads_pgr pour la gestion des boucles
DROP TABLE IF EXISTS osm_roads_pgr_patch_mask CASCADE ;
CREATE TABLE osm_roads_pgr_patch_mask
2019-05-19 09:23:00 +00:00
(
id serial,
name text,
the_geom geometry,
CONSTRAINT osm_roads_pgr_patch_mask_pkid PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POLYGON'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE osm_roads_pgr_patch_mask OWNER to redadeg;
2019-03-17 18:07:55 +00:00
2019-05-19 09:23:00 +00:00
-- couche jumelle de osm_roads mais avec des lignes gérées à la main pour les boucles
DROP TABLE IF EXISTS osm_roads_pgr_patch CASCADE ;
2019-05-19 09:23:00 +00:00
CREATE TABLE osm_roads_pgr_patch
(
id serial,
osm_id bigint,
highway text,
type text,
oneway text,
ref text,
name_fr text,
name_br text,
source bigint,
target bigint,
cost double precision,
reverse_cost double precision,
the_geom geometry,
CONSTRAINT osm_roads_pgr_patch_pkey PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE osm_roads_pgr_patch OWNER to redadeg;
2020-02-18 18:17:47 +00:00
-- la séquence doit commencer à un chiffre supérieur à 1 car sinon ça fiche la pagaille sur le calcul de routage
ALTER SEQUENCE osm_roads_pgr_patch_id_seq START WITH 1000 ;
2019-03-17 18:07:55 +00:00
2019-03-17 09:19:08 +00:00
2019-04-07 09:12:51 +00:00
-- la table qui va recevoir le résultat du calcul d'itinéraire
DROP TABLE IF EXISTS phase_2_trace_pgr CASCADE ;
2019-04-07 09:12:51 +00:00
CREATE TABLE phase_2_trace_pgr
(
2019-04-28 14:05:22 +00:00
secteur_id integer,
2019-04-07 09:12:51 +00:00
-- info de routage
path_seq bigint,
node bigint,
cost double precision,
agg_cost double precision,
-- info OSM
osm_id bigint,
highway text,
type text,
oneway text,
ref text,
name_fr text,
name_br text,
the_geom geometry,
2019-05-01 10:23:26 +00:00
--CONSTRAINT phase_2_trace_pkey PRIMARY KEY (secteur_id, path_seq),
2019-04-07 09:12:51 +00:00
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
2019-05-01 10:23:26 +00:00
ALTER TABLE phase_2_trace_pgr OWNER to redadeg;
2019-04-28 16:37:45 +00:00
-- une vue en 4326 pour export
DROP VIEW IF EXISTS phase_2_trace_pgr_4326 ;
CREATE VIEW phase_2_trace_pgr_4326 AS
SELECT
secteur_id,
path_seq, node, cost, agg_cost,
osm_id, highway, type, oneway, ref, name_fr, name_br,
ST_Transform(the_geom,4326)::geometry(LineString, 4326) AS the_geom
FROM phase_2_trace_pgr ;
ALTER TABLE phase_2_trace_pgr_4326 OWNER to redadeg;
2019-03-17 09:19:08 +00:00
2019-05-01 12:53:48 +00:00
-- couche qui contient 1 ligne par secteur
DROP TABLE IF EXISTS phase_2_trace_secteur CASCADE ;
CREATE TABLE phase_2_trace_secteur
(
secteur_id int,
nom_fr text,
nom_br text,
longueur int,
longueur_km numeric,
the_geom geometry,
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE phase_2_trace_secteur OWNER to redadeg;
-- une vue en 4326 pour export
DROP VIEW IF EXISTS phase_2_trace_secteur_4326 ;
CREATE VIEW phase_2_trace_secteur_4326 AS
SELECT
secteur_id, nom_fr, nom_br,
longueur, longueur_km,
ST_Transform(the_geom,4326)::geometry(MultiLineString, 4326) AS the_geom
FROM phase_2_trace_secteur ;
ALTER TABLE phase_2_trace_secteur_4326 OWNER to redadeg;
2019-09-14 16:12:41 +00:00
-- ça sert à quoi ça ?
DROP TABLE IF EXISTS phase_2_trace_trous CASCADE ;
2019-05-04 08:25:26 +00:00
CREATE TABLE phase_2_trace_trous
(
id serial,
secteur_id int,
the_geom geometry,
CONSTRAINT phase_2_trace_trous_pkid PRIMARY KEY (id),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE phase_2_trace_trous OWNER to redadeg;
2019-05-01 12:53:48 +00:00
2019-03-17 09:19:08 +00:00
2019-10-13 12:30:09 +00:00
2019-04-07 09:12:51 +00:00
-- la table qui va contenir des tronçons de x m
DROP TABLE IF EXISTS phase_2_trace_troncons CASCADE ;
2019-04-07 09:12:51 +00:00
CREATE TABLE phase_2_trace_troncons
(
uid bigint,
secteur_id int,
ordre bigint,
km bigint,
km_reel bigint,
longueur integer,
-- info OSM
osm_id bigint,
highway text,
type text,
oneway text,
ref text,
name_fr text,
name_br text,
the_geom geometry,
CONSTRAINT phase_2_trace_troncons_pkey PRIMARY KEY (uid),
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE phase_2_trace_troncons OWNER to redadeg;
2019-03-17 09:19:08 +00:00
2019-05-01 20:49:35 +00:00
2019-05-04 08:35:48 +00:00
DROP VIEW IF EXISTS phase_2_tdb ;
2019-05-01 20:49:35 +00:00
CREATE VIEW phase_2_tdb AS
WITH total AS
(
SELECT
0 AS secteur_id, 'Total' AS nom_fr, 'Hollad' AS nom_br,
SUM(longueur_km) AS longueur_km
FROM public.phase_2_trace_secteur
GROUP BY 1
)
SELECT
a.secteur_id, a.nom_fr, a.nom_br,
a.longueur_km,
-- b.km_reels AS longueur_km_attendu, << vérifier si ça sert
-- -(b.km_reels - a.longueur_km) AS difference, << vérifier si ça sert
2019-05-01 20:49:35 +00:00
TRUNC(a.longueur_km / (SELECT longueur_km FROM total) * 2020, 0) AS nb_km_redadeg
--TRUNC((a.longueur_km / (SELECT longueur_km FROM total) * 2020) / b.km_reels, 3) AS longueur_km_redadeg
FROM phase_2_trace_secteur a JOIN secteur b ON a.secteur_id = b.id
UNION
SELECT
0 AS secteur_id, 'Total' AS nom_fr, 'Hollad' AS nom_br,
SUM(longueur_km) AS longueur_km,
0
-- 0,0,0
2019-05-01 20:49:35 +00:00
FROM public.phase_2_trace_secteur
GROUP BY 1
ORDER BY secteur_id ASC ;
2019-05-04 08:30:55 +00:00
ALTER TABLE phase_2_tdb OWNER TO redadeg;
2019-05-01 20:49:35 +00:00
2019-10-13 12:30:09 +00:00
/*
==========================================================================
phase 3 : calcul des PK auto
==========================================================================
*/
DROP TABLE IF EXISTS phase_3_trace_troncons CASCADE ;
2019-10-13 16:00:48 +00:00
CREATE TABLE phase_3_trace_troncons
(
troncon_id bigint,
secteur_id int,
the_geom geometry,
CONSTRAINT phase_3_trace_troncons_pkey PRIMARY KEY (troncon_id),
--CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
--CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE phase_3_trace_troncons OWNER TO redadeg;
2019-10-13 16:00:48 +00:00
-- la même couche en 4326
DROP VIEW IF EXISTS phase_3_trace_troncons_4326 ;
CREATE VIEW phase_3_trace_troncons_4326 AS
SELECT
troncon_id,
secteur_id,
ST_Transform(the_geom,4326)::geometry(LineString, 4326) AS the_geom
FROM phase_3_trace_troncons ;
ALTER TABLE phase_3_trace_troncons_4326 OWNER TO redadeg;
DROP TABLE IF EXISTS phase_3_trace_secteurs CASCADE ;
2019-10-13 16:00:48 +00:00
CREATE TABLE phase_3_trace_secteurs
(
secteur_id int,
nom_fr text,
nom_br text,
2019-10-28 11:03:29 +00:00
km_reels numeric(8,2),
2019-10-13 16:00:48 +00:00
the_geom geometry,
CONSTRAINT phase_3_trace_secteurs_pkey PRIMARY KEY (secteur_id),
--CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text OR geometrytype(the_geom) = 'MULTILINESTRING'::text),
--CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
);
ALTER TABLE phase_3_trace_secteurs OWNER TO redadeg;
-- la même couche en 4326
DROP VIEW IF EXISTS phase_3_trace_secteurs_4326 ;
CREATE VIEW phase_3_trace_secteurs_4326 AS
SELECT
secteur_id, nom_fr, nom_br,
km_reels,
ST_Transform(the_geom,4326)::geometry(LineString, 4326) AS the_geom
FROM phase_3_trace_secteurs ;
ALTER TABLE phase_3_trace_secteurs_4326 OWNER TO redadeg;
2019-10-13 12:30:09 +00:00
-- la couche des PK calculés automatiquement
DROP TABLE IF EXISTS phase_3_pk_auto CASCADE ;
2019-10-13 12:30:09 +00:00
CREATE TABLE phase_3_pk_auto
(
pk_id integer,
pk_x numeric(8,1),
pk_y numeric(8,1),
pk_long numeric(10,8),
pk_lat numeric(10,8),
length_real numeric(6,2),
length_theorical integer,
secteur_id integer,
municipality_admincode text,
municipality_postcode text,
municipality_name_fr text,
municipality_name_br text,
way_osm_id bigint,
way_highway text,
way_type text,
way_oneway text,
way_ref text,
way_name_fr text,
way_name_br text,
the_geom geometry,
CONSTRAINT phase_3_pk_auto_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)
) ;
ALTER TABLE phase_3_pk_auto OWNER TO redadeg;
-- la même couche en 4326
DROP VIEW IF EXISTS phase_3_pk_auto_4326 ;
CREATE VIEW phase_3_pk_auto_4326 AS
SELECT
pk_id,
pk_x, pk_y, pk_long, pk_lat,
length_real, length_theorical,
secteur_id,
municipality_admincode, municipality_postcode,
municipality_name_fr, municipality_name_br,
way_osm_id, way_highway, way_type, way_oneway, way_ref,
way_name_fr, way_name_br,
ST_Transform(the_geom,4326)::geometry(Point, 4326) AS the_geom
FROM phase_3_pk_auto ;
ALTER TABLE phase_3_pk_auto_4326 OWNER TO redadeg;
-- couche de lignes simples directes de PK à PK
DROP TABLE IF EXISTS phase_3_pk_sens_verif ;
CREATE TABLE phase_3_pk_sens_verif
(
secteur_id integer,
the_geom geometry,
CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'LINESTRING'::text),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 2154)
) ;
ALTER TABLE phase_3_pk_sens_verif OWNER TO redadeg;
-- la même couche en 4326
DROP VIEW IF EXISTS phase_3_pk_sens_verif_4326 ;
CREATE VIEW phase_3_pk_sens_verif_4326 AS
SELECT
secteur_id,
ST_Transform(the_geom,4326)::geometry(LineString, 4326) AS the_geom
FROM phase_3_pk_sens_verif ;
ALTER TABLE phase_3_pk_sens_verif_4326 OWNER TO redadeg;
2019-10-14 19:20:17 +00:00
/*
==========================================================================
phase 4 : création de la couche des PK à charger dans umap pour la phase 5
2019-10-13 12:30:09 +00:00
2019-10-14 19:20:17 +00:00
==========================================================================
*/
2019-10-13 12:30:09 +00:00
DROP VIEW IF EXISTS phase_4_pk_auto_4326 CASCADE ;
2019-10-14 19:20:17 +00:00
CREATE VIEW phase_4_pk_auto_4326 AS
SELECT
2019-10-14 19:23:12 +00:00
pk_id,
secteur_id,
2019-10-14 19:20:17 +00:00
ST_Transform(the_geom,4326)::geometry(Point, 4326) AS the_geom
FROM phase_3_pk_auto ;
ALTER TABLE phase_4_pk_auto_4326 OWNER TO redadeg;
2019-10-13 12:30:09 +00:00
2019-10-22 20:59:29 +00:00
/*
==========================================================================
phase 5 : gestion manuelle
==========================================================================
*/
-- la table des PK avant modifications manuelles = PK de référence = phase_3_pk_auto
DROP TABLE IF EXISTS phase_5_pk_ref CASCADE ;
2019-10-22 20:59:29 +00:00
CREATE TABLE phase_5_pk_ref
(
pk_id integer,
pk_x numeric(8,1),
pk_y numeric(8,1),
pk_long numeric(10,8),
pk_lat numeric(10,8),
length_real numeric(6,2),
length_theorical integer,
secteur_id integer,
municipality_admincode text,
municipality_postcode text,
municipality_name_fr text,
municipality_name_br text,
way_osm_id bigint,
way_highway text,
way_type text,
way_oneway text,
way_ref text,
way_name_fr text,
way_name_br text,
the_geom geometry,
CONSTRAINT phase_5_pk_ref_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)
2019-10-22 20:59:29 +00:00
) ;
ALTER TABLE phase_5_pk_ref OWNER TO redadeg;
-- on charge cette table avec les données finales de la phase 3
TRUNCATE TABLE phase_5_pk_ref ;
INSERT INTO phase_5_pk_ref SELECT * FROM phase_3_pk_auto ;
2019-10-22 20:59:29 +00:00
-- on définit manuellement la couche avec un type mixte parce qu'on a des lignes dans la couche de points…
DROP TABLE IF EXISTS phase_5_pk_umap_4326 CASCADE ;
CREATE TABLE phase_5_pk_umap_4326
(
ogc_fid integer,
pk_id integer,
secteur_id integer,
the_geom geometry,
--CONSTRAINT phase_5_pk_umap_pkey PRIMARY KEY (ogc_fid),
CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 4326)
);
ALTER TABLE phase_5_pk_umap_4326 OWNER TO redadeg;
-- la table en 2154 pour travailler
DROP TABLE IF EXISTS phase_5_pk_umap CASCADE ;
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)
);
ALTER TABLE phase_5_pk_umap OWNER TO redadeg;
-- la table finale
DROP TABLE IF EXISTS phase_5_pk CASCADE ;
CREATE TABLE phase_5_pk
(
pk_id integer,
pk_x numeric(8,1),
pk_y numeric(8,1),
pk_long numeric(10,8),
pk_lat numeric(10,8),
length_real numeric(6,2),
length_theorical integer,
secteur_id integer,
municipality_admincode text,
municipality_postcode text,
municipality_name_fr text,
municipality_name_br text,
way_osm_id bigint,
way_highway text,
way_type text,
way_oneway text,
way_ref text,
way_name_fr text,
way_name_br text,
the_geom geometry,
CONSTRAINT phase_5_pk_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)
) ;
ALTER TABLE phase_5_pk OWNER TO redadeg;
2019-10-22 20:59:29 +00:00