Message posté par : Julien Gondellon
----------------------------------------
Bonjour,
Et merci pour ces récents retour. J'ai un problème avec cette ligne de code. Elle me donne du fil à retordre.
Pour rappel, j'ai :
- un shape de tronçon :
¤ Champ 1 : idtroncon
- et un csv de point :
¤ Champ 1 : IDTroncon (commun avec le shape),
¤ Champ 2 : distance
¤ Champ 2 : du texte.
Et voici notre ligne de code :
-----------------
Code :
Create table resultat as (
select
idtroncon,
distance p,
st_collect(pointanomalie) AS multi_points
FROM(
SELECT
t.idtroncon
ST_LineInterpolatePoint (geom,(p.distance / st_Length(geom))) AS pointanomalie
FROM
troncon AS t
JOIN
pointanomalie AS p
ON
t.idtroncon = p.idtroncon
) AS sous_requete
GROUP BY
idtroncon)
;
-----------------
Mais ca ne marche pas.
Quelqu'un à une réponse. Je pense que c'est dans la dénomination des couches ou données.
Merci de votre retour
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321440#p321440
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : T. Rossini
----------------------------------------
Oui j'avais bien compris,
je crois que j'ai oublié une condition dans la jointure entre t et f :)
-----------------
Code :
WITH f as (
--array_agg est une fonction d'agrégat qui
--génére un tableau de l'ensemble donné en argument
SELECT
event_id,
array_agg(trac_id ORDER BY trac_id) bounds
FROM
t
--on ne veut recuperer que le premier et le dernier
--trac_id de chaque event
WHERE
event_id <> 0
GROUP BY
event_id
--On ne veut que des tableaux ayant deux élements
HAVING
COUNT(*) = 2
)
SELECT
st_makeline(
st_makepoint(gps_lat_start, gps_long_start)
ORDER BY trac_id) line
FROM
f
JOIN
t
ON t.event_id = f.event_id
AND t.trac_id BETWEEN bounds[1] AND bounds[2]
GROUP BY
event_id
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321291#p321291
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : preliator
----------------------------------------
Bonjour à tous,
Je souhaite m'autoformer sur PostGre, et j'aimerais savoir si vous avez des formations (gratuites) à me conseiller.
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321264#p321264
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : aknleo (aknleo(a)yahoo.fr)
----------------------------------------
Bonjour,
Je suis à la recherche d'un exemple ou syntaxe de fichier .ttkls permettant de visualiser un fichier postgis à partir du viewer tatukGis.
Merci d'avance.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321261#p321261
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : T. Rossini
----------------------------------------
-----------------
Citation :
1. Qu'elle serait la formule si je fais la même chose en partant de l'origine ? Est-ce que c'est ça : T_LineInterpolatePoint(geom, (d / st_Length(geom))
-----------------
Oui.
-----------------
Citation :
2. Comment faire si je veux créer plusieurs points sur cette même ligne à partir de cette fonction ?
-----------------
Si vous voulez interpoler plusieurs points avec la même distance entre eux :
https://postgis.net/docs/ST_LineInterpolatePoints.html
Si vous voulez avoir plusieurs champs représentant plusieurs points, vous pouvez juste répéter l'appel à la fonction.
Si vous voulez créer un multipoint, vous utilisez une fonction telle que st_collect ou st_union,
qui possèdent toutes deux une définition ayant comme un argument un tableau de geometries :
-----------------
Code :
St_Collect(ARRAY[ST_LineInterpolatePoint(geom, 1 - (d / st_Length(geom)), ST_LineInterpolatePoint(geom, 1 - (e / st_Length(geom)), ...])
-----------------
-----------------
Citation :
3. Comment faire avec cette fonction, dans le cas où j'ai plusieurs tronçons, et que mes points ne sont associés qu'à certains tronçons. Je présume que ma base de données qui correspondra à mes points doit contenir le numéro du tronçon et la distance. Et comment lui signifier dans la fonction
-----------------
Il faut joindre vos deux tables pour créer l'ensemble des points dans une sous requête
puis utiliser la version agrégat de st_collect pour collecter tout les points par tronçon.
Avec un schema comme suit :
-----------------
Code :
CREATE TABLE tronçon(numero_tronçon int, geom geometry);
CREATE TABLE point(distance d double, numero_tronçon int);
-----------------
La requête
-----------------
Citation :
SELECT
numero_tronçon,
st_collect(the_point) AS multi_points
FROM(
SELECT
t.numero_tronçon,
ST_LineInterpolatePoint(geom, 1 - (d / st_Length(geom)) AS the_point
FROM
tronçon AS t
JOIN
point AS p
ON
t.numero_tronçon = p.numero_tronçon
) AS sous_requete
GROUP BY
numero_tronçon
;
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321255#p321255
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Julien Gondellon
----------------------------------------
Merci pour le retour.
Je connaissais le lien que tu m'as transmis.
Trois dernières questions :
1. Qu'elle serait la formule si je fais la même chose en partant de l'origine ? Est-ce que c'est ça : T_LineInterpolatePoint(geom, (d / st_Length(geom))
2. Comment faire si je veux créer plusieurs points sur cette même ligne à partir de cette fonction ?
3. Comment faire avec cette fonction, dans le cas où j'ai plusieurs tronçons, et que mes points ne sont associés qu'à certains tronçons. Je présume que ma base de données qui correspondra à mes points doit contenir le numéro du tronçon et la distance. Et comment lui signifier dans la fonction
(Je pense que je ne suis pas du tout clair sur le troisième point.
Merci du retour.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321242#p321242
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : T. Rossini
----------------------------------------
Salut,
apparemment c'est un bug qui a été corrigé dans la version 2.4.3
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321182#p321182
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net
Message posté par : Christophe
----------------------------------------
Bonjour,
Si l'extrémité est le dernier sommet de la polyligne (par opposition au premier, l'origine), et d la distance, la syntaxe serait :
-----------------
Code :
ST_LineInterpolatePoint(geom, 1 - (d / st_Length(geom))
-----------------
Plus de détails :
http://postgis.net/docs/ST_LineInterpolatePoint.html
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321142#p321142
Pour y répondre : geobd(a)ml.georezo.net ou reply de votre messagerie
Pour vous désabonner connectez-vous sur le forum puis Profil / Abonnement
--
Association GeoRezo - le portail géomatique
https://georezo.net