Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 11 December 2013 15:25

diouckk
Juste Inscrit !
Date d'inscription: 30 Apr 2012
Messages: 5

Référencement dynamique Postgis

Bonjour
Je souhaite tracer des routes à partir de points en récupérant la distance dans un fichier csv
Voici les données:
1/-la liste des troncons ( id, pr_debut (ou on a l identifiant du point et sa distance ex 80+30) et pr_fin(pareil)) fichier csv
2/-  les points (id, pr( ex le 80 dans pr_debut),the_geom)
3/- la ligne (route, the_geom)

voici ma requête

Code:

CREATE OR REPLACE VIEW v_test_lgn AS 
 SELECT st_line_substring(rt.the_geom, st_line_locate_point(
        CASE
            WHEN geometrytype(rt.the_geom) = 'MULTILINESTRING'::text THEN geometryn(rt.the_geom, 1)
            ELSE rt.the_geom
        END, bor.the_geom), (length(rt.the_geom) * st_line_locate_point(
        CASE
            WHEN geometrytype(rt.the_geom) = 'MULTILINESTRING'::text THEN geometryn(rt.the_geom, 1)
            ELSE rt.the_geom
        END, bor.the_geom) + split_part(tr.pr_debut::text, '+'::text, 2)::double precision) / length(rt.the_geom)) AS geom_line, rt.gid + 1 AS objectid
   FROM liste_troncons tr, "BORNAGE_ROUTES_DIRO_2012" bor, route_diro_2012 rt
  WHERE tr.id_arthur::text = '8005'::text AND split_part(tr.pr_debut::text, '+'::text, 1) = bor."PR"::text AND st_intersects(rt.the_geom, bor.the_geom) AND rt.gid = 15
UNION 
 SELECT st_line_substring(rt.the_geom, st_line_locate_point(
        CASE
            WHEN geometrytype(rt.the_geom) = 'MULTILINESTRING'::text THEN geometryn(rt.the_geom, 1)
            ELSE rt.the_geom
        END, bor.the_geom), (length(rt.the_geom) * st_line_locate_point(
        CASE
            WHEN geometrytype(rt.the_geom) = 'MULTILINESTRING'::text THEN geometryn(rt.the_geom, 1)
            ELSE rt.the_geom
        END, bor.the_geom) + split_part(tr.pr_fin::text, '+'::text, 2)::double precision) / length(rt.the_geom)) AS geom_line, rt.gid AS objectid
   FROM liste_troncons tr, "BORNAGE_ROUTES_DIRO_2012" bor, route_diro_2012 rt
  WHERE tr.id_arthur::text = '8005'::text AND split_part(tr.pr_fin::text, '+'::text, 1) = bor."PR"::text AND st_intersects(rt.the_geom, bor.the_geom) AND rt.gid = 15;

ALTER TABLE v_test_lgn
  OWNER TO geotravaux;
GRANT ALL ON TABLE v_test_lgn TO geotravaux;
GRANT SELECT ON TABLE v_test_lgn TO sde;

Par exemple pour la route N136, je trace une ligne allant A' vers B' voir fichier avec comme debut le point A + 20m (A') et sa fin B+30m(B')

Au lieu de ça il me trace le début de la ligne à partir du point A' plus la distance à partir du fin de la ligne au point B' en ne prenant pas en compte la distance entre ces deux derniers points


Sivous avez deja fait rencontrer de probleme, toutes solutions seront les bienvenues

Dernière modification par diouckk (Thu 12 December 2013 11:19)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#2 Wed 11 December 2013 16:21

Fritsch
Participant occasionnel
Lieu: Paris
Date d'inscription: 8 Nov 2006
Messages: 32

Re: Référencement dynamique Postgis

Difficilement compréhensible.

Peux-tu nous mettre les CREATE TABLE ?

Hors ligne

 

#3 Thu 12 December 2013 11:19

diouckk
Juste Inscrit !
Date d'inscription: 30 Apr 2012
Messages: 5

Re: Référencement dynamique Postgis

voici les tables

Code:

Pour les points
-- Table: "BORNAGE_ROUTES_DIRO_2012"

-- DROP TABLE "BORNAGE_ROUTES_DIRO_2012";

CREATE TABLE "BORNAGE_ROUTES_DIRO_2012"
(
  gid serial NOT NULL,
  "ROUTE" character varying(11),
  "LIB_RTE" character varying(6),
  "PR" double precision,
  "INTER_PR" double precision,
  the_geom geometry,
  lat text,
  lng text,
  CONSTRAINT "BORNAGE_ROUTES_DIRO_2012_pkey" PRIMARY KEY (gid),
  CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
  CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
  CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 3948)
)
WITH (OIDS=FALSE);
ALTER TABLE "BORNAGE_ROUTES_DIRO_2012" OWNER TO geotravaux;

Les distances

Code:

-- Table: liste_troncons

-- DROP TABLE liste_troncons;

CREATE TABLE liste_troncons
(
  id_arthur character varying, -- identifiant arthur
  route character varying(50),
  pr character varying(50),
  pr_debut character varying(50),
  pr_fin character varying(50),
  longueur character varying(50),
  st_comptage character varying(50),
  v_max character varying(50),
  tps_parcours character varying(50)
)
WITH (OIDS=TRUE)
TABLESPACE pg_default;
ALTER TABLE liste_troncons OWNER TO geotravaux;
GRANT ALL ON TABLE liste_troncons TO geotravaux;
GRANT SELECT ON TABLE liste_troncons TO intranet;
COMMENT ON COLUMN liste_troncons.id_arthur IS 'identifiant arthur';

et la routesur laquelle  je dois retracer une ligne a partir des tables   liste des troncons  et bornage diro 

Code:

-- Table: route_diro_2012

-- DROP TABLE route_diro_2012;

CREATE TABLE route_diro_2012
(
  gid serial NOT NULL,
  "ROUTE" character varying(11),
  "LIB_RTE" character varying(8),
  "DISTRICT" character varying(12),
  "CEI" character varying(22),
  "CIGT" character varying(20),
  "POINT_SERV" character varying(20),
  "PRD" integer,
  "ABD" integer,
  "PRF" integer,
  "ABF" integer,
  "Longueur_V" integer,
  "Chaussée" character varying(5),
  "Profil_tra" character varying(20),
  the_geom geometry,
  CONSTRAINT route_diro_2012_pkey PRIMARY KEY (gid),
  CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
  CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 3948)
)
WITH (OIDS=FALSE);
ALTER TABLE route_diro_2012 OWNER TO geotravaux;
GRANT ALL ON TABLE route_diro_2012 TO geotravaux;
GRANT SELECT ON TABLE route_diro_2012 TO sde;

L'objectif etant de recuperer le debut et la fin d'une route dans la table liste tronconset sa géometrie à partir de la table bornage diropour creer une ligne

Dernière modification par diouckk (Thu 12 December 2013 11:22)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB