FME Professional Suite



Documents pareils
PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Les Géodatabases en 9.2

Chapitre 1 : Introduction aux bases de données

Bases de Données relationnelles et leurs systèmes de Gestion

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Compétences Business Objects

Didacticiel de mise à jour Web

Les nouveautés de FME 2014

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Le Langage SQL version Oracle

SQL Historique

Mémo d'utilisation de BD Dico1.6

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

PRODIGE V3. Manuel utilisateurs. Consultation des métadonnées

Cadastre du bruit SIT-JURA. Connecteur Arcview9.x - MSAccess. Mode d emploi. Appel formulaire. Page 1 sur 15

14/04/2014. un ensemble d'informations sur un sujet : exhaustif, non redondant, structuré, persistant. Gaëlle PERRIN SID2 Grenoble.

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Le Langage De Description De Données(LDD)

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

Bases de données relationnelles

Langage SQL : créer et interroger une base

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Bases de Données. Plan

Présentation du module Base de données spatio-temporelles

Compte-rendu de projet de Système de gestion de base de données

A QUOI SERVENT LES BASES DE DONNÉES?

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Notes de cours : bases de données distribuées et repliquées

TP Contraintes - Triggers

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Gestion des documents associés

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Application web de gestion de comptes en banques

Création et Gestion des tables

Les bases de données

I. MySQL : Serveur et SGBD

Département Génie Informatique

Historisation des données

Glossaire. base de données géographiques Voir géodatabase (GDB).

Structure fonctionnelle d un SGBD

Mise en place d'un serveur d'application SIG au Conseil général de Seine-et-Marne

Implémentation des SGBD

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

Introduction au Système de Gestion de Base de Données et aux Base de Données

Optimisations des SGBDR. Étude de cas : MySQL

INTRODUCTION : Données structurées et accès simplifié

Chapitre 10. Architectures des systèmes de gestion de bases de données

Cours: Administration d'une Base de Données

Phone Manager Soutien de l'application OCTOBER 2014 DOCUMENT RELEASE 4.1 SOUTIEN DE L'APPLICATION

Matérialiser les données d une BdD : créer une carte de densité de points par maillage

Le langage SQL Rappels

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Cours: Les Jointures 1

PHP 5. La base de données MySql. A. Belaïd 1

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

TP3 : Creation de tables 1 seance

Chapitre 07 Le modèle relationnel des données

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Cours 6. Sécurisation d un SGBD. DBA - M1ASR - Université Evry 1

MySQL / SQL EXEMPLES

INTRODUCTION GENERALE...1 LA CONNEXION ODBC :...1. CONNEXION AU TRAVERS D EXCEL(tm)...6. LOGICIEL QUANTUM GIS (Qgis)... 10

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

AGRÉGATION «ÉCONOMIE ET GESTION»

1. Base de données SQLite

MEDIAplus elearning. version 6.6

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

ORACLE TUNING PACK 11G

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

8 - Import-Export de données

Gestion des utilisateurs et de leurs droits

STATISTICA Version 12 : Instructions d'installation

Mysql. Les requêtes préparées Prepared statements

SQL Serveur Programme de formation. France Belgique Suisse - Canada. Formez vos salariés pour optimiser la productivité de votre entreprise

Utiliser Access ou Excel pour gérer vos données

TP Bases de données réparties

Stockage du fichier dans une table mysql:

Raja Bases de données distribuées A Lire - Tutoriel

Intégration ESRI - SAP Geo-Enablement de l ERP SAP Exemple : GEO.e. Christophe Lapierre Enrique Yaptenco Professional Services - ESRI Suisse

Cours Bases de données 2ème année IUT

SYSTÈME DE GESTION DE FICHIERS

ArcGIS 10.1 for Server

Partie II Cours 3 (suite) : Sécurité de bases de données

Devoir Data WareHouse

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Cours Bases de données 2ème année IUT

Auguria_PCM Product & Combination Manager

SYSTÈME DE GESTION DE FICHIERS SGF - DISQUE

ACCECIA Avenue André Malraux, ZI de Cana BRIVE LA GAILLARDE Tél : +33 (0) Fax +33 (0)

CONNECTEUR PRESTASHOP VTIGER CRM

Olivier Mondet

Connexion à une base de données. Connexion à une base de données. Connexion à une base de données Développement d'une application

