129 lines
3.7 KiB
MySQL
129 lines
3.7 KiB
MySQL
|
|
||
|
|
||
|
WITH ref AS (
|
||
|
SELECT COUNT(pk_id) as ref FROM phase_5_pk_ref
|
||
|
WHERE (secteur_id >= 10 and secteur_id < 20)
|
||
|
),
|
||
|
umap AS (
|
||
|
SELECT COUNT(pk_id) as umap FROM phase_5_pk_umap
|
||
|
WHERE (secteur_id >= 10 and secteur_id < 20)
|
||
|
)
|
||
|
SELECT
|
||
|
*,
|
||
|
CASE
|
||
|
WHEN ref.ref < umap.umap THEN 'plus'
|
||
|
WHEN ref.ref > umap.umap THEN 'moins'
|
||
|
WHEN ref.ref = umap.umap THEN 'égalité'
|
||
|
ELSE 'problème'
|
||
|
END AS test
|
||
|
FROM ref, umap
|
||
|
|
||
|
|
||
|
-- test de géométrie import umap
|
||
|
SELECT secteur_id, pk_id, ST_geometrytype(the_geom) FROM phase_5_pk_umap
|
||
|
WHERE ST_geometrytype(the_geom) <> 'ST_Point' OR secteur_id IS NULL OR pk_id IS NULL ;
|
||
|
|
||
|
|
||
|
|
||
|
-- test de distance PK ref -> pk umap
|
||
|
SELECT
|
||
|
--COUNT(*)
|
||
|
r.pk_id,
|
||
|
r.secteur_id,
|
||
|
TRUNC(ST_Distance(ST_Transform(r.the_geom,2154), ST_Transform(u.the_geom,2154))::numeric,2) as distance
|
||
|
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
|
||
|
--ORDER BY r.secteur_id, r.pk_id
|
||
|
ORDER BY TRUNC(ST_Distance(ST_Transform(r.the_geom,2154), ST_Transform(u.the_geom,2154))::numeric,2) desc
|
||
|
|
||
|
|
||
|
WITH liste_pk_decales AS (
|
||
|
SELECT
|
||
|
r.pk_id,
|
||
|
r.secteur_id,
|
||
|
TRUNC(ST_Distance(ST_Transform(r.the_geom,2154), ST_Transform(u.the_geom,2154))::numeric,2) as distance
|
||
|
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
|
||
|
)
|
||
|
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 '3' as tri, '> 100' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance >= 100 AND distance < 500)
|
||
|
UNION SELECT '4' as tri, '> 10' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance >= 10 AND distance < 100)
|
||
|
UNION SELECT '5' as tri, '< 10' as distance, COUNT(*) FROM liste_pk_decales WHERE (distance < 10)
|
||
|
ORDER BY tri ;
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
-- ligne entre les PK recalés et les PK références
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
-- recalage des PK umap sur le trace
|
||
|
WITH
|
||
|
pk_decales AS (
|
||
|
SELECT
|
||
|
r.pk_id,
|
||
|
r.secteur_id,
|
||
|
TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) as distance,
|
||
|
u.the_geom
|
||
|
FROM phase_5_pk_ref r FULL JOIN phase_5_pk_umap u ON r.pk_id = u.pk_id
|
||
|
WHERE TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) > 1
|
||
|
AND r.secteur_id = 20
|
||
|
),
|
||
|
buffer_troncons AS (
|
||
|
SELECT troncon_id, ST_BUFFER(the_geom, 5) as the_geom
|
||
|
FROM phase_3_trace_troncons
|
||
|
WHERE secteur_id = 20
|
||
|
)
|
||
|
|
||
|
SELECT
|
||
|
pk.pk_id, pk.the_geom,
|
||
|
ST_Distance(pk.the_geom, ST_ClosestPoint(trace.the_geom, pk.the_geom)) AS distance,
|
||
|
ST_Snap(
|
||
|
pk.the_geom, -- le point d'origine à recaler
|
||
|
ST_ClosestPoint(trace.the_geom, pk.the_geom), -- le point le plus près dans la couche de nœuds
|
||
|
ST_Distance(pk.the_geom, ST_ClosestPoint(trace.the_geom, pk.the_geom))* 1.01 -- dans la distance de ce plus proche point
|
||
|
) AS the_geom
|
||
|
FROM pk_decales pk, phase_3_trace_troncons trace, buffer_troncons
|
||
|
WHERE ST_INTERSECTS(pk.the_geom, buffer_troncons.the_geom)
|
||
|
AND trace.secteur_id = 20
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
WITH
|
||
|
pk_decales AS (
|
||
|
SELECT
|
||
|
r.pk_id,
|
||
|
r.secteur_id,
|
||
|
TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) as distance_pk_ref,
|
||
|
u.the_geom
|
||
|
FROM phase_5_pk_ref r FULL JOIN phase_5_pk_umap u ON r.pk_id = u.pk_id
|
||
|
WHERE TRUNC(ST_Distance(r.the_geom, u.the_geom)::numeric,2) > 1
|
||
|
),
|
||
|
trace AS (
|
||
|
SELECT
|
||
|
troncon_id,
|
||
|
ST_LineMerge(the_geom) AS the_geom
|
||
|
FROM phase_3_trace_troncons
|
||
|
WHERE secteur_id = 60
|
||
|
)
|
||
|
-- il faut qu'on commence par limiter au tronçon le plus près du PK
|
||
|
SELECT
|
||
|
pk.pk_id,
|
||
|
pk.the_geom AS pk_point,
|
||
|
trace.the_geom AS trace,
|
||
|
|
||
|
FROM pk_decales pk, trace
|
||
|
WHERE ST_INTERSECTS(trace.the_geom, ST_BUFFER(pk.the_geom,2) )
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|