139 lines
3.5 KiB
MySQL
139 lines
3.5 KiB
MySQL
|
|
||
|
|
||
|
|
||
|
-- vue simple pour les longueurs directe en 3948
|
||
|
SELECT
|
||
|
ogc_fid, name, '' AS secteur,
|
||
|
TRUNC( ST_Length(the_geom)::numeric , 0) AS longueur_m,
|
||
|
TRUNC( (ST_Length(the_geom)/1000)::numeric , 3) AS longueur_km,
|
||
|
the_geom
|
||
|
FROM phase_1_trace_3948 ;
|
||
|
|
||
|
|
||
|
|
||
|
-- vue simple sur la couche en 3857
|
||
|
SELECT
|
||
|
ogc_fid, name, '' AS secteur,
|
||
|
TRUNC( ST_Length(ST_Transform(the_geom,3857))::numeric , 0) AS longueur_m,
|
||
|
TRUNC( (ST_Length(ST_Transform(the_geom,3857))/1000)::numeric , 3) AS longueur_km,
|
||
|
the_geom
|
||
|
FROM phase_1_trace ;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
-- crée une polyligne qui part de l'origine et qui fait 50 % de la longueur d'origine
|
||
|
DROP VIEW test_line ;
|
||
|
CREATE VIEW test_line AS
|
||
|
SELECT
|
||
|
ogc_fid,
|
||
|
ST_LineSubstring(the_geom, 0.0, 0.5)::geometry(Linestring,4326) AS the_geom,
|
||
|
TRUNC( ST_Length(ST_Transform(ST_LineSubstring(the_geom, 0.0, 0.5),3948))::numeric , 0) AS longueur_m
|
||
|
FROM phase_1_trace_3948
|
||
|
WHERE ogc_fid = 9 ;
|
||
|
|
||
|
-- et le point terminal
|
||
|
DROP VIEW test_point ;
|
||
|
CREATE VIEW test_point AS
|
||
|
SELECT
|
||
|
ogc_fid,
|
||
|
ST_Line_Interpolate_Point(the_geom, 0.5)::geometry(Point, 3948) AS the_geom
|
||
|
FROM phase_1_trace_3948
|
||
|
WHERE ogc_fid = 9 ;
|
||
|
|
||
|
|
||
|
|
||
|
-- sélection simple avec id, géométrie, longueur, nb de sections et coeff pour les fonctions
|
||
|
SELECT
|
||
|
ogc_fid,
|
||
|
TRUNC(ST_Length(the_geom)::numeric,0) AS longueur,
|
||
|
TRUNC((ST_Length(the_geom)/1000)::numeric,2) AS nb_sections,
|
||
|
1 / TRUNC((ST_Length(the_geom)/1000)::numeric,2)::numeric AS part,
|
||
|
ST_LineMerge(the_geom) AS the_geom
|
||
|
FROM phase_1_trace_3948
|
||
|
|
||
|
|
||
|
-- remplit une table avec l'extraction de
|
||
|
TRUNCATE phase_1_pk_auto ;
|
||
|
INSERT INTO phase_1_pk_auto
|
||
|
SELECT ogc_fid AS id, ((dp).geom)::geometry(Point,3948) AS the_geom
|
||
|
FROM
|
||
|
(
|
||
|
SELECT ogc_fid, ST_DumpPoints(ST_Segmentize(the_geom, 1000)) AS dp
|
||
|
FROM phase_1_trace_3948
|
||
|
) AS foo
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
-- cette vue crée des tronçons de 940 m à partir des longs tracés
|
||
|
DROP VIEW phase_1_trace_troncons_3948 ;
|
||
|
CREATE VIEW phase_1_trace_troncons_3948 AS
|
||
|
SELECT
|
||
|
row_number() over() as uid,
|
||
|
ogc_fid,
|
||
|
ST_LineSubstring(the_geom, 940.00*n/length,
|
||
|
CASE
|
||
|
WHEN 940.00*(n+1) < length THEN 940.00*(n+1)/length
|
||
|
ELSE 1
|
||
|
END) AS the_geom
|
||
|
FROM
|
||
|
(SELECT
|
||
|
ogc_fid,
|
||
|
ST_LineMerge(the_geom)::geometry(LineString,3948) AS the_geom,
|
||
|
ST_Length(the_geom) As length
|
||
|
FROM phase_1_trace_3948
|
||
|
) AS t
|
||
|
CROSS JOIN generate_series(0,10000) AS n
|
||
|
WHERE n*940.00/length < 1 ;
|
||
|
|
||
|
-- et le point terminal
|
||
|
DROP VIEW phase_1_pk_auto_3948 ;
|
||
|
CREATE VIEW phase_1_pk_auto_3948 AS
|
||
|
SELECT
|
||
|
uid,
|
||
|
ST_Line_Interpolate_Point(the_geom, 1)::geometry(Point, 3948) AS the_geom
|
||
|
FROM phase_1_trace_troncons_3948 ;
|
||
|
|
||
|
|
||
|
|
||
|
-- tableau de synthèse nb km par secteur
|
||
|
SELECT
|
||
|
secteur_id, secteur_nom_br, secteur_nom_fr,
|
||
|
SUM(longueur) AS longueur_m,
|
||
|
TRUNC( SUM(longueur)/1000::numeric , 3) AS longueur_km,
|
||
|
ROUND( SUM(longueur)/1000::numeric ) AS longueur_km_arrondi
|
||
|
FROM v_phase_1_trace_troncons_3948
|
||
|
GROUP BY secteur_id, secteur_nom_br, secteur_nom_fr
|
||
|
ORDER BY secteur_id ;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
SELECT
|
||
|
st_length(ST_Collect(the_geom)) AS longueur_m,
|
||
|
ROUND( st_length(ST_Collect(the_geom))::numeric/1000::numeric ) AS longueur_km,
|
||
|
ST_Collect(the_geom) AS the_geom
|
||
|
FROM phase_2_trace_pgr
|
||
|
|
||
|
|
||
|
TRUNC( a.cost::numeric , 0) AS longueur_m,
|
||
|
TRUNC( a.agg_cost::numeric , 0) AS longueur_cumul_m,
|
||
|
--TRUNC( a.cost::numeric/1000::numeric , 3) AS longueur_km,
|
||
|
TRUNC( a.agg_cost::numeric/1000::numeric , 3) AS longueur_cumul_km,
|
||
|
--ROUND( a.cost::numeric/1000::numeric ) AS longueur_km_arrondi,
|
||
|
ROUND( a.agg_cost::numeric/1000::numeric ) AS longueur_cumul_km_arrondi,
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|