Transcription:

FME Professional Suite Fiche technique VEREMES www.veremes.com Page : 1 / 26

Table des matières 1. Chargement initial... 3 1.1 Choix d'un identifiant... 3 1.1.1 Identifiants internes du format... 3 1.1.2 Numérotation des objets par FME... 3 1.1.3 Numérotation des objets par une séquence externe (Oracle, Postgresql...)... 4 1.1.4 Identifiants non séquentiels... 6 1.1.5 Localisant... 7 1.1.6 Coordonnées MGRS... 9 1.2 Qualité de la géométrie... 9 1.3 Validation... 10 2. Chargement incrémental...11 2.1 Identification des opérations à effectuer... 11 2.1.1 Existence d'un identifiant dans la base de référence et la base révisée... 11 2.1.2 Absence d'identifiant dans la base révisée... 13 2.2 Ecriture... 18 2.2.1 Format Oracle 10g/9i/8i Spatial (Object)... 18 2.2.2 ESRI ArcSDE (SDE 3)... 19 2.2.3 ESRI Geodatabase (ArcSDE)... 21 2.2.4 ESRI Geodatabase (MDB)... 23 3. Autres Transformers utiles...24 3.1.1 TimeStamper... 24 3.1.2 CoordinateRounder... 24 3.1.3 Selfintersector... 24 4. Exercices...25 4.1 Chargement incrémental avec identifiant dans les deux bases... 25 4.2 Chargement incrémental sans identifiant dans la base révisée... 25 4.3 Chargement incrémental avec ArcSDE... 26 4.4 Mise en production... 26 Page : 2 / 26

1. Chargement initial 1.1 Choix d'un identifiant La présence d'un identifiant est indispensable pour stocker les relations entre objets mais aussi pour permettre le chargement différentiel (incrémental). Ce problème n'est pas propre à l'information géographique mais les objets non géographiques ont généralement un attribut identifiant alors que ce n'est pas toujours le cas pour les objets cartographiques. Parmi la vingtaine de couches présentes dans le cadastre numérique délivré par la DGI (Direction Générale des Impôts) seules les couches Parcelle, Section et Commune disposent d'un identifiant et encore s'agit-il d'un identifiant relatif propre au fichier contenant l'information. La couche bâtiment est un bon exemple de couche du cadastre avec des attributs mais sans identifiant. 1.1.1 Identifiants internes du format De nombreux formats attribuent automatiquement un identifiant à chaque objet stocké. C'est le cas de l'objectid des geodatabases, ENTITY_HANDLE (autocad) et OID (POstgresql) Ces attributs présentent l'inconvénient majeur d'être créés au moment de l'écriture de l'objet dans la base. Il n'est donc pas possible d'écrire dans une même transaction deux objets en relation en utilisant l'objectid d'un objet comme clef étrangère de l'autre. L'écriture de ces champs étant strictement réservé au système interne, il n'est pas possible de retrouver le même état de la base de données si l'on est amené à restaurer la base à partir d'un fichier d'export (DUMP). En résumé, si l'on souhaite bâtir un système de mise à jour sur les identifiants internes du format, il est nécessaire de rester strictement dans le cadre d'utilisation du logiciel propriétaire ou de ne pas gérer de relations entre objets. Usage Absence de relation entre objets Environnement limité au logiciel propriétaire 1.1.2 Numérotation des objets par FME Il est possible d'attribuer un numéro à chaque objet dans FME en utilisant le Transformer COUNTER. Page : 3 / 26

Le Transformer Counter Inconvénient Le même numéro peut-être attribué autant de fois que le script est exécuté. Usage Chargement complet de type "Annule et remplace" 1.1.3 Numérotation des objets par une séquence externe (Oracle, Postgresql...) C'est le moyen le plus efficace s'il est utilisé correctement. Il s'agit d'associer à chaque objet un numéro tiré d'une séquence gérée par une application tierce, Oracle par exemple. Le gestionnaire de séquence peut-être sollicité par différents applicatifs. Il garantit l'unicité des numéros attribués. Procédure de récupération dans fme Extraction d'un numéro de séquence Oracle Page : 4 / 26

Configuration de SQLEXECUTOR Page : 5 / 26

