Message posté par : Nicolas Vaginay
----------------------------------------
Bonjour,
Je cherche à mettre en place une contrainte de vérification pour m'assurer que pour une ligne donnée, une valeur n'apparaisse qu'une seule fois dans un ensemble de colonnes. Est-ce que quelqu'un saurait faire ça?
Dans l'exemple ci-dessous, cela consiste à vérifier quand on saisit TOTO que cette valeur n'est pas présente dans les autres colonnes "rangsXX"
id rang01 rang02 rang03 rang04 ... rang35
1 TOTO TATA TUTU TETE TITI
Merci pour votre aide
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345732#p345732
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 : Hippo (jerome.hippolyte(a)yahoo.fr)
----------------------------------------
Bonjour,
Je dispose de 2 tables dans PostgreSQL.
L'une correspond à une liste de communes avec leur superficie en km², la seconde table quant à elle, liste un certain nombre d'unités surfaciques avec des surfaces également en km².
Je voudrais pouvoir diviser la superficie de chaque commune, en fonction des différentes surfaces présentes dans ma seconde table.
En somme cela reviendrait à dire, combien la commune 1 peut contenir d'unité 1 ? d'unité 2 ? ... ? Combien la commune 2 peut contenir d'unité 1 ? d'unité 2 ? ... ?
Mes données étant stockées dans PostGreSQL, je me demandais donc s'il était possible de réaliser un tel traitement en SQL ?
Je ne connais malheureusement SQL que dans les grandes lignes et il me semble a priori compliqué (voir impossible) de créer une boucle qui viendrait boucler sur mes 2 tables et effectuer ces calculs.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345618#p345618
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,
J'ai une table postgis polygones pour mes "communes".
J'ai une table ponctuelle pour mes "forages".
J'ai créé une vue matérialisée "vm" définit par une jointure spatiale comme suit :
-----------------
Code :
SELECT forages.*,
commune.gid,
commune.insee_com,
commune.nom
FROM forages, commune
WHERE st_intersects(pylone.geom, commune.geom);
-----------------
Maintenant je souhaite que dès qu'une modification a lieu pour le champ "nom" de ma table de polygones "communes",
cette modification se produise également dans le champ "nom" de ma vue matérialisée.
Sauf erreur de ma part,
le trigger doit etre définit sur la table "communes" comme suit
-----------------
Code :
CREATE TRIGGER communes_trigger
after update
on commune
FOR EACH STATEMENT.
execute procedure trigger_fonction
-----------------
Il me faut maintenant définir la fonction. C'est pour cette étape que j'ai besoin de vous, si vous le voulez bien.
Ci dessous, une proposition de structure. Mais il manque beaucoup de choses.
-----------------
Code :
CREATE or replace FUNCTION bdd_forages_trigger_fonction
returns trigger
langage sql
AS $$
BEGIN
if then
update
end if ;
return new
refresh materialized view
END;
$$
-----------------
Merci beaucoup.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345561#p345561
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 : SGREF
----------------------------------------
Bonjour,
En PgSQL, j'aimerai faire appel à plusieurs séquences pour générer un ID.
Quand je dis "plusieurs" je ne sais même pas si cela est possible, je m'explique :
Il s'agit d'une table, contenant des polyognes, utilisée sur QGIS, où il y a continuellement de nouvelles entités.
J'ai besoin de générer une ID automatique qui diffère selon le département où se trouve le nouveau polygone, et qui comprendrait donc le code_insee du département. Concrètement je pensais créer une séquence par département nommée "codeinseedepartement_seq" et aller chercher la "nextval" de la séquence correspondante en récupérant le code insee du département de la nouvelle entité par st_intersects. Le tout dans une trigger function :
-----------------
Code :
BEGIN
UPDATE projet.test_zone zp set ID = nextval(s2.nom_sequence)
FROM
(SELECT
s1.gid,
concat('projet.',s1.code_insee_dep, '_seq') AS nom_sequence
FROM (SELECT
t1.gid,
t2.code_insee_dep
FROM projet.test_zone as t1
INNER JOIN limite.departement as t2
ON ST_Intersects(t1.geom,t2.geom)
)s1
)s2
WHERE zp.gid = NEW.gid;
RETURN NEW;
END;
-----------------
Mais visiblement ça ne fonctionne pas.
Etant complétement novice en pgsql, je me dis que je suis potentiellement complétement à côté de la plaque, j'en appelle donc à votre aide/imagination.
Merci d'avance pour vos réponses.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345528#p345528
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 : Demonshine
----------------------------------------
Bonjour,
Lors de la mise à jour ou insertion d'un élément dans un table "nom" de type ponctuel, je souhaite récupérer certaines informations de la table "zone" de type polygone à l'intérieur de laquelle chaque point est contenu. J'ai donc essayé de mettre en place un trigger entre ces deux tables en utilisant "st_within" pour faire le lien entre les deux tables. Le problème est que mon trigger ne marche pas, soit il me remplit toutes mes lignes dans ma table "nom" avec les valeurs de la colonne spécifiée, alors que je veux que ce soit juste la ligne modifiée ou créée qui soit remplie. Ou bien si dans ma condition IF je met "TG_OP="update" j'ai une boucle infinie. J'ai essayé d'utiliser la variable new mais j'obtiens une erreur comme quoi la variable new n'existe pas. Voici mon code :
-----------------
Code :
CREATE OR REPLACE FUNCTION maj_nom()
RETURNS trigger AS
$BODY$
DECLARE
BEGIN
IF /*TG_OP = 'UPDATE' or */ TG_OP='INSERT' THEN
raise notice 'update_insert';
/* MAJ de la table "nom" : sur la colonne graphie. J'attribue la valeur toponyme de la table "zone"
sur la colonne nature, j'attribue la valeur nature de la table "zone"
sur la colonne cleabs, j'attribue la valeur cleabs de la table "zone"
*/
UPDATE set graphie = toponyme,
nature=zone.nature,
cleabs=zone.cleabs
/* Je récupère la table "zone" car je l'utilise au dessus */
FROM zone
/* Je cherche la zone qui contient le toponyme dans la table : "nom" */
WHERE st_within(NEW.geom, zone.geom);
END IF;
return NEW;
END;
$BODY$
LANGUAGE plpgsql;
CREATE TRIGGER trigger_maj_nom
AFTER INSERT OR UPDATE
ON nom
FOR EACH ROW
EXECUTE PROCEDURE maj_nom();
-----------------
Merci d'avance pour votre aide,
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345270#p345270
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,
Globalement, j'arrive bien à importer les données ign bd topo dans postgis.
Toutefois, pour la couche troncons de route (sur la region grand est 44), je n'arrive pas à importer la couche.
J'ai fait des tests avec l'encodage utf 8_ et ISO-8859-1.
Avec ce dernier, voici le message d'erreur :
==============================
Shapefile type: ArcZ
PostGIS type: MULTILINESTRING[4]
COPY failed with the following error: ERREUR: syntaxe en entrée invalide pour le type date : « erie »
CONTEXT: COPY troncon_de_route, ligne 1510271, colonne date_app : « erie »
Shapefile import failed.
Pour info, j'utilise pour l'import l'outil graphique Postgis shapefile GUI mis à disposition par les outils postgis.
J'ai fait un test egalement hier via le plugin bdd postgis, c'etait interminable. Comme si le traitement etait sans fin.
Si une personne pense identifier le probleme et interpréter le message d'erreur.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345402#p345402
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 souhaite importer dans ma bdd postgis le contenu de la bd topo pour 10 départements uniquement. l'IGN met à disposition la donnée au format sql sur la France entière. Selon moi, la méthode la plus pertinente serait de limiter l'import de données dans la bdd à mes 10 départements d'intéret uniquement.
Pour information, j'ai bien dans ma bdd une table ign amin express des départements français.
Idealement je souhaiterai en plus que pour chaque table il y ait création d'un index GIST et la definition d'un clef primaire gid. Et si possible un petit VACUUM ANALYZE.
Connaitriez vous une méthode, outil qui permettrait ce paramétrage d'import ? (ogr, shp2psqll, pg_restore,autre?.). Ou faut il obligatoirement passer par un langage de programmation comme PL/pgSQL ou python ou autre ?
Merci bien.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345352#p345352
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 : Lucile16 (lucile16.lm(a)gmail.com)
----------------------------------------
Bonjour,
l'objectif est de mettre à jour automatiquement le champ 'date_valid' uniquement lorsque le champ 'validite' = valide.
BEGIN
NEW.date_valid = CURRENT_TIMESTAMP
from bd_adresse.adresse_agglo
where adresse_agglo.validite = 'valide';
RETURN NEW;
END;
Je ne reçois aucun message d'erreur dans la syntaxe mais le champ 'date_valid' ne se met pas à jour lors de l'enregistrement.
Pouvez-vous m'orienter vers une autre syntaxe ou démarche ?
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=344386#p344386
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 me permets de faire un petit up sur ce sujet. Je ne sais pas si il y a de nouvelles approches, outils ou recommandations depuis 2019 ? Pour info, le tutoriel hébergé sur le site de l'ign pour l'import de données bdtopo dans postgis au format sql n'est plus disponible :
https://geoservices.ign.fr/ressources_d … sql_v1.pdf
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345329#p345329
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 me permets de faire un petit up sur ce sujet. Je ne sais pas si il y a de nouvelles approches, outils ou recommandations depuis 2019 ? Pour info, le tutoriel hébergé sur le site de l'ign pour l'import de données bdtopo dans postgis au format sql n'est plus disponible :
https://geoservices.ign.fr/ressources_documentaires/Espace_documentaire/BAS…
Je me suis permis d'en avertir l'ign.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=345328#p345328
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