Annonce
Pour sécuriser votre compte sur les forums du GeoRezo, nous vous proposons de changer votre mot de passe.
Vous allez recevoir un message pour effectuer ce changement de mot de passe.
Merci de bien respecter les règles préconisées.
#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: LYON
- Date d'inscription: 6 Aug 2007
- Messages: 608
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