Message posté par : zack
----------------------------------------
Rebonjour,
Merci j'avais solutionné ce problème en faisant un setSRID sur le coalesce mais votre solution marche aussi.
Du coup la fonction marche, je conserve bien tous les polygones, et ils sont, d'apparence, bien découpés aux emplacements des lignes.
En revanche, j'ai toujours le même nombre de polygones que sur la couche initiale. Il me crée des polygones multi-part.
Je peux solutionner ça en éclatant ensuite mes polygones en single part mais peut-être y a t'il une solution sur le code d'origine.
Un grand merci !
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321542#p321542
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
----------------------------------------
Non je pense que le problème vient du second argument de la fonction coalesce.
Pour rappel coalesce renvoie son premier argument si il est different de NULL
et son second argument sinon.
Donc dans le cas ou aucune ligne n'intersecte avec une zone,
la requête va tenter de faire un split avec une linestring vide.
Hors votre zone est en EPSG:2154, alors que la linestring vide
n'a pas de SRID défini.
Pour remédier à cela, changer la chaine "LINESTRING EMPTY",
par "SRID=2151;LINESTRING EMPTY".
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321540#p321540
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 : zack
----------------------------------------
Bonjour,
Merci pour votre réponse. Je n'ai pas eu de notification Georezo donc je ne l'avais pas vu jusqu'à aujourd'hui... désolé...
J'ai donc testé votre code.
-----------------
Code :
DROP TABLE if exists blabla;
CREATE TABLE blabla AS
SELECT
st_collectionextract(
st_split(rect.geom,
coalesce((ST_CollectionHomogenize(st_collect(line.geom))),
'LINESTRING EMPTY'::geometry('LINESTRING'))),
3) AS geom
FROM
polygones_zone_test as rect
LEFT JOIN
public.lignes_zone_test as line
ON
st_intersects(rect.geom, line.geom)
GROUP BY
rect.geom
-----------------
J'ai ajouté des parenthèses dans la condition COALESCE puisque que le st_split avait trois conditions de géométrie ce qui ne lui plaisait pas, je ne sais pas si cette correction est bien juste mais il me semble que oui.
Il ne pose plus de problème sur le st_split, mais il me dit que le SRID n'est pas le même sur les deux couches (ERROR: ERREUR: Operation on mixed SRID geometries) alors que j'ai fait un st_srid et j'ai bien 2154 sur les deux couches... est-ce qu'une fonction préalable modifie le SRID?
Merci du temps consacré à me répondre !
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321538#p321538
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
----------------------------------------
Merci pour vos réponses,
J'ai contacter le site, ils me renvoient aux même page
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321520#p321520
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
----------------------------------------
Avez vous installer un des pilotes pour PostgreSQL ?
https://odbc.postgresql.org/
ou
https://www.pgoledb.com/
Apparemment, l'installation d'un des deux pilotes est requis.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321457#p321457
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
----------------------------------------
Dans votre requête principale, vous incluez le champ distance
dans votre clause SELECT.
Ca coince pour deux raisons :
1°
distance n'est pas inclus dans la clause SELECT de la sous-requête,
donc la requête principale doit vous indiquez que la colonne distance
n'existe pas dans l'expression sous_requête.
2° Votre requête principale comporte une clause GROUP BY.
Quand celle ci est présente, vous ne pouvez pas utiliser des
colonnes dans la clause SELECT autres que celles spécifiées
dans la clause GROUP BY, exception faite quand celles-ci est
utilisée dans une fonction d'agrégat (ici la fonction st_collect).
Vous avez aussi une erreur de syntaxe à la ligne 8, il manque une
virgule pour séparer vos deux expressions.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=321446#p321446
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
----------------------------------------
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