Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Mon 04 April 2022 16:39
- chowchow
- Juste Inscrit !
- Date d'inscription: 4 Apr 2022
- Messages: 8
Modification Srid ?
Bonjour,
Quand je créé ma donnée le srid est en 4326. Et je voudrais qu il soit à 0.
Pour cela j 'ai fais une fonction trigger :
CREATE OR REPLACE FUNCTION atd16_patrimoine_foncier.f_srid()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
NEW.the_geom := ST_SetSRID(the_geom,0);
END;
$BODY$;
ALTER FUNCTION atd16_patrimoine_foncier.f_srid()
OWNER TO sditecgrp;
GRANT EXECUTE ON FUNCTION atd16_patrimoine_foncier.f_srid() TO sditecgrp;
GRANT EXECUTE ON FUNCTION atd16_patrimoine_foncier.f_srid() TO PUBLIC;
La fonction est acceptée mais lors de l'intégration d'une nouvelle j'ai un message d'erreur :
ERROR: control reached end of trigger procedure without RETURN
CONTEXT: PL/pgSQL function atd16_patrimoine_foncier.f_srid()
État SQL : 2F005
Qu est ce que je dois modifier dans ma fonction pour modifier le Srid lors de la création de l'objet ?
Hors ligne
#2 Tue 05 April 2022 09:48
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: Modification Srid ?
Bonjour
Je pense qu'il manque un NEW :
NEW.the_geom := ST_SetSRID(NEW.the_geom,0);
Cordialement
Dernière modification par JP LLORENS (Tue 05 April 2022 10:21)
Hors ligne
#3 Tue 05 April 2022 16:08
- chowchow
- Juste Inscrit !
- Date d'inscription: 4 Apr 2022
- Messages: 8
Re: Modification Srid ?
Bonjour,
merci pour ce retour
Mais ça ne fonctionne pas
CREATE OR REPLACE FUNCTION atd16_patrimoine_foncier.f_srid()
RETURNS trigger
LANGUAGE 'plpgsql'
COST 100
VOLATILE NOT LEAKPROOF
AS $BODY$
BEGIN
NEW.the_geom := st_Transform(st_SetSRID(NEW.the_geom,4326),0);
END;
$BODY$;
ALTER FUNCTION atd16_patrimoine_foncier.f_srid()
OWNER TO sditecgrp;
GRANT EXECUTE ON FUNCTION atd16_patrimoine_foncier.f_srid() TO sditecgrp;
GRANT EXECUTE ON FUNCTION atd16_patrimoine_foncier.f_srid() TO PUBLIC;
J ai testé ça et j ai le message d erreur suivant lors de l intégration d'une donnée
ERROR: ST_Transform: 0 is an invalid target SRID
CONTEXT: PL/pgSQL function atd16_patrimoine_foncier.f_srid() line 5 at assignment
État SQL : XX000
Dernière modification par chowchow (Tue 05 April 2022 16:39)
Hors ligne
#4 Tue 05 April 2022 16:27
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: Modification Srid ?
Ah oui, j'avais oublié le st_transform, désolé.
Par contre la doc dit :'The destination spatial reference to_srid may be identified by a valid SRID integer parameter';
Le message d'erreur est clair, le srid 0 n'existe pas ...https://spatialreference.org/ref/
Hors ligne
#5 Tue 05 April 2022 16:32
- ppluvinet
- Participant assidu
- Lieu: VALENCE
- Date d'inscription: 6 Aug 2007
- Messages: 617
Re: Modification Srid ?
A mon avis, un SRID à "0", ca n'existe pas ! Pourquoi souhaitez-vous un SRID à zéro. Un SRID est un code et doit exister dans la table spatial_ref_sys
cf la doc : https://postgis.net/docs/ST_Transform.html
The destination spatial reference to_srid may be identified by a valid SRID integer parameter (i.e. it must exist in the spatial_ref_sys table)
Tester : select srid from spatial_ref_sys order by srid;
Vous verrez bien qu'un SRID à "0" n'existe pas
Dernière modification par ppluvinet (Tue 05 April 2022 16:32)
Pascal PLUVINET
Hors ligne
#6 Tue 05 April 2022 16:40
- chowchow
- Juste Inscrit !
- Date d'inscription: 4 Apr 2022
- Messages: 8
Re: Modification Srid ?
J ai besoin du srid 0 car sur une autre table que je ne peux pas toucher il est à 0.
Et lors de la création de ma vue pour intersecter les 2 objets les srid doivent être les mêmes dans les 2 tables
Dernière modification par chowchow (Tue 05 April 2022 16:42)
Hors ligne