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

GEODATA DAYS 2024

#1 Thu 10 September 2009 15:29

topoman
Participant occasionnel
Date d'inscription: 22 Apr 2009
Messages: 19

shape vers table postgis avec contraintes

Bonjour,

Je teste actuellement FME 2009. Mon problème est le suivant :

- je dispose d'un fichier shape (polygone) et je souhaite mettre à jour une table postgis avec ce fichier.
- cette table dispose de deux contraintes :

Code:

CONSTRAINT pk_diag_raison PRIMARY KEY (object_id) USING INDEX TABLESPACE tbsp_sig2,
  CONSTRAINT diag_raison_id_bdcarto_fkey FOREIGN KEY (id_bdcarto)
      REFERENCES ign.commune (id_bdcarto) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION,

comment spécifier à FME lors de l'import : l'attribut "object_id" qui provient de la tablespace et l'attribut "id_bdcarto" qui lui provient d'une requête spatiale (obtenir l'attribut id_bdcarto de la commune dans laquelle le polygone se trouve) car ces deux attributs ne sont pas présents dans le fichier shape à importer.

Merci par avance pour vos conseils.

Hors ligne

 

#2 Thu 10 September 2009 15:59

Thomas KOCHERT
Participant occasionnel
Lieu: Nancy
Date d'inscription: 7 Nov 2005
Messages: 11
Site web

Re: shape vers table postgis avec contraintes

Bonjour,

si vous disposez localement de la BD Carto, vous pouvez faire un InsidePointReplacer sur vos polygones puis PointOnAreaOverlayer sur la BD Carto pour récupérer son id.

pour la clé primaire de votre table, c'est plus compliqué :

- soit la colonne clé est de type serial dans PostGis (ou utilise une séquence d'entiers ce qui revient au même), laissez l'attribut vide dans FME, définissez son type à 'serial', et mettez le paramètre du writer 'autoriser l'écriture des attributs serial' à 'NON'. La colonne sera remplie par PostGis au moment du chargement,

- soit ce n'est pas le cas et dans ce cas vous devez générer la clé au niveau de FME. Une solution est de récupérer le numéro du dernier indice présent dans PostGis puis d'utiliser Counter pour générer les clés

Cordialement,
Th.K.


Thomas Kochert
Responsable SIG DT Lorraine - Office National des Forêts
Une petite carte vaut mieux qu'un long discours... alors... au travail !

Hors ligne

 

#3 Thu 10 September 2009 17:51

topoman
Participant occasionnel
Date d'inscription: 22 Apr 2009
Messages: 19

Re: shape vers table postgis avec contraintes

bon, j'ai récupéré l'ID de la BD carto puis pour l'object_id j'ai laissé l'attribut vide dans FME, mis son type à 'serial',  l'écriture des attributs serial' à 'NON'.

résultat : colonne "object_id" viole la contrainte NOT NUL

je vais tester votre deuxième solution, mais je ne trouve pas l'info sur le numéro du dernier indice présent dans postgis ?

encore un grand merci pour votre réponse

bonne soirée

Hors ligne

 

#4 Thu 10 September 2009 18:02

Sarah - VEREMES
Participant actif
Date d'inscription: 21 Apr 2009
Messages: 51

Re: shape vers table postgis avec contraintes

Pour récupérer le numéro du dernier indice, il faut utiliser une requête SQL dans le Transformer SQLExecutor.
requête SQL : select (max(ATTRIBUT) + 1) as MAX from TABLE
où dans votre cas, ATTRIBUT = object_id.


Sarah MOURE
Veremes : support FME & version française

Hors ligne

 

#5 Thu 10 September 2009 20:20

topoman
Participant occasionnel
Date d'inscription: 22 Apr 2009
Messages: 19

Re: shape vers table postgis avec contraintes

ok, très simple ... mais j'avais un doute car les indices ne se suivent pas mais sont dans un ordre croissant ! est-ce normal ?

A noté que je dispose de plusieurs tables spatiales qui disposent de cet indice. ne faut-il pas trouver l'indice le plus grand dans toute la BD ?

Je teste cela demain je vous tiens au courant.

merci.

Hors ligne

 

#6 Fri 11 September 2009 12:30

topoman
Participant occasionnel
Date d'inscription: 22 Apr 2009
Messages: 19

Re: shape vers table postgis avec contraintes

tout fonctionne !!!!

récapitulatif :

1/ récupération de l'id_bdcarto à l'aide des transformers : InsidePointReplacer puis PointOnAreaOverlayer

2/ création de l'object_id à l'aide des transformers : SQLExecutor puis COUNTER

Encore merci.

Bon WEEK.

Hors ligne

 

Pied de page des forums

Powered by FluxBB