Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#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

 

Pied de page des forums

Powered by FluxBB