Message posté par : felixdm (felix.et.cecile(a)free.fr)
----------------------------------------
Bonjour à tous,
Je cherche à faire de la topologie en base.
Après avoir corrigé la topologie de mon réseau (multilinestring), je souhaiterais maintenant mettre en place des règles qui me permette la mise à jour automatique de mon réseau de lignes lors du déplacement d'un ouvrage ponctuel.
la requète suivante ne fonctionne pas :
-----------------
Citation :
UPDATE ma_table_multiligne
SET st_endpoint(st_linemerge(geom))
=
select geom from ma_table_point
where id=...
-----------------
Renvoie une erreur de syntaxe à la première parenthèse.
Merci pour votre aide et meilleurs voeux.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=371155#p371155
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 : Andasolo (josedelcarmenchocoj(a)yahoo.es)
----------------------------------------
Bonjour,
je souhaite insérer des données depuis une table "cana" (couche SIG contenant les collecteurs du réseau d'assainissement, que j'utilise avec QGIS et Lizmap) vers une table "anomalies" sans géométrie, le tout en utilisant PostgreSQL v17. pour cela j'ai créée cette fonction:
-----------------
Code :
CREATE OR REPLACE FUNCTION f_anomalie_cana()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
INSERT INTO
anomalies(id_objet,type_objet,type_anomalie,date,heure,anomalie)
select tt.objectid,
(select
t.table_name
from information_schema.tables t
inner join information_schema.columns c on c.table_name = t.table_name and c.table_schema = t.table_schema
where c.column_name = 'anomalie' and t.table_name ='cana'),
case
when tt.anomalie=1 then 'effondrement'
when tt.anomalie=2 then 'racines'
when tt.anomalie=3 then 'fissures'
when tt.anomalie=6 then 'réparée'
when tt.anomalie=7 then 'déplacements d''assemblage'
when tt.anomalie=8 then 'depot'
when tt.anomalie=9 then 'sable'
when tt.anomalie=10 then 'eau stagnante'
when tt.anomalie=11 then 'perforation'
when tt.anomalie=12 then 'eau claire parasite'
when tt.anomalie=17 then 'poinconnement'
when tt.anomalie=18 then 'curage'
else null
end,
current_date,
current_time,
tt.anomalie
from cana tt where tt.anomalie = new.anomalie;
RETURN new;
END;
$BODY$;
et le trigger:
CREATE OR REPLACE TRIGGER trg_anomalie_cana
AFTER INSERT OR UPDATE
ON cana
FOR EACH ROW
EXECUTE FUNCTION f_anomalie_cana();
-----------------
mon problème survient au moment d’insérer des valeurs dans la table "anomalies", puisque la fonction me duplique des valeurs déjà existantes:
objectid,type_objet,id_objet,anomalie,type_anomalie,update_origine,heure,date
51,cana,15382,2,racines,sigadmin,15:32:33.874172+01,2025/01/24
52,cana,31982,2,racines,sigadmin,15:32:33.874172+01,2025/01/24
53,cana,15382,1,effondrement,sigadmin,16:00:10.671524+01,2025/01/24
54,cana,15382,1,effondrement,sigadmin,16:00:22.865349+01,2025/01/24
55,cana,31982,1,effondrement,sigadmin,16:00:22.865349+01,2025/01/24
56,cana,15386,2,racines,sigadmin,"08:53:38.306502+01",2025/01/27
57,cana,15387,2,racines,sigadmin,"08:53:59.924655+01",2025/01/27
58,cana,15386,2,racines,sigadmin,"08:53:59.924655+01",2025/01/27
en vous remerciant par avance de toute votre aide possible (-:
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=371402#p371402
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 : Nicolas Ribot
----------------------------------------
Bonjour,
Je vous conseille plutot de passer par un fichier pgpass pour stocker les mdp de postgresql: https://www.postgresql.org/docs/17/libpq-pgpass.html
Plus sûr, plus facile à gérer.
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=371326#p371326
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 : felixdm
----------------------------------------
Bonjour,
Pour continuer dans ma démarche topologique, je souhaiterais maintenant segmenter une lineString en ajoutant un noeud en fonction de la position d'un point.
ST_Segmentize permet de segmenter une ligne, mais pour des segments qui mesure plus d'une certaine longueur. Hors j'ai besoin que le noeud se créé à un endroit bien défini par la position du point.
Je pense qu'il faudrait passer par :
ST_LineLocatePoint
et
ST_LineInterpolatePoint.
Si vous avez des idées je suis preneur.
Bonne journée à tous
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=371193#p371193
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 : image95
----------------------------------------
Bonjour,
Je travailler avec postgresql 14.
J'ai une table 'metadata' avec 2000 enregistrements. Au sein de cette table, il y a notamment un champ 'id' et un champ 'data_c' contenant du XML.
Mon but serait de pouvoir extraire pour tous les enregistrements les valeurs du champ 'data_c' que j'ai mis volontairement en gras ci dessous. Je souhaite donc récupérer les valeurs du 'cit:name' :
-----------------
Code :
<mri:pointOfContact>
<cit:CI_Responsibility>
<cit:role>
<cit:CI_RoleCode codeList="http://standards.iso.org/iso/19115/resources/Codelists/cat/codelists.xml#CI…" codeListValue="owner" />
</cit:role>
<cit:party>
<cit:CI_Organisation>
<cit:name>
<gco:CharacterString>Agence de l'Eau Artois-Picardie</gco:CharacterString>
</cit:name>
<cit:contactInfo>
<cit:CI_Contact>
-----------------
Lorsque je fais un test :
-----------------
Code :
SELECT id, unnest(xpath('./cit:name/text()', data_c::xml) AS organism
FROM public.metadata;
-----------------
j'obtiens
-----------------
Code :
ERROR: syntax error at or near "AS"
LINE 1: ...LECT id, (xpath('./cit:name/text()', data_c::xml) AS organis...
^
SQL state: 42601
Character: 53
-----------------
Si une personne pense pouvoir m'aider ? Un grand merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=370230#p370230
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 : Pascal PLUVINET
----------------------------------------
Bonjour,
J'ai une couche de polygones dont certains petits polygones ont un attribut NULL.
J'aimerai affecter à ces petits polygones la valeur du polygones voisins. Comme certains sont entourés eux même de petits polygones avec des valeurs nulles, je souhaitais utiliser une fonction récursive qui ferait un UPDATE tant qu'il y a des valeurs nulles.
J'ai tenté la rédaction ci-après mais ca ne met à jour qu'une fois les polygones , la récursivité ne fonctionne pas et il reste des polygones avec des valeurs nulles qui ne sont pourtant pas isolés.
N'étant pas à l'aise avec les fonctions récursives, je fais appel à vos compétences
-----------------
Code :
WITH RECURSIVE b AS
(
SELECT * FROM poly
WHERE attr is not null
)
UPDATE poly a
SET attr = b.attr
FROM b
WHERE a.attr is null AND st_intersects(a.geom,b.geom)
;
-----------------
Merci d'avance pour vos suggestions,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=370393#p370393
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 : ADL (florent.second(a)meurthe-et-moselle.gouv.fr)
----------------------------------------
Bonjour,
ce problème a-t-il trouvé une solution ? Je suis confronté aux mêmes difficultés de connexion 3 ans après...
Merci par avance de vos réponses.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=370443#p370443
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 Vergon (christophe.vergon(a)protonmail.com)
----------------------------------------
Bonjour,
Je dispose de deux géométries de type LINESTRING,
L'une est la réduction de l'autre par suppression de n points. Elles ont donc un certains nombres de sommets (au moins deux) strictement identiques d'un point de vue spatial et le résultat de st_overlaps de ces deux géométries me renvoie Faux !!!
Version de postgis : "3.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1"
Une idée ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=370134#p370134
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 : Pastore
----------------------------------------
Bonjour,
Je vous contacte pour savoir si il y a une manière rapide de passer de la version 3.4 de Postgis à la 3.1 sur Postgresql
Via PG Admin, j'ai mis à jour la version avec la commande ALTER EXTENSION postgis UPDATE TO 3.4 ;
Doit on passer par une désinstallation/réinstallation pour revenir à la version initiale ?
Merci beaucoup pour vos conseils !!
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=370008#p370008
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 BADOL
----------------------------------------
Bonjour,
J'ai beaucoup de tables en Lambert 93 avec 9 chiffres après la virgule.
J'avais subodoré que réduire cette précision inutile ferait gagner de la place sur le disque, augmenterait un peu la vitesse d'affichage et réduirait le temps des géotraitements.
J'ai questionné chatGPT sur le sujet (qui n'a pas été très bon il faut le reconnaitre) : https://chatgpt.com/share/6714c630-6270-800a-83d0-658648c01dbe
Je vous livre mes comparaisons entre
- ST_ReducePrecision à 0.01
- ST_SnapToGrid à 0.01
- ST_QuantizeCoordinates à 0
---- Situation initiale (en Lambert93):
DROP TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023;
CREATE TABLE public.l_bati_agrege_pepci_006_2023
(LIKE p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023 INCLUDING ALL);
ALTER TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023
CLUSTER ON l_bati_agrege_pepci_006_2023_geom_idx;
INSERT INTO public.l_bati_agrege_pepci_006_2023
SELECT * FROM p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023;
--> Updated Rows 305707
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023'));
--> 100 MB
---- On vacuum
VACUUM FULL public.l_bati_agrege_pepci_006_2023;
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023'));
--> 97 MB
--- On réindexe
REINDEX TABLE public.l_bati_agrege_pepci_006_2023;
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023'));
--> 97 MB
---- Test 1 : ST_ReducePrecision à 0.01
DROP TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023_t1;
CREATE TABLE public.l_bati_agrege_pepci_006_2023_t1
(LIKE p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023 INCLUDING ALL);
ALTER TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023_t1
CLUSTER ON l_bati_agrege_pepci_006_2023_t1_geom_idx;
INSERT INTO public.l_bati_agrege_pepci_006_2023_t1
SELECT * FROM p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023;
--> Updated Rows 305707
UPDATE public.l_bati_agrege_pepci_006_2023_t1
SET geom= ST_ReducePrecision(geom, 0.01)
WHERE ST_IsValid(geom)
-- Vérifie que la simplification ne change pas le nombre de polygones ou de points
AND ST_GeometryType(geom) = ST_GeometryType(ST_ReducePrecision(geom, 0.01))
-- Vérifie que la simplification ne vide pas la géographie
AND ST_Area(ST_ReducePrecision(geom,0.01)) > 0;
--> Updated Rows 305699
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023_t1'));
--> 194 MB
---- On optimise
VACUUM FULL public.l_bati_agrege_pepci_006_2023_t1;
REINDEX TABLE public.l_bati_agrege_pepci_006_2023_t1;
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023_t1'));
--> 196 MB
---- Test 2 : ST_SnapToGrid à 0.01
DROP TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023_t2;
CREATE TABLE public.l_bati_agrege_pepci_006_2023_t2
(LIKE p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023 INCLUDING ALL);
ALTER TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023_t2
CLUSTER ON l_bati_agrege_pepci_006_2023_t2_geom_idx;
INSERT INTO public.l_bati_agrege_pepci_006_2023_t2
SELECT * FROM p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023;
--> Updated Rows 305707
UPDATE public.l_bati_agrege_pepci_006_2023_t2
SET geom= ST_SnapToGrid(geom, 0.01)
WHERE ST_IsValid(geom) AND ST_IsValid(ST_SnapToGrid(geom, 0.01))
-- Vérifie que la simplification ne change pas le nombre de polygones ou de points
AND ST_GeometryType(geom) = ST_GeometryType(ST_SnapToGrid(geom, 0.01))
-- Vérifie que la simplification ne vide pas la géographie
AND ST_Area(ST_SnapToGrid(geom, 0.01)) > 0;
--> Updated Rows 305311
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023_t2'));
--> 195 MB
---- On optimise
VACUUM FULL public.l_bati_agrege_pepci_006_2023_t2;
REINDEX TABLE public.l_bati_agrege_pepci_006_2023_t2;
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023_t2'));
--> 195 MB
--- Test 3 : ST_QuantizeCoordinates
DROP TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023_t3;
CREATE TABLE public.l_bati_agrege_pepci_006_2023_t3
(LIKE p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023 INCLUDING ALL);
ALTER TABLE IF EXISTS public.l_bati_agrege_pepci_006_2023_t3
CLUSTER ON l_bati_agrege_pepci_006_2023_t3_geom_idx;
INSERT INTO public.l_bati_agrege_pepci_006_2023_t3
SELECT * FROM p_enveloppe_bati_2023.l_bati_agrege_pepci_006_2023;
--> Updated Rows 305707
UPDATE public.l_bati_agrege_pepci_006_2023_t3
SET geom = ST_QuantizeCoordinates(geom, 0)
WHERE ST_IsValid(geom) AND ST_IsValid(ST_QuantizeCoordinates(geom, 0))
-- Vérifie que la simplification ne change pas le nombre de polygones ou de points
AND ST_GeometryType(geom) = ST_GeometryType(ST_QuantizeCoordinates(geom, 0))
-- Vérifie que la simplification ne vide pas la géographie
AND ST_Area(ST_QuantizeCoordinates(geom, 0)) > 0;
--> Updated Rows 300855
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023_t3'));
--> 191 MB
---- On optimise
VACUUM FULL public.l_bati_agrege_pepci_006_2023_t3;
REINDEX TABLE public.l_bati_agrege_pepci_006_2023_t3;
SELECT pg_size_pretty(pg_total_relation_size('public.l_bati_agrege_pepci_006_2023_t3'));
--> 192 MB
Si vous avez un semblant d'explication, je veux bien car je sèche un peu. Ne pas gagner de la place car la géométrie est stockée d'une même manière quelle que soit sa précision… je peux comprendre.
Mais doubler la taille initiale… j'étais loin de m'en douter.
d'avance merci à celles et ceux qui prendront le temps de me lire et de me répondre.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=369900#p369900
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