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é ?

#1 Tue 29 August 2017 14:20

hotegbe
Participant occasionnel
Date d'inscription: 28 Jun 2017
Messages: 32

requête postgis

Bonjour je sollicite votre aide n'ayant pas trouvé de réponse à mon problème


Je dispose de la requête suivante

Code:

select shape_len,fatou.cable.id,
(select  code_ch1 from fatou.chambre n where st_within(st_startpoint(p.geom), st_buffer(n.geom, 1))),
(select  code_ch1 from fatou.chambre n where st_within(st_endpoint(p.geom), st_buffer(n.geom, 1)))
from fatou.arciti p,fatou.cable
 
 
where
ST_relate(fatou.cable.geom,p.geom,'T********')
 
;

elle fonctionne très bien et me premet d'afficher des longueurs le long d'un segment sauf que j'obtiens un résultat dans le désordre comment puis je obtenir une sortie qui respecte ma ligne jaune comme tracé dans l'mage joint à ce post?
Je précide que mes points et lignes sont topologiquement corrects

Merci d'avance de votre aide
Cordialement


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

Hors ligne

 

#2 Wed 30 August 2017 09:42

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1149

Re: requête postgis

Salut,

je pense que quelque chose comme çà fonctionnerait :

Code:

SELECT st_astext(points.geom), st_astext(segments.geom), id, idp
FROM
    (SELECT 'POINT(4 4)'::geometry geom 
     UNION 
     SELECT 'POINT(0 0)'::geometry
     UNION
     SELECT 'POINT(0.5 0.5)'::geometry
     UNION
     SELECT 'POINT(0 1)'::geometry
     ) as points
JOIN 
    (SELECT 
    st_makeline((lag(a) OVER W).geom, (a).geom) geom , (a).path[1] idp, id
    FROM
        (SELECT st_dumppoints(lines.g) a, id 
        FROM (SELECT 1 id, 'LINESTRING(0 0, 1 1, 2 2, 3 3, 4 4)'::geometry g
              UNION
              SELECT 2 id, 'LINESTRING(0 1, 0 2, 0 3, 0 4, 4 4)'::geometry g
            ) as lines
        ) as t
    WINDOW W AS (PARTITION BY id ORDER BY (a).path)
    ) as segments
ON st_intersects(points.geom, segments.geom)
ORDER BY id, idp, ST_LineLocatePoint(segments.geom, points.geom)

Dernière modification par tumasgiu (Wed 30 August 2017 16:44)

Hors ligne

 

#3 Thu 15 July 2021 11:43

freedfall
Juste Inscrit !
Date d'inscription: 15 Jul 2021
Messages: 1

Re: requête postgis

Bonjour à tous,
Je débute en SQL et je butte sur le problème suivant:
J'ai à disposition une table (t1) contenant des objets ayant un point de début (t1.fk_pt_debut) et un point de fin (t1.fk_pt_fin) ainsi qu'une géométrie point (t1_geom)
les géométries des points de début et de fin (t2_geom) se trouvent dans une autre table (t2)
Je souhaiterais effectuer un UPDATE de la géométrie de la table t1 avec une moyenne des points de début et de fin.
J'effectue donc la requête suivante:

UPDATE t1
SET t1.geom = (
SELECT st_centroid(st_union
(
(SELECT t2.geom FROM t2
JOIN t1 ON t2.id = t1.fk_pt_debut
WHERE t1.id = '1')
,
(SELECT t2_geom FROM t2
JOIN t1 ON t2.id = t1.fk_pt_fin
WHERE t1.id = '1')
)
)
)
WHERE t1.id = '1'

cette requête fonctionne pour un objet.
la table t1 disposant de beaucoup d'objet, je souhaite effectuer cette requête sur toute la table, c'est la que je rencontre mon problème: comment affecter cette requête à toute la table?
Merci d'avance pour vos réponses ou vos pistes de réponses
Excellente journée à vous

Hors ligne

 

Pied de page des forums

Powered by FluxBB