Configuration de AttributeCreator Problèmes classiques Droit sur la séquence Respect de la casse dans FME 1.1.4 Identifiants non séquentiels Identifiant non numérique (hexadécimal) créé à partir de la date et de l'heure de traitement + numéro de séquence. Ce type d'identifiant résout le problème du compteur interne (COUNTER) puisque le même traitement appliqué deux fois de suite au même jeu de données produit bien des identifiants différents. FME propose deux mode de création d'identifiants non séquentiels : GOIDGENERATOR et UUIDGENERATOR. GOIDGENERATOR Calcule un GOID (Identifiant d'objet Géographique) pour chaque entité entrant dans le Transformer et l'affecte à ATTRIBUT _goid (par defaut). Le GOID est un nombre unique codé sur 128 bits calculé notamment à partir de la position de l'entité. Page : 6 / 26

Le résultat est une valeur unique qui peut être utilisée pour distinguer différentes entités entre elles. Les 128 bits du GOID sont représentés sous la forme d'une chaîne ASCII de 32 caractères hexadécimaux. Les 16 premiers caractères correspondent à la position, les 10 caractères suivants à l'heure et les 4 derniers à une séquence de nombre. Ce Transformer est équivalent à UUIDGenerator qui génère un identifiant unique indépendamment de la position des entités. UUIDGENERATOR Calcule un identifiant unique UUID (Universally Unique Identifier - Identifiant Universel Unique) pour chaque entité en entrée et stocke le résultat dans un nouvel attribut dont le nom est défini par le paramètre ATTRIBUT UUID. L'identifiant universel unique est construit avec une chaîne de caractère constituée de 8 chiffres hexadécimaux, suivi d'un trait d'union, suivi de trois groupes de quatre chiffres hexadécimaux, chaque groupe étant suivi d'un trait d'union, suivi de 12 chiffres hexadécimaux. la chaîne fait 36 bits de long. L'identifiant universel unique se présente comme suit : 7672aac8-fa0b-464c-b0b8-3efa9ae9cd86 Problèmes Codage sur une chaîne longue Pas facile à manipuler pour un opérateur 1.1.5 Localisant Dans certains cas, il est intéressant de disposer d'un identifiant qui fournisse des informations sur la localisation des objets. On peut construire un localisant par concaténation du X et du Y du centroid de l'objet. Page : 7 / 26

Chaîne de production d'un localisant Page : 8 / 26

Problème Le localisant n'est pas forcement unique (dépend de la précision des coordonnées). 1.1.6 Coordonnées MGRS LatLongToMGRSConverter (FME 2006 GB) Calcule le code MGRS (Military Grid Reference System) d'un point à partir des valeurs de latitude et de longitude provenant des attributs de l'entité. La granularité du code résultant est déterminée par le NIVEAU DE PRECISION (entier de 0 à 5 inclus). Une précision de niveau 5 permet de localiser un point dans un carré de 1 m2. Le niveau 0 correspond à un carré de 100 km2. Le résultat du calcul est stocké dans un nouvel attribut CODE MGRS. Le code MGRS est un moyen simple pour identifier un point avec une seule valeur. Exemple de valeurs renvoyées pour différentes précisions et types d'écriture pour le point de longitude : 1 E (-1) et de latitude : 45 N (45). Avec un niveau de précision : 5 Ecriture WGS84 : 38MND0000089469 Ecriture Bessel : 38MNP0000089469 Avec une niveau de précision : 0 Ecriture WGS84 : 38MND Ecriture Bessel : 38MNP Problème C'est un bon localisant au niveau mondial mais un mauvais identifiant qui ne garantit pas du tout l'unicité de la valeur renvoyé. Coordonnées CHASSE : Système comparable utilisé par la défense et les services de secours. 1.2 Qualité de la géométrie Des problèmes peuvent intervenir au moment du chargement des données ou de leur utilisation car les BD Spatiales utilisent une précision de stockage inférieure à celle des fichiers. Suite à la perte de précision on peut obtenir un géométrie invalide : - deux vertex d'un polygones se touchent - deux vertex successifs d'une ligne ou d'un polygone se superposent. Les problèmes interviennent différemment selon les SGBD. En général au moment du chargement avec ArcsDE, plutôt au moment de l'utilisation avec Oracle Spatial. Le Transformer CoordinateRounder permet de prévenir ce problème en simulant la perte de précision au cours du traitement. Pour régler ce type de problème, il faut associer CoordinateRounder à CoordinateCounter pour vérifier qu'un polygone est constitué d'au moins trois vertex et une ligne d'au moins deux vertex. Page : 9 / 26

