190 likes | 303 Views
<Insert Picture Here>. 3 Chargement et Indexation. Sources de données géo-spatiales. Données applicatives Clients, magasins, entrepôts, agences, etc. Il faut les géocoder avant de pouvoir s'en servir Référentiel de géocodage et calcul Réseau routier, adresses
E N D
<Insert Picture Here> 3 Chargement et Indexation
Sources de données géo-spatiales • Données applicatives • Clients, magasins, entrepôts, agences, etc. • Il faut les géocoder avant de pouvoir s'en servir • Référentiel de géocodage et calcul • Réseau routier, adresses • Souvent fournies par Navteq ou Tele Atlas, … • Autres données (vecteur et raster) • Limites administratives, occupation du sol, points d'intérêt, … • Multiples sources (IGN, etc)
Format des données géo-spatiales Chaque outil SIG utilise son ou ses formats propres • ESRI: shape files, coverages • MapInfo: TAB files, MIF/MID • Intergraph: DGN files • Autodesk: DWG files • Etc ...
! Chargement des données Géo-spatiales • Au moyen des outils fournis avec les outils SIG • Au moyen d'outils génériques • FME (Safe Software) http://www.safe.com • CITRA (CISS TDI) http://www.ciss.de/ • Pour les fichiers SHAPE: convertisseur SHP2SDO • Oracle Mapbuilder • Au moyen de SQL*Loader • Les données doivent être formatées au préalable Charger les données avant de créer l’index spatial.
Utilisation de SQL*Loader Control file Data files Parameter file(optional) SQL*Loader Rejected Field processing Accepted Discarded Record selection Bad file Selected Oracle Server Rejected Discard file (optional) Inserted Log file Database files
SQL*Loader pour des Points LOAD DATA INTO TABLE cities FIELDS TERMINATED BY '|' ( CITY, STATE_ABRV, POP90, RANK90, LOCATION COLUMN OBJECT ( SDO_GTYPE INTEGER EXTERNAL, SDO_POINT COLUMN OBJECT ( X FLOAT EXTERNAL, Y FLOAT EXTERNAL ) ) ) New York|NY|7322564|1| 2001|-73.943849000|40.669800000| Los Angeles|CA|3485398|2| 2001|-118.411201000|34.112101000| Chicago|IL|2783726|3| 2001|-87.684965000|41.837050000| Houston|TX|1630553|4| 2001|-95.386728000|29.768700000| Philadelphia|PA|1585577|5| 2001|-75.134678000|40.006817000| San Diego|CA|1110549|6| 2001|-117.135770000|32.814950000|
Applications spécifiques • Verbes SQL INSERT standards • Utiliser des variables (pas des constantes) • Faire des commit réguliers • Utiliser des insertions par lots (array insert) pour de meilleures performances • Conserver l'état d'avancement du chargement Les insertions sont plus rapides sans index spatial Grouper les insertions en lots (finir par COMMIT) INSERT INTO lines (id, … type, shape) VALUES (:id, … :type, :my_geom);
Convertisseur Shapefile : SHP2SDO • Traite un fichier SHAPE à la fois • Convertit les attributs (.DBF) aussi bien que les géométries (.SHP et .SHX) • Génère des scripts SQL pour la création de la table, la mise à jour des meta-données spatiales, et la création de l'index spatial. • Génère les fichiers pour SQL*Loader: control file et data file
Utilisation du convertisseur shp2sdo <shapefile> <table-name> -g <geometry-col> -i <id-col> -x (<Xmin>,<Xmax>) -y (<Ymin>,<Ymax>) -s <srid> -t <tolerance> • <shapefile> = nom du shapefile à convertir (sans inclure le suffixe .SHP) • <table-name> = nom de la table en sortie (aussi préfixe des fichiers produits) • -g <geometry-col> = nom donné à la colonne géométrique • -i <id-col> = nom donné à une colonne numérique servant d'identifiant unique
Validation des données • Les données peuvent contenir des erreurs • Polygones « self-crossing » • Points redondants • Erreur d'orientation (polygones) • Pas de vérification automatique ! • Certains outils acceptent certaines erreurs ... • Certains demandent des données sans erreurs. • Utiliser les fonctions de validation fournies
Validation des données • Fonction SDO_GEOM.VALIDATE_GEOMETRY • Détermine la validité d'un objet isolé • Procédure SDO_GEOM.VALIDATE_LAYER • Détermine la validité de tous les objets d'une table • Chaque fonction retourne un diagnostic précis (code erreur ORA-13xxx) • Les variantes VALIDATE_GEOMETRY_WITH_CONTEXTet VALIDATE_LAYER_WITH_CONTEXTindiquent en plus à quel endroit se trouve l'erreur dans l'objet.
Exemple de validation automatique create or replace trigger counties_geom before insert or update of geom on counties for each row declare status varchar2(10); begin if :new.geom is not null then status := sdo_geom.validate_geometry (:new.geom, 0.5); if status <> 'TRUE' then raise_application_error (-20000, sqlerrm (-status)); end if; end if; end; /
! a b c d Indexation Spatiale root • Indexation R-tree • Arborescence de rectangles (MBR) • Indexation en 2 ou 3 dimensions • Indexation Quad-tree • Utilisation d'une grille régulière • Plus documentée en 10g • Ne plus utiliser • Sauf exceptions …. • Un index spatial doit exister avant de pouvoir poser des requêtes spatiales sur une table! R S
Création d'un index R-tree create index CUSTOMERS_SIDX on CUSTOMERS (LOCATION) indextype is MDSYS.SPATIAL_INDEX; Index Information Table MDRT_7B50$
Syntaxe pour la création d'index CREATE INDEX <index-name> ON <table-name> (<column-name>) INDEXTYPE IS MDSYS.SPATIAL_INDEX [PARAMETERS ( 'SDO_RTR_PCTFREE = <param_value> <storage_parameters> = <param_value> ... ‘) ] [PARALLEL [<parallel_degree>]]; • Créer un index spatial est plus long que créer un index "normal" • Dépend du nombre et de la complexité des objets.
Export/Import • Export • Permet le déchargement de tables ou de groupes de tables • Pas de syntaxe particulière pour les tables spatiales • Les méta-données (USER_SDO_GEOM_METADATA) sont seulement extraites si la table est indexée. • Import • Permet le rechargement de données exportées par EXPORT • Pas de syntaxe particulière pour les tables spatiales • Si la table est indexée: restaure les méta-données et re-crée l'index spatial