Message posté par : image95
----------------------------------------
Bonjour,
Je travaille avec qgis et postgis.
Via mon role superUser j'ai defini différents roles pour plusieurs "simple" utilisateurs.Ils ont
les droits en lecture/select/usage sur toute table deja existante. Et egalement sur toute table qui sera générée à l'avenir (DEFAULT PRIVILEGE).
Voici ma methode :
-----------------
Code :
--POUR SCHEMA PUBLIC
GRANT USAGE ON SCHEMA public TO "user";
GRANT SELECT ON ALL TABLES IN SCHEMA public TO "user";
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO "user";
--POUR AUTRE SCHEMA XXX
GRANT USAGE ON SCHEMA XXXX TO "user";
GRANT SELECT ON ALL TABLES IN SCHEMA XXX TO "user";
ALTER DEFAULT PRIVILEGES IN SCHEMA XXX GRANT SELECT ON TABLES TO "user";
-----------------
Cette procedure fonctionne lorsque je realise moi meme l'opération (lorsque je suis "grantor").
Par contre, lorsque mon collègue, lui meme admin (SuperUser) tente une creation de table, avec son propre role de connexion, la table est bien créée mais est uniquement
visible par ceux qui ont un role de connexion superUser : les utilisateurs ne semblent pas pouvoir, , par defaut,visualiser, acceder aux nouvelles tables
créées par mon collègue.
Une personne pense avoir une piste de resolution?
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=350333#p350333
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,
Vous auriez un exemple avec des données ?
Je ne suis pas sur de comprendre le problème.
Avec les fonctions de référencement linéaire, vous pouvez découper une linestring tous les x mètres sans trop de problèmes.
Nicolas
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=333858#p333858
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 créé hier une nouvelle table. JE suis superuser et j'ai tous les droits. J'avais aucun soucis hier pour faire des editions sur cette table.
Aujourd'hui, tous mes champs sont en mode readonly. Comme l'illustre ce post :
https://bytes.com/topic/postgresql/answers/973206-how-remove-read-only-colu…
J'ai essayé un reboot des services postgres. Mais rien à faire. Si une personne pense avoir une piste?
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=350324#p350324
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'arrive bien à "peupler" mon champ geom depuis les champs X/Y grace à :
-----------------
Code :
ALTER TABLE my_table ADD COLUMN geom geometry(Point, 2154);
UPDATE my_table SET geom = ST_SetSRID(ST_MakePoint(x, y), 2154);
-----------------
J'aimerais pouvoir mettre en place un trigger afin que le champ geom se peuple
automatiquement sur ma table dès une nouvelle insertion/mise à jour des champ X/Y.
Si une personne pense pouvoir m'éclairer.
Merci.
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=350320#p350320
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 : croy
----------------------------------------
Bonjour à tou.te.s,
J'ai une table "terrier" dans une base postgre/postgis et j'essaye de remplir un champ cdterrier qui aurait ce format "idparcelle_nextvalue", le nexvalue s'incrémenterait de +1 en fonction de l'id de la parcelle, ex : si je saisis un premier terrier dans la parcelle 781, le cdterrier s'incrémentera avec 781_1, puis si je saisis un terrier dans la parcelle 825, alors le cdterrier s'incrémentera avec 825_1, puis si je saisis un second terrier dans la parcelle 825, alors le cdterrier s'incrémentera avec 825_2, etc.
Je pensais le faire avec un trigger et une (ou plusieurs?) séquence mais je n'arrive pas à trouver le moyen d'incrémenter le serial en fonction de l'idparcelle.
Si vous avez une idée, je suis preneur.
Merci d'avance,
Cédric
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=350211#p350211
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 : neskuik01
----------------------------------------
Bonjour
je cherche à mettre à jour une colonne "an_obs" de la table t1 qui a pour type integer [] avec des valeurs provenant d'un champ "année" de la table t2 également en integer [] . Je ne souhaite mettre à jour que si il y'a un intersection entre t1 et t2 ET pour les cas ou "an_obs" n'a pas de valeur et je ne veux pas avoir de doublons.
j'ai cette requête :
-----------------
Code :
Update test.table1 t1
set an_obs = (select array_agg(a order by a) from (select distinct unnest(t1.an_obs || t2.annee))as a)
FROM test.table2 t2
where
st_intersects(t1.geom, t2.geom) and t1.surf15 >0 and t1.an_obs is null
or
st_intersects(t1.geom, t2.geom) and t1.surf20 >0 and t1.an_obs is null
;
-----------------
qui me retourne une erreur :
-----------------
Citation :
la colonne « an_obs » est de type integer[] mais l'expression est de type record[]
-----------------
Et impossible de caster en integer[]
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=350023#p350023
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 couches de données, l'une contenant les centroides des communes françaises et l'autre des polygones répartis sur le territoire français.
Je souhaite créer un buffer autour du centroide d'une des communes que j'aurai sélectionnée et intersecter ce buffer avec mes polygones pour renvoyer lesquels sont dans le périmètre.
Lorsque je lance ma requête dans PgAdmin, pas de problème.
Pour autant, lorsque mon dev créé la requête en DQL dans Doctrine (Symfony), la requête retourne les polygones présents dans le buffer contenu dans les limites de la commune sélectionnée. Hors, si je veux créer un buffer de 15km, celui ci doit pouvoir s'étendre au delà des limites communales.
J'ai l'impression que dans le DQL du coup, c'est le "andWhere" qui pose alors problème.
Ma requête en SQL :
-----------------
Code :
SELECT a.lon,a.lat,a.code_insee, b.geometry
FROM public.commune a, public.polygones b
WHERE ST_Intersects(ST_Transform(ST_SetSRID(b.geometry, 4326), 2154),
ST_BUFFER(ST_Transform(ST_SetSRID(ST_Point( a.lon, a.lat), 4326), 2154),15000))
AND a.code_insee = '21231'
-----------------
La requête en DQL :
-----------------
Code :
->where('ST_Intersects(ST_Transform(ST_SetSRID(b.geometry, 4326), 2154),
ST_Buffer(ST_Transform(ST_SetSRID(ST_Point(a.lon, a.lat), 4326), 2154), :perimetre)) = true')
->andWhere('a.codeInsee = :codeInsee')
-----------------
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=349915#p349915
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 : jlavaure
----------------------------------------
Bonjour à tous,
J'ai une table sur Postgres/Postgis avec des polygones en Lambert93 (2154), je souhaiterais obtenir la longitude et la latitude du centroid de chaque polygone en WGS84 (4326).
Avez-vous des idées de requêtes ?
J'arrive d'un côté à transformer le référentiel :
-----------------
Code :
SELECT st_transform(geom,4326) from ma_table;
-----------------
De l'autre côté j'arrive à obtenir les coordonnées du centroid de chaque polygone :
-----------------
Code :
SELECT ST_X(ST_centroid(geom)), ST_Y(ST_centroid(geom)) from ma_table;
-----------------
Mais je n'arrive pas à "combiner" ces deux requêtes pour obtenir le résultat voulu.
Merci d'avance pour votre aide.
J
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=346375#p346375
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 : LAFONT40
----------------------------------------
Bonjour,
Je galère sur l'écriture d'un trigger.
J'ai des triggers dans ma base PostgreSQL/Postgis qui me permettent de mettre à jour un certain nombre de champs.
Pour ce faire j'ai 2 procédures dans le trigger :
1 fonction sur "INSERT", 1 fonction sur modification géométrique, et je souhaiterais une fonction me permettant de jouer le trigger que si le champ "nom" est modifié.
Pouvez vous m'aider ??
merci d'avance
BEGIN
--- Mise à jour par Trigger sur INSERT---
IF TG_OP = 'INSERT' THEN
UPDATE batim_batimentlocalise
SET (communeinsee,commune,groupement,departement,dernieremodifdate,dernieremodifheure) = (SELECT communeinsee,commune,groupement,departement,CURRENT_DATE,CURRENT_TIME FROM terri_commune WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie), terri_commune.geometrie)LIMIT 1)WHERE fksdis40=NEW.fksdis40;
UPDATE batim_batimentlocalise
SET (plandeploiement) = (SELECT nom FROM terri_secteurops WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie),terri_secteurops.geometrie)LIMIT 1) WHERE fksdis40=NEW.fksdis40;
UPDATE batim_batimentlocalise
SET (pageatlaszoom) = (SELECT nom FROM Carroyage_200m_landes WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie), Carroyage_200m_landes.geometrie)LIMIT 1)WHERE fksdis40=NEW.fksdis40;
UPDATE batim_batimentlocalise
SET (pageatlascoordonnees) = (SELECT nom FROM Carroyage_foret_dptal WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie), Carroyage_foret_dptal.geometrie)LIMIT 1)WHERE fksdis40=NEW.fksdis40;
RETURN NEW;
END IF;
--- Mise à jour par Trigger sur modification géographique---
IF ST_EQUALS(NEW.geometrie, OLD.geometrie) IS FALSE THEN
UPDATE batim_batimentlocalise
SET (communeinsee,commune,groupement,departement,dernieremodifdate,dernieremodifheure,modificateur) = (SELECT communeinsee,commune,groupement,departement,CURRENT_DATE,CURRENT_TIME,CURRENT_USER FROM terri_commune WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie), terri_commune.geometrie)LIMIT 1)WHERE fksdis40=NEW.fksdis40;
UPDATE batim_batimentlocalise
SET (plandeploiement) = (SELECT nom FROM terri_secteurops WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie),terri_secteurops.geometrie)LIMIT 1) WHERE fksdis40=NEW.fksdis40;
UPDATE batim_batimentlocalise
SET (pageatlaszoom) = (SELECT nom FROM Carroyage_200m_landes WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie), Carroyage_200m_landes.geometrie)LIMIT 1)WHERE fksdis40=NEW.fksdis40;
UPDATE batim_batimentlocalise
SET (pageatlascoordonnees) = (SELECT nom FROM Carroyage_foret_dptal WHERE ST_Within(ST_Centroid(batim_batimentlocalise.geometrie), Carroyage_foret_dptal.geometrie)LIMIT 1)WHERE fksdis40=NEW.fksdis40;
RETURN NEW;
END IF;
RETURN NEW;
END;
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=349714#p349714
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 : Solène.Cottet (so.cottet(a)live.fr)
----------------------------------------
Bonjour,
J'essaie de créer mon premier trigger sur l'interface PGAdmin.
Ma BDD possède 2 couches de polygones, observation et site. Les observations sont incluses dans des sites.
Je cherche à réaliser un trigger qui, lorsqu'une observation est ajoutée, ajoute automatiquement le nom du site dans laquelle elle se trouve, à une colonne déjà existante (nom_site, jointe précédemment).
Je tâtonne un peu car je n'ai jamais réalisé ce genre de fonction.
Voici le code que j'ai écris :
-----------------
Code :
CREATE TRIGGER update_observation BEFORE INSERT OR UPDATE ON observation
FOR EACH ROW EXECUTE PROCEDURE update_nom_site_observation()
CREATE OR REPLACE FUNCTION update_nom_site_observation()
RETURNS TRIGGER AS
BEGIN
SELECT nom_site FROM site ;
ON ST_Overlaps(observation.geom, site.geom) ;
UPDATE observation(nom_site);
END;
-----------------
Je n'arrive pas à déceler où se trouve mon erreur, qui doit être une erreur de syntaxe.
L'execution me renvoit l'erreur suivante :
ERROR: ERREUR: erreur de syntaxe sur ou près de « CREATE »
LINE 4: CREATE OR REPLACE FUNCTION update_observation()
Merci d'avance pour votre aide
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=334974#p334974
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