SelfInterSector permet de détecter et corriger les papillons (polygones croisés ou dont les vertex internes se touchent). 1.3 Validation La fonction VALIDATE_GEOMETRY_WITH_CONTEXT d'oracle permet de vérifier la qualité des données géométriques d'une table : SELECT * FROM (SELECT SUBSTR(c.SDF_ID,1,15) as SDF_ID, SDO_GEOM. VALIDATE_GEOMETRY_WITH_CONTEXT (c.geom, m.diminfo) as RESULT FROM RUES c, user_sdo_geom_metadata m WHERE m.table_name = 'RUES' AND m.column_name = 'GEOM') WHERE RESULT<>'TRUE'; Error ORA-13356 ORA-13349 ORA-13367 Reported Possible Causes and Corrective Actions Adjacent repeated points in a geometry are redundant. Tolerance may be set too coarsely. Making tolerance finer may fix the error. Points may truly be repeated. Remove duplicate vertices. Polygon boundary crosses itself. Tolerance may be set too coarsely. Making the tolerance finer may fix the error. Polygon truly self intersects. Fix the polygon by ensuring that no edges intersect. Wrong rotation for interior/exterior rings. Correct the rotation of the polygon ring. Outer rings should be counterclockwise, inner rings clockwise. Oracle Spatial Best Practices - An Oracle Technical White Paper (December 2003) Page : 10 / 26

2. Chargement incrémental Le chargement incrémental permet de mettre à jour une base de référence à partir des informations contenues dans base révisée stockée le plus souvent sous forme de fichier. La base de référence correspond à un état à jour de la totalité des enregistrements et des attributs à une date T0. La base révisée contient généralement moins d'attributs ou de lignes que la base de référence, sinon il est généralement préférable de refaire un chargement de type "annule et remplace". La base révisée peut prendre deux formes : - base complète - delta ou différentiel La base de type différentiel ne contient que les enregistrements ayant subi des modifications par rapport à la base de référence. Chaque enregistrement doit disposer d'un marqueur permettant de connaître le type de modification : suppression, mise à jour ou insertion (création). Ce marqueur peut prendre la forme de deux attributs "date de mise à jour" et "suppression". Quelque soit le type de base révisée, le problème du chargement incrémental se résume à deux opérations : - La détection de l'opération à effectuer pour chaque enregistrement (création/mise à jour/suppression) - l'écriture de l'opération dans la base de référence. 2.1 Identification des opérations à effectuer Le problème est d'associer à chaque enregistrement un des types suivants : création, mise à jour, suppression. 2.1.1 Existence d'un identifiant dans la base de référence et la base révisée La présence d'un identifiant dans les deux jeux de dtonnées, référence et révisé, permet de distinguer facilement les trois types d'enregistrements en utilisant les Transformers ChangeDetector ou FeatureMerger. FeatureMerger est le plus pratique. Page : 11 / 26

Distinction des types d'enregistrements avec FeatureMerger Paramètres de FeatureMerger Remarque Dans le cas précédent, on recharge en mode mise à jour tous les enregistrements qui n'ont pas été modifiés. Le résultat est correct mais pas très élégant et il peut surtout être très consommateur en ressources. Il est possible de limiter ce problème si un champ date de mise à jour ou un indicateur quelconque permet d'identifier les enregistrements non modifiés. Page : 12 / 26

Utilisation d'un indicateur de modification 2.1.2 Absence d'identifiant dans la base révisée En l'absence d'identifiant, on peut utiliser la géométrie de l'objet comme moyen de comparaison. Il est préférable d'éviter cette technique car elle ne permet pas, par définition, de mettre à jour la géométrie d'un objet ( mais le remplacement est possible) et elle est assez coûteuse en temps de calcul. Il existe plusieurs Transformers permettant de comparer directement la géométrie de plusieurs objets (ChangeDetector, Matcher) ou de la réduire à une chaîne de caractère (CRCCalculator, OGCGeometryExtractor ) qui peut à son tour être facilement comparée à une autre. Le problème principal provient du fait que les bases de référence et révisée sont généralement stockées dans deux formats différents offrant des précisions différentes. C'est typiquement le cas lorsque la base de référence est stockée dans Oracle ou ArcSDE et la base révisée dans un fichier (shp, tab...). Il est donc nécessaire d'intégrer une tolérance dans les calculs d'égalité entre géométries (ChangeDetector) ou bien de réduire les deux jeux de données à la même précision (CoordinateRounder). ChangeDetector ChangeDetector permet de comparer deux jeux de données sur des critères géométriques et/ou attributaires. Page : 13 / 26

