3 chargement et indexation. points couverts formats des données géo-spatiales chargement des...
TRANSCRIPT
<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. !
Database files
Data filesControl file
SQL*Loader
Log file
Inserted
Selected
Utilisation de SQL*Loader
Parameter file(optional)
Rejected
Bad file
Rejected
Accepted
Discard file(optional)
Discarded
Field processing
Record selection
Oracle Server
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
• <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
shp2sdo <shapefile> <table-name> -g <geometry-col> -i <id-col> -x (<Xmin>,<Xmax>) -y (<Ymin>,<Ymax>) -s <srid> -t <tolerance>
Mapbuilder
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_CONTEXT et VALIDATE_LAYER_WITH_CONTEXT indiquent 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 rowdeclare 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;/
Radius Check
Indexation Spatiale
• 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! !
a b c d
R S
root
Création d'un index R-tree
create index CUSTOMERS_SIDX on CUSTOMERS (LOCATION) indextype is MDSYS.SPATIAL_INDEX;
Table MDRT_7B50$
Index Information
Syntaxe pour la création d'index
• Créer un index spatial est plus long que créer un index "normal"
• Dépend du nombre et de la complexité des objets.
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>]];
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