Message posté par : EliseWi
----------------------------------------
Bonjour à tous,
J'essaie de me connecter à un serveur distant sur lequel je voudrais stocker mes données.
Seulement, quand j'essaie de me connecter à celui-ci à partir de PgAdmin, je reçois le message d'erreur suivant "An error has occured: "server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.". Chose étrange, la connexion fonctionne sur Qgis. J'ai essayé d'appliquer les même options de connexion que celles de Qgis à PgAdmin (désactivation du mode SSL) mais ça ne change rien. J'ai bien comme settings de connexion listen_addresses = '*' dans mon fichier postgresql.conf.
Auriez-vous une idée de ce que je peux faire ?
Merci d'avance pour vos réponses :)
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=354791#p354791
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,
Les couches depuis mon geoserver sont bien importées en tant que tables distantes cependant certaines s'ouvrent correctement ( celles dont la source est une table postgis) et d'autres non avec l'erreur "ERROR: GDAL AppDefined [1] HTTP error code : 400 État SQL : XX000" ( celles dont la source est soit une vue postgis ou un flux WFS). POSTGRESQL="14" OGR_FDW="1.1" GDAL="3.2.2"
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=354765#p354765
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 : Sébastien Morucci
----------------------------------------
Bonjour à tous,
J’ai essayé de trouver des réponses sur les forums et faire des tests sans succès donc je m’en remets à vous. Pour le contexte, on organise des concours de pronostiques avec des amis et cette année, je saute le pas de la base de données et du BI pour retranscrire les résultats.
J’ai une version 11 de Postgresql et je cherche à créer une fonction Trigger qui me permettra d’insérer, à chaque ajout de match dans la table top14, autant de lignes qu’il y a de pronostiqueurs dans la table pronostics_matchs tout en intégrant les informations de ces 2 tables.
J’ai une première table de pronostiqueurs :
-----------------
Code :
CREATE TABLE pronostiqueurs (
id_pronostiqueur varchar(20) NULL,
prenom varchar(50) NULL,
nom varchar(50) NULL
);
INSERT INTO pronostiqueurs
VALUES
('U1', 'Hendrix', 'Jimmy'),
('U2', 'Lennon', 'John'),
('U3', 'Dickinson', 'Bruce');
-----------------
Une seconde table de compétition Top14 (et ouais le monde de l'ovalie) :
-----------------
Code :
CREATE TABLE top14 (
id_match varchar(50),
competition varchar(30),
journee varchar(10),
num_match varchar(10),
equipe_dom varchar(30),
score_dom float8,
bonus_off_dom boolean,
equipe_ext varchar(30),
score_ext float8,
bonus_off_ext boolean,
date_match timestamp
);
-----------------
Une dernière table qui regroupe chacun des matchs dupliqués pour autant de pronostiqueurs :
-----------------
Code :
CREATE TABLE pronostics_matchs (
id_prono varchar(50),
id_match varchar(50),
competition varchar(30),
journee varchar(10),
num_match varchar(10),
id_pronostiqueur varchar(30),
equipe_dom varchar(30),
score_dom float8,
bonus_dom boolean,
equipe_ext varchar(30),
score_ext float8,
bonus_ext boolean
);
-----------------
Voilà la fonction trigger qui semble marcher à moitié car elle ne me renvoie qu’une seule ligne entièrement remplie :
-----------------
Code :
CREATE OR REPLACE FUNCTION ajouter_matchspronos()
RETURNS trigger AS
$BODY$
DECLARE
prono_rec RECORD;
BEGIN
FOR prono_rec IN SELECT id_pronostiqueur from pronostiqueurs
LOOP
insert into pronostics_matchs
(id_match,competition,journee,num_match,id_parieur,equipe_dom,equipe_ext)
VALUES(new.id_match,new.competition,new.journee,new.num_match, prono_rec.id_pronostiqueur, new.equipe_dom,new.equipe_ext);
return NEW;
END LOOP;
END;
$BODY$
LANGUAGE plpgsql;
DROP TRIGGER ajouter_matchspronos ON top14;
CREATE TRIGGER ajouter_matchspronos AFTER INSERT
ON top14 FOR EACH ROW
EXECUTE PROCEDURE ajouter_matchspronos();
-----------------
Tentative d’insertion qui doit (théoriquement) venir alimenter la table pronostics_matchs en y intégrant les pronostiqueurs
insert into top14
-----------------
Code :
(competition,journee,num_match,equipe_dom,equipe_ext,date_match) values ('TOP14','J1','M1','RCT','ASM','2022-09-18 20:45:00')
-----------------
En vous remerciant grandement par avance pour vos lumières. Si vous souhaitez des précisions, je suis à votre service.
Bonne soirée
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=354707#p354707
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 : Léandre Béron
----------------------------------------
Bonjour,
Nous travaillons sur des données des friches de notre collectivité.
Deux attributs sont présents :
- surf_tup : Surface du foncier
- idpar_tup : Liste des IDU des parcelles constituant la friche
Je souhaiterais donc mettre à jour ces informations de façon automatique.
Cela passe par une comparaison spatiale donc demande un minimum de temps. J'utilise un ST_PointOnSurface pour ne prendre uniquement les véritables parcelles qui constituent la friche et non celles voisines en plus.
J'ai d'abord mis en place le process sur un TRIGGER BEFORE ISNERT OR UPDATE qui fonctionne mais qui est extrêmement long.
J'aurais donc souhaité passer sur un AFTER INSERT OR UPDATE en pensant diminuer le temps d'enregistrement pour l'utilisateur.
J'ai donc mis en place ceci :
-----------------
Citation :
CREATE FUNCTION schema.table_saisi_auto()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
-- champs automatisés
NEW.sit_datmaj = current_date;
-- CALCUL SOMME SURFACE CADASTRE DES PARCELLES QUI SONT CONCERNEES PAR LA FRICHE (INTERSECT FRICHE AVEC POINT ON SURFACE PARCELLE)
NEW.surf_tup = SUM("SUPF")
FROM cadastre."PARCELLE" par
WHERE ST_Intersects(ST_PointOnSurface(NEW.geom),par."GEOM");
-- LISTE LES PARCELLES QUI SONT DANS CETTE FRICHE
NEW.idpar_tup = string_agg(parc."IDU", ', '::text)
FROM cadastre."PARCELLE" parc
WHERE ST_Intersects(ST_PointOnSurface(parc."GEOM"), NEW.geom);
RETURN NEW;
END;
$BODY$;
-- CREATION DES TRIGGERS
CREATE TRIGGER schema_table_control_saisi
BEFORE INSERT OR UPDATE
ON schema.table
FOR EACH ROW
EXECUTE PROCEDURE schema.table_control_saisi();
CREATE TRIGGER table_saisi_auto
AFTER INSERT OR UPDATE
ON schema.table
FOR EACH ROW
EXECUTE PROCEDURE schema.table_saisi_auto();
-----------------
Aucune erreur lors de l'enregistrement d'une modification géométrique sous QGIS, mais temps de chargement très long + ne se passe rien dans les 2 champs en question.
--> Egalement, comment optimiser la mise à jour de ces informations ? Le cadastre utilisé est sur 466 communes et nous travaillons sur 39 communes. Définir une table spécifique des parcelles (avec le millésime) uniquement sur ces 39 communes me ferait-il gagner un temps non négligeable ? Le trigger ne devrait plus à passer toutes les parcelles mais beaucoup moins, non ?
--> Je peux aussi passer par une vue qui reconstitue ces deux informations (et n'ayant donc plus besoin de les faire disposer sur ma table), mais sera-t-elle plus performante ?
Bien Cordialement,
Léandre Béron
----------------------------------------
Le message est situé https://georezo.net/forum/viewtopic.php?pid=354689#p354689
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