Avantages de ChangeDetector Permet une comparaison non stricte entre les géométries en utilisant deux critères de tolérance. L'emplacement des vertex peut ainsi légèrement différer entre les deux bases et la base révisée peut contenir des vertex supplémentaires. Inconvénients de ChangeDetector Seul le paramètre EXTRA_VERTEX_TOLERANCE est présenté dans le Transformer ChangeDetector. Il est nécessaire d'éditer le fichier de contrôle ".fme" pour accéder au second INTERIOR_VERTEX_TOLERANCE. Cf. doc de MatchingFactory. Permet de gérer les insertion et les suppression mais pas les mises à jour car on ne dispose pas de l'identifiant de l'objet dans la base. Les tests de comparaison de géométries légèrement différentes ne sont pas très probants. CRCCalculator Calcule une valeur de CRC (Contrôle de Redondance Cyclique) à partir des caractéristiques de l'entité et stocke le résultat dans un nouvel attribut. Il est possible de calculer le CRC à partir de la géométrie, de certains attributs ou des deux. La valeur de CRC calculée est identique pour toutes les entités ayant les mêmes attributs sélectionnés et (éventuellement) la même géométrie. Le CRC est une chaîne de caractère (Hexa) correspondant à un entier sur 32 (calcul sur la géométrie ou les attributs) ou 64 bits (calcul sur géométrie + attributs). L'objectif du CRC est de fournir un moyen simple pour savoir si un objet a évolué. Il ne s'agit pas d'un identifiant unique sur l'ensemble d'une base. Page : 14 / 26

Avantages Il peut être utilisé en conjonction avec FeatureMerger pour identifier les trois types d'enregistrements (création, mise à jour, suppression). Dans ce cas FeatureMerger permet de récupérer l'identifiant de l'enregistrement de référence et ainsi de le mettre à jour. Inconvénients Très sensible aux variations de géométrie. Il ne permet de comparer que des géométries parfaitement égales. En cas de variation, il est nécessaire de réduire la précision avec CoordinateRounder. Le CRC n'est pas forcement unique et ne peut être utilisé comme identifiant sur des volumes de données importants. Page : 15 / 26

Exemple de traitement avec CoordinateRounder, CRCCalculator et FeatureMerger. Jointure Spatiale dans FME La seule technique totalement efficace consiste à faire une jointure spatiale entre la base de référence et la base révisée. Le Transformer SpatialRelator est l'opérateur générique de jointure spatiale. Selon les cas on peut envisager utiliser d'autres Transformers tels que PointOnAreaOverlayer ou NeighborFinder. Le plus naturel est d'utiliser SpatialRelator avec l'opérateur "EGAL" mais dans ce cas la comparaison est stricte ce qui peut poser des problèmes en cas de différence de précision entre les deux formats en entrée. Il est alors nécessaire d'utiliser préalablement CoordinateRounder. Page : 16 / 26

Identification des changements par jointure spatial La première jointure est faite avec les entités révisées qui arrivent par le port Base de SpatialRelator et les entités de Référence par le port Candidate. Le Transformer Tester (Nombre de candidat retenu = 0) permet de distinguer deux catégories d'objets : les objets à mettre à jour (update) et les objets à créer (insert). Pour identifier les objets supprimés, il est nécessaire de faire une deuxième jointure spatiale en inversant les entités Base et Candidate. Le Transformer Tester (Nombre de candidat retenu = 0) permet d'identifier les objets à supprimer. Inconvénients Nécessite le chargement de toutes les entités de la base dans FME et une double jointure spatiale qui peut être coûteuse en temps de calcul. L'utilisation de CoordinateRounder entraîne une perte de précision de la géométrie des objets à charger. Pour être rigoureux, il est nécessaire de retrouver la géométrie d'origine avant le chargement en utilisant Counter (avant CoordianteRounder) puis FeatureMerger. Jointure Spatiale dans la base de Données Les Transformers OracleQuerier et ArcSDEQuerier permettent de faire une jointure spatiale dans la base de données plutôt que dans FME. Cette technique peut sembler plus performante car elle évite le chargement de toute la base de référence dans FME. Les problèmes sont les suivants : - Cette technique ne permet pas de détecter les suppressions - Le traitement effectué par OracleQuerier est réalisé sur l'emprise des objets et non sur les objets euxmêmes (limitation de FME?) - OracleQuerier est extrêmement lent (bug de FME?). Page : 17 / 26

