Message posté par : idjepacreutz (idrizza(a)hotmail.fr)
----------------------------------------
Bonjour,
J'essaie de créer un trigger dans notre base de données PostgreSQL/PostGIS afin de découper les géométries linéaires d'une couche segment sur les polygones d'une couche communes à chaque mise à jour du champ geom (dont sur les opérations INSERT et UPDATE), et de mettre à jour des champs qui contiennent les codes INSEE des différents niveaux de collectivité (tous déjà stockés commune par commune).
Le fonctionnement voulu est celui-ci :
- INSERT : la nouvelle entité doit être découpée sur les limites de la couche communes, et chaque ligne résultant de cette opération doit avoir les attributs du polygone dans lequel elle est contenue
- UPDATE : l'entité préexistant doit continuer d'exister (conservation de l'id et de la date de création de l'entité), mais avec sa nouvelle géométrie (découpée sur les communes), et de nouveaux attributs si nécessaire. Les nouvelles entités issues du découpage doivent être insérées dans la même table.
J'ai du mal à obtenir le bon retour depuis la fonction PL/pgSQL, mon code ci-dessous met bien à jour l'entité existante (attributs et géométrie), mais les entités qui sont supposées être insérées ne le sont pas. J'ai essayé de nombreuses combinaisons de RETURN différentes, sans succès. Quelqu'un aurait un conseil ?
-----------------
Code :
CREATE OR REPLACE FUNCTION split_segments_on_communes_and_update_collectivities_codes()
RETURNS TRIGGER AS
$BODY$
DECLARE
rec RECORD;
BEGIN
FOR rec IN
SELECT c.insee_com AS insee_com,
'0' || c.insee_dep AS insee_dep,
c.insee_reg AS insee_reg,
c.code_epci AS code_epci,
(ST_Dump(ST_Intersection(NEW.geom, c.geom))).geom AS geom,
(ST_Dump(ST_Intersection(NEW.geom, c.geom))).path[0] AS "path",
NEW.id_statut,
NEW.propriete,
NEW.author,
NEW.create_date
FROM donnees_externes.commune c
WHERE ST_Intersects(NEW.geom, c.geom)
LOOP
IF rec."path" = 1 OR rec."path" IS NULL THEN
NEW.geom = rec.geom;
NEW.code_reg = rec.insee_reg;
NEW.code_dep = rec.insee_dep;
NEW.code_epci = rec.code_epci;
NEW.code_commune = rec.insee_com;
ELSE
INSERT INTO reference.segment (geom,
id_statut,
propriete,
code_epci,
code_dep,
code_reg,
author,
create_date,
code_commune)
VALUES (
rec.geom,
NEW.id_statut,
NEW.propriete,
rec.code_epci,
rec.insee_dep,
rec.insee_reg,
NEW.author,
NEW.create_date,
rec.insee_com);
END IF;
END LOOP;
RETURN NEW;
END;
$BODY$
LANGUAGE plpgsql;
CREATE OR REPLACE TRIGGER split_segments_on_communes_and_update_collectivities_codes
BEFORE INSERT
OR UPDATE OF geom
ON reference.segment
FOR EACH ROW
WHEN (pg_trigger_depth() < 1)
EXECUTE PROCEDURE split_segments_on_communes_and_update_collectivities_codes();
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=364450#p364450
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 : Ricola62
----------------------------------------
Bonjour,
J'ai réussi à importer via osm2pgrouting le réseau routier d'OSM dans la BDD.
J'ai deux tables start et end, comment exploiter les algos de pg routing pour calculer la distance la plus courte et le temps de trajet?
L'idée c'est de projeter les points de start et end pour créer des tronçons temporaires?
merci d'avance
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=364222#p364222
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 : Ricola62
----------------------------------------
POSTGRES: 14-3.2
Bonjour,
J'ai une colonne "file" de type bytea lorsque j'essaye d'insérer cette valeur dans array de bytea, j'ai des caractères en trop.
La colonne file est une image.
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362306#p362306
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 : anne39
----------------------------------------
Bonjour,
J'essaie d'écrire un trigger qui manipule 3 tables géographiques dans PostGIS.
La fonction se déclenche lors de l'insertion d'un objet dans la table A.
Je souhaite insérer dans la table C, le résultat des intersections entre les objets de la table A et ceux de la table B.
Je l'ai écrit ainsi :
-----------------
Code :
INSERT INTO public.table_C(geometrie)
SELECT
st_intersection(table_A.geometrie, table_B.geometrie) as intersection
FROM public.table_A, public.table_B
WHERE
st_intersects(NEW.geometrie,table_B.geometrie)
;
-----------------
Or les lignes s'insèrent bien dans la table C mais il y a un problème avec la géométrie : quand je l'ouvre dans QGIS ou FME, je récupère les lignes mais il n' a pas de géométrie associée.
J'imagine que la géométrie créée par la fonction st_intersection n'est pas correcte mais je ne sais pas ce que je dois faire pour qu'elle le soit.
Si je fais une vue à partir de la même requête, QGIS lit parfaitement la colonne intersection et affiche la géométrie des entités.
Je ne comprends donc pas la logique.
Auriez-vous une piste ?
Merci :-)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=363762#p363762
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 : LAURENT
----------------------------------------
Bonjour a tous et merci pour votre aide.
J'ai réalisé une base de donnée pour la gestion des arbres (projet etudiant). Tous fonctionne bien.
Je souhaiterai pouvoir mettre a jour cette base de données avec un fichier .geojason qui vient de mettre donné.
Je ne sais absolument pas comment faire pour extraire les données de ce fichier et les utiliser pour mettre a jour ma BDD. Auriez vous un axe de recherche à me donner.
Mon deuxième problème est :
Je peux lire le fichier .geojason (avec IDLE par exemple) , et je peux voir que les coordonnées sont données en latitude et longitude. Alors que si je vais voir mes tables dans pgAdmin4 l'information géographique est dans une seule colonne, et il semble que cette information ait été transformée dans un code que je connais pas. Comment faire cette transformation pour l'info géographique ?
Un grand merci par avance .
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=363741#p363741
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 : Alexandre Hervouet
----------------------------------------
Bonjour,
Je cherche à avoir des retours d’expérience concernant la connexion au WFS "parcellaire" de L'IGN via ogr_fdw.
J'ai bien créé le serveur, ogr_fdw_info m'a bien fourni toutes les infos et j'ai lancé ce code là :
CREATE FOREIGN TABLE cadastralparcels_parcellaire_express_parcelle (
fid bigint,
the_geom Geometry(MultiSurface,4326),
gml_id varchar,
numero varchar,
feuille integer,
section varchar,
code_dep varchar,
nom_com varchar,
code_com varchar,
com_abs varchar,
code_arr varchar,
idu varchar,
code_insee varchar,
contenance integer
) SERVER parcelles_pci
OPTIONS (layer 'CADASTRALPARCELS.PARCELLAIRE_EXPRESS:parcelle');
La table foreign est bien crée, tout semble rouler
Mais si je tente un simple :
select * from cadastralparcels_parcellaire_express_parcelle limit 1
Comme s'il chargeait tout le flux lorsque que je lui demande ça.
Alors ça mouline mouline mouline sans résultat.
C'est la première fois que j'utilise cette extension et j'ai l'impression que j'ai loupé quelque chose.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362697#p362697
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 possède une table de polygones (bâtiments), et une table de polygones issus d'un raster (4000*6000) soit 24 millions de polygones vs une centaines dans la table bâtiments.
Après création d'un idex gist sur les deux tables quand je tente une requête d'intersection avec un WHERE st_intersects(geoma,geomb) le query planneur (lol) refuse d'utiliser l'index spatial ...
I Wonder Why ?
Bonne journée.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362977#p362977
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,
Ca aurait pu prendre place dans GéoBar mais c'est du pur GéoD.
Question : Que représente l'image en PJ ? Généré à partir de quelle fonctionnalité de POSTGIS ?
Indices : assez parcellaires ... ;)
----------------------------------------
Ce message est accompagné de fichiers, pour les télécharger, suivre le lien ci-dessous.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362886#p362886
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 : Ricola62
----------------------------------------
Bonjour,
j'ai une table parent
id(pk) nom
1 toto
2 tata
3 popo
une table enfant
id(pk),id_p(fk),date
1, 2, 01/02/2020
2, 1, 03/02/2020
3, 3, 04/02/2020
l'idée est de fusionner toto tata pour donner id 4, de faire update cascade pour que les clés etrangeres soit maj.
cependant faire un update table set id= 4 where id = 1 et set id= 4 where id = 2 va à l'encontre de la clé primaire et l'unicité.
le résultat devrait être
id(pk) nom
4 [toto,tata]
3 popo
id(pk),id_p(fk),date
1, 4, 01/02/2020
2, 4, 03/02/2020
3, 3, 04/02/2020
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=362713#p362713
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 : Lison94
----------------------------------------
Bonjour à tous,
Je souhaite importer dans ma BDD postgis, un tableau Excel. Pour cela je l'ai enregistré en csv dans un fichier où j'ai ouvert les autorisation à "Tout le monde". Ensuite, via pgadmin, j'ai créé une nouvelle table et j'utilise l'outil import csv.
Seulement cela ne fonctionne pas j'obtiens un exit code 1 et je ne comprends pas pourquoi..
Auriez-vous des explications à mon problème ?
Merci par avance :)
Lison
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=342491#p342491
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