170 likes | 293 Views
<Insert Picture Here>. 2 Structures de données Le Type Géométrique. Création de tables spatiales. Utiliser le type SDO_GEOMETRY Pas de limite au nombres de colonnes géométriques par table La colonne peut contenir n'importe quel type de géométrie. SQL> CREATE TABLE Cells (
E N D
<Insert Picture Here> 2 Structures de données Le Type Géométrique
Création de tables spatiales • Utiliser le type SDO_GEOMETRY • Pas de limite au nombres de colonnes géométriques par table • La colonne peut contenir n'importe quel type de géométrie SQL> CREATE TABLE Cells ( 2> Cell_id NUMBER, 3> Cell_name VARCHAR2(32), 3> Cell_type NUMBER, 4> Location SDO_GEOMETRY, 5> Covered_area SDO_GEOMETRY);
Primitives Géométriques Point Line string Self-crossingline strings Arc line string Compound line string Valid Polygon Polygon with hole Self-crossingpolygons Compound polygon Optimized polygons Not valid
Couche Geometrie Geometrie Geometrie Element Element Element Point Ligne Polygone Éléments, géométries, couches, … …… …… …… ……
Élément • Constituant des objets géométriques • Type d'élément: • Point • Ligne • Polygone • Formé d'une suite ordonnée de points Element 5 Element 4 Element 3 Element 2 Element 6 Element 1 Hawaii, USA
Géométrie Geometry 1 California Geometry 2 Texas • Représentent un objet spatial • Formé d'une suite ordonnée d'éléments • Homogène ou hétérogène Geometry 3 Florida Geometry 4 Hawaii
Couche Spatiale • Représente une colonne géométrique dans une table • Une table peut contenir plusieurs colonnes géométriques ! • En général, contient des objets de même nature (= ayant les mêmes attributs) • Couche "clients" (points) • Couche "rues" (lignes) • Couche "communes" (polygones)
Le type SDO_GEOMETRY • Structure de l'objet SDO_GEOMETRY • Exemple d'utilisation SDO_GTYPE NUMBER SDO_SRID NUMBER SDO_POINT SDO_POINT_TYPE SDO_ELEM_INFO SDO_ELEM_INFO_ARRAY SDO_ORDINATES SDO_ORDINATE_ARRAY SQL> CREATE TABLE states ( 2 state VARCHAR2(30), 3 totpop NUMBER(9), 4 geom SDO_GEOMETRY);
Méta-données • Définit les bornes de la couche • Valeurs mini et maxi des coordonnées pour chaque dimension • Définit la tolérance de la couche • Distance maximale entre deux points pour qu'ils soient considérés comme distincts. • Définit le système de coordonnées pour la couche. SQL> INSERT INTO USER_SDO_GEOM_METADATA 2> (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID) 3> VALUES ( 4> 'ROADS', 5> 'GEOMETRY', 6> SDO_DIM_ARRAY ( 7> SDO_DIM_ELEMENT('Long', -180, 180, 0.5), 8> SDO_DIM_ELEMENT('Lat', -90, 90, 0.5)), 9> 8307 );
Construction de géométries SQL> INSERT INTO TELEPHONE_POLES (col-1, …, col-n, geom) 2> VALUES (attribute-1, …, attribute-n, 3> SDO_GEOMETRY ( 4> 2001, 8307, 5> SDO_POINT_TYPE (-75.2,43.7,null), 6> null, null) 7> ); Constructeur standard Constructeur "WKT" Constructeur "WKB" SQL> INSERT INTO TELEPHONE_POLES (col-1, …, col-n, geom) 2> VALUES (attribute-1, …, attribute-n, 3> SDO_GEOMETRY ('POINT (-75.2 43.7)',8307) 7> ); SQL> INSERT INTO TELEPHONE_POLES (col-1, …, col-n, geom) 2> VALUES (attribute-1, …, attribute-n, 3> SDO_GEOMETRY (:my_blob,8307) 7> );
Extraction de géométriesFormat OGC "WKT" (texte) • Ne pas oublier d'utiliser un alias! • Restitue la géométrie dans un CLOB SELECT c.geom.get_wkt() FROM us_counties c WHERE county = ‘Denver'; POLYGON ( (-105.052597 39.791199, -105.064606 39.789928, ... ... -105.024757 39.790947,-105.052597 39.791199), (-104.933578 39.698139, -104.936104 39.698299, ... ... -104.9338 39.696701, -104.933578 39.698139))
Extraction de géométriesFormat OGC "WKB" (binaire) • Ne pas oublier d'utiliser un alias! • Restitue la géométrie dans un BLOB SELECT county, c.geom.get_wkb() INTO :my_blob FROM us_counties c WHERE state_abrv = 'NH'; CREATE TABLE us_counties_wkb AS SELECT county, state_abrv, c.geom.get_wkb() wkb_geom FROM us_counties c;
Extraction de géométriesFormat GML SELECT city, sdo_util.to_gmlgeometry(location) FROM us_cities WHERE state_abrv = 'CO'; <gml:Point srsName="SDO:8307“ xmlns:gml="http://www.opengis.net/gml"> <gml:coordinates decimal="." cs="," ts=" "> -104.872655,39.768035 </gml:coordinates> </gml:Point>
Manipulation de géométries en Java • API java fournie dans le kit Oracle 10g • SDOAPI.JAR • Aussi en téléchargement sur Technet • Peut être distribuée avec vos applications • Comme le driver JDBC • Entièrement supportée • ClasseJGeometry • Méthodesload() et store() • Nombreuses fonctions utilitaires • Lecture et écriture GML • Lecture et écriture Shape Files
Extraction d'information des géométries // Point double gPoint[] = geom.getPoint(); // Element info array int gElemInfo[] = geom.getElemInfo(); // Ordinates array double gOrdinates[] = geom.getOrdinatesArray(); // First and last point double[] gFirstPoint = geom.getFirstPoint(); double[] gLastPoint = geom.getLastPoint(); // MBR double[] gMBR = geom.getMBR(); // Java Shape Shape gShape = geom.createShape();
Construction de géométries // Multi-point JGeometry geom = JGeometry.createMultiPoint( new double[][] {{50,5}, {55,7}, {60,5}}, 2, 8307); // Multi-linestring JGeometry geom = JGeometry.createLinearMultiLineString( new double[][] {{50,15, 55,15}, {60,15, 65,15}}, 2, 8307); // Circle (using 3 points on the circumference) geom = JGeometry.createCircle(15,145, 10,150, 20,150, 8307); // Circle (using a center point and radius) geom = JGeometry.createCircle(10,150, 5, 8307);