2.2 Ecriture L'écriture des mises à jour dans la base de référence dépend de chaque type de base de données car les modules d'écritures (writer) de FME peuvent varier sensiblement d'un format à l'autre. Le principe général reste cependant le même. Il est nécessaire de créer trois jeux de données du même format en écriture : un pour l'insertion, le second pour la mise à jour et le dernier pour les suppressions. Chaque type d'entité destination ne peut en effet être utilisé que dans un des trois modes et il est impossible d'utiliser deux types d'entités de même nom dans le même jeu de données. Extrait de l'onglet Projet d'un projet fmw de mise à jour 2.2.1 Format Oracle 10g/9i/8i Spatial (Object) Avec le module d'écriture Oracle 10g/9i/8i Spatial (Object), il est possible de spécifier le mode d'écriture (insert, update, delete) pour chaque type d'entité destination, dans l'onglet "Paramètres". Onglet "Paramètres" d'un type d'entité destination Oracle Spatial Par défaut, l'écriture s'effectue en mode "insertion". Pour forcer le mode "mise à jour", il est nécessaire de spécifier le nom des attributs identifiants dans le paramètre "Update Key Columns". Page : 18 / 26

Pour forcer le mode "suppression", il est nécessaire de spécifier le nom des attributs identifiants dans le paramètre "Delete Key Columns". Seul l'un des paramètres "Update Key Columns" et "Delete Key Columns" peut être spécifié. Remarque : le ou les attributs mentionnés dans ces deux paramètres ne sont pas forcément des clefs primaires. Il s'agit plutôt des attributs utilisés dans la clause "Where" de la requête sql de mise à jour ou de suppression. Il n'est possible de passer en mode "mise à jour "ou "suppression" que si le paramètre "Create table" vaut "Non", ce qui est compréhensible : la table doit déjà avoir été créée. Le module de lecture Oracle permet de spécifier si la géométrie doit être mise à jour avec les attributs (paramètre "Mettre à jour la géométrie"). Cette option n'est pas disponible dans tous les formats de base de données. 2.2.2 ESRI ArcSDE (SDE 3) Le format ESRI ArcSDE n'offre que deux modes : Insertion et mise à jour. La suppression doit être faite par l'intermédiaire d'un transformer spécifier ArcSDEQuerier. Insertion/Mise à jour Le mode d'écriture est défini au niveau du jeu de données par le paramètre "Mode d'écriture". Page : 19 / 26

Choix du mode d'écriture du jeu de données Il est de plus nécessaire de spécifier pour chaque type d'entité destination le nom de l'attribut identifiant. Définition de l'identifiant du type d'entité Suppression Pour supprimer une entité avec le module d'écriture Esri ArcSDE, il est nécessaire d'utiliser le Transformer ArcSDEQuerier avec les paramètres suivants : Mode de requête : suppression Méthode recherche : SDE_NONE (pas de recherche spatiale) Clause Where : utiliser le préfixe & pour faire référence à la valeur d'un attribut. Par exemple ID_SEQUENCE=&ID_SEQUENCE Page : 20 / 26

2.2.3 ESRI Geodatabase (ArcSDE) Le format ESRI Geodatabase (ArcSDE) offre les trois modes d'écriture. L'utilisation du transformer ArcSDEQuerier est donc inutile pour la suppression et peut-être même inefficace (compatibilité avec le format Geodatabase à tester...). Insertion/Mise à jour/suppression Le mode d'écriture est défini au niveau du jeu de données par le paramètre "Mode d'écriture". Page : 21 / 26

Choix du mode d'écriture du jeu de données Il est de plus nécessaire de spécifier pour chaque type d'entité destination le nom de l'attribut identifiant. Page : 22 / 26

Définition de l'identifiant du type d'entité 2.2.4 ESRI Geodatabase (MDB) Le principe et les paramètres sont les mêmes que pour le format Esri Geodatabase (ArcSDE) Page : 23 / 26

3. Autres Transformers utiles 3.1.1 TimeStamper Permet de calculer la date du chargement. Exemple de paramètres ^Y^m^d^H^M renvoie une date sous la forme 200608301957 ^c renvoie la date système par defaut. En général pour la France 08/30/06 20:00:08 3.1.2 CoordinateRounder Egalement intéressant pour le chargement. Permet d'éviter les problèmes de rejet dus à la perte de précision du SGBD lorsque les données sont de mauvaise qualité. 3.1.3 Selfintersector Détecte et corrige les géométrie aberrantes de type papillon et découpant l'objet en plusieurs. Page : 24 / 26

4. Exercices 4.1 Chargement incrémental avec identifiant dans les deux bases Charger le fichier exercices\chargement_inc\data\aeptroncon_ref.shp dans une base Oracle Spatial et vérifier le résultat avec FME-Viewer. Sauvegarder ce projet sous le nom chargement_aeptroncon.fmw 1. 2. Avec SQLPlus ou éventuellement FME, créer un index de type Primary Key ALTER TABLE AEPTRONCON_REF ADD CONSTRAINT PK_AEPTRONCON PRIMARY KEY (AEPTRONCON) 3. Mettre à jour la table AEPTRONCON_REF à partir du fichier exercices\chargement_inc\data\aeptroncon_rev.shp. Sauvegarder ce projet sous le nom mise-a-jour_aeptroncon.fmw 4. Combien d'objets on été supprimés ou ajoutés? 4.2 Chargement incrémental sans identifiant dans la base révisée 1. Avec SQLPlus, créer un séquence Oracle SEQ_FME --Script de création de séquence CREATE SEQUENCE SEQ_FME; 2. Charger le fichier exercices\chargement_inc\data\adraxevoie_ref.shp dans une base Oracle Spatial en ajoutant deux attributs identifiants : ID_SEQUENCE doit provenir de la séquence SEQ_FME GOID doit provenir du Transformer GOIDEXTRACTOR. Sauvegarder ce projet sous le nom chargement_adraxevoie.fmw 3. vérifier le résultat avec FME-Viewer 4. Avec SQLPlus ou éventuellement FME, créer un index de type Primary Key ALTER TABLE ADRAXEVOIE_REF ADD CONSTRAINT PK_ADRAXEVOIE PRIMARY KEY (ID_SEQUENCE) 5. Mettre à jour la table ADRAXEVOIE _REF à partir du fichier exercices\chargement_inc\data\ ADRAXEVOIE_REV.shp en utilisant : CoordinateRounder (précision = 1) SpatialRelator Tester Sauvegarder ce projet sous le nom mise-a-jour_adraxevoie.fmw 6. vérifier le résultat avec FME-Viewer. 7. Combien d'objets on été supprimés ou ajoutés? 8. Modifier le projet pour charger la géométrie réelle des objets de la base révisée (sans perte de précision). Page : 25 / 26

9. Tous les objets de la base révisée sont rechargés dans la base de référence, même s'il n'ont pas été mis à jour. Comment peut-on éviter ce rechargement inutile? Le faire... 4.3 Chargement incrémental avec ArcSDE Reprendre les exercices précédent en utilisant le format Esri ArcSDE ou Esri Geodatabase (ArcSDE) en sortie à la place du format Oracle Spatial. 4.4 Mise en production Modifier le résultat de l'exercice n 1 (mise-a-jour_aeptroncon.fmw) pour le mettre en production en mode graphique ou console. 1. Définir la liste des paramètres à publier en mettant en facteur les valeurs communes. On considère que les utilisateurs et mot de passe en lecture et écriture sont les mêmes. Paramètres à publier : Instance Oracle Utilisateur Mot de passe Base révisé (shp) 2. Tester en mode graphique (Universal Translator) et console (fme.exe). 3. Créer un script tcl pour lancer le traitement en mode console et le fichier.bat correspondant. Page : 26 / 26