plan les bases de données spatiales

25
1 David FAU 1 Les bases de données spatiales PostgreSQL – PostGIS Oracle Spatial David FAU 2 Plan Présentation du cours Module Spatial Géométrie dans PostGIS Indexation de données Requête avec des données spatiales – Outils Géométrie dans Oracle Spatial Indexation de données Requête avec des données spatiales – Outils David FAU 3 Présentation du cours David FAU 4 La cartographie… c’est Lier : – information géométrique – Information attributaire Parcelle de monsieur Dupont 8 rue des mignotes 2000 F/m²

Upload: others

Post on 17-Jun-2022

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Plan Les bases de données spatiales

1

David FAU 1

Les bases de données spatiales

PostgreSQL – PostGISOracle Spatial

David FAU 2

Plan

• Présentation du cours• Module Spatial• Géométrie dans PostGIS

– Indexation de données– Requête avec des données spatiales– Outils

• Géométrie dans Oracle Spatial– Indexation de données– Requête avec des données spatiales– Outils

David FAU 3

Présentation du cours

David FAU 4

La cartographie…c’est

• Lier : – information géométrique

– Information attributaire

Parcelle de monsieur Dupont8 rue des mignotes2000 F/m²

Page 2: Plan Les bases de données spatiales

2

David FAU 5

Quelques solutions

• Bases de données spatiales– Stockage de données– Indexation des données– Requêtes spatiales

»PostgreSQL / PostGIS

»Oracle Spatial http://www.oracle.com

http://www.postgis.org

David FAU 6

Module Spatial

Généralités

David FAU 7

A quoi sert-il?Stockage des données

• Stockage – Données géométriques vectorielles– Modèle Relationnel Objet

• Stockage sous forme de champs– Champs géométriques– Champs classiques pour les attributs

David FAU 8

A quoi sert-il?Indexation des données

• Indexation spatiale des données– Récupération de

données par zone– Topologie– Requête

Page 3: Plan Les bases de données spatiales

3

David FAU 9

Spatial c’est quoi

• Schéma SQL permettant de faire:– Stockage– Mise à jour– Récupération– Indexation

D’objets géométriques

David FAU 10

Présentation du module spatial PostGIS

PostGIS dans PostgreSQLLes champs géométriques

Quelques mots sur PostgreSQL

• SGBDRO libre (licence BSD)• Multi-plateforme (Solaris, MacOS, Linux,

Unix, Windows en natif)

• Développé à Berkeley (Californie)• Concurrent de MySQL, Firebird (libres) et

Oracle, Microsoft SQL Server, DB2, Sybase (propriétaires)

David FAU 11

Quelques mots sur PostgreSQL

• Support du standard SQL (requêtes complexes, clés étrangères, triggers, vues, intégrité des transactions, etc…)

• Extensible par l’utilisateur (types de données, fonctions, opérateurs, agrégats,

indexage, langages de procédure, etc…)

David FAU 12

Page 4: Plan Les bases de données spatiales

4

Présentation de PostGIS

• Extension spatiale de PostgreSQL• Stockage des objets SIG dans une base

• Gestion des index spatiaux (arbres)• Calcul et analyse des objets

géographiques

David FAU 13 David FAU 14

PostGIS contient

• Des tables supplémentaires• Un mécanisme d’indexation

• Une suite d’opérateurs et de fonctions– Zone d’intérêt – Jointure spatiale

PostGIS

• Conforme au standard de l’OpenGIS Consortium (Simple Feature Specifications)

• Méthodes standards de description :» WKB (Well-Known Binary)» WKT (Well-Known Text)

David FAU 15

Description géométrique

• WKT :» POINT(0 0)» LINESTRING(0 0,1 1,1 2)» POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1))» MULTIPOINT, MULTILINESTRING, MULTIPOLYGON» GEOMETRYCOLLECTION

• SRID : Spatial Referencing System Identifier» Geometry = GeometryFormText(Text WKT, SRID)

David FAU 16

Page 5: Plan Les bases de données spatiales

5

David FAU 17

Présentation PostGIS

• Table SPATIAL_REF_SYSIdentifiants numériques et description textuelle des systèmes de coordonnées

• Table GEOMETRY_COLUMNSCreate Table GEOMETRY_COLUMNS (

F_TABLE_CATALOG VARCHAR(256) NOT NULL,

F_TABLE_SCHEMA VARCHAR(256) NOT NULL,F_TABLE_NAME VARCHAR(256) NOT NULL,

F_GEOMETRY_COLUMN VARCHAR(256) NOT NULL,COORD_DIMENSION INTEGER NOT NULL,

SRID INTEGER NOT NULL,

TYPE VARCHAR(30) NOT NULL,)

David FAU 18

Création d’une table spatiale

• CREATE TABLE ROADS (

ID INTEGER PRIMARY KEY, NAME VARCHAR(256) ) ;

• Ajout de la colonne géométrie

SELECT AddGeometryColumn(

‘ROADS’,‘geom’,423,‘LINESTRING’,2);

David FAU 19

Les formes géométriques

POINTPOINT POLYGONPOLYGONLINESTRINGLINESTRING

MULTIPOINTMULTIPOINT MULTIPOLYGONMULTIPOLYGONMULTILINESTRINGMULTILINESTRING

GEOMETRYCOLLECTIONGEOMETRYCOLLECTION

David FAU 20

ExempleLe carré

• Un rectangle en géométrie PostGIS

POLYGON(12 15,15 15,15 24,12 24,12 15)

)

Page 6: Plan Les bases de données spatiales

6

David FAU 21

ExempleLa requête correspondanteINSERT INTO Ma_Table VALUES (

1,'Rectangle1',GeomFromText(

‘POLYGON((12 15,15 15,15 24,12 24,12 15))’,423));

David FAU 22

Exemple de géométrie complexe

INSERT INTO ma_tableVALUES (’OBJ_1’,

GeomFromText(‘POLYGON(

(6 15,10 10,20 10,25 15,25 35,19 40,11 40,6 25, 6 15),(12 15,15 15,15 24,12 24,12 15)

)’,423)

);

David FAU 23

Indexation des données

Index

David FAU 24

Indexation

• Rendre possible l’utilisation avec de grandes quantités de données

• Organisation dans un arbre de recherche

• Trois types :» B-Tree : ordonné sur un axe (nombre, lettres, dates, ...)» R-Tree : rectangles, sous-rectangles, sous-sous-

rectangles, …» GiST : à côté de, qui couvre, incluse, …

� GiST pour les SIG

Page 7: Plan Les bases de données spatiales

7

David FAU 25

Requête d’indexation

CREATE INDEX [nom_de_l_index] ON[nom_de_la_table]USING GIST ( [champ_géométrie] GIST_GEOMETRY_OPS );

David FAU 26

Collecte des statistiques de l’index

Optimiser les planifications de requêtes

VACUUM ANALYZE [table_name] [column_name];

VACUUM : récupération de l’espace de stockageANALYZE : Statistiques sur le contenu (pg_statistic)

David FAU 27

Requête spatiale

Modèle d’interrogationOpérateur

David FAU 28

Avant toute requête

• Créer les index• Collecter les statistiques

Page 8: Plan Les bases de données spatiales

8

David FAU 29

Jeu de données important

Modèle d’interrogation

• Système à deux filtres

FiltreJeu de

données réduit

Filtre Résultat

David FAU 30

Modèle d’interrogation

• Premier filtre– Réduction du nombre de données à traiter– Utilisation de boite englobante

• Second filtre– Travail sur un jeu de données réduit

David FAU 31

Exemple

SELECT the_geom FROM geom_tableWHERE

the_geom && box3d('BOX3D(90900 190900, 100100 200100)‘)

AND distance( the_geom, GeomFromText( 'POINT(100000 200000)', -1 ) ) < 100

Opérateurs

• && : si le cadre limite d'un objet géométrique intersecte celui d'un autre

• ~= : teste si deux objets géométriques sont géographiquement identiques

• = : teste uniquement si les cadres limitesdes objets géographiques sont les mêmes

� tirent avantage des index spatiaux GiST

32David FAU 32

Page 9: Plan Les bases de données spatiales

9

Relation entre objets

• ST_Relate– Paramètres

• geom1 : premier objet• geom2 : second objet• mask : Relation recherchée

David FAU 3333David FAU David FAU 34

Relation entre objets

• Différentes relations– ST_Contains– ST_Equals– ST_Disjoint– ST_Intersects

– ST_Touches– ST_Crosses

David FAU 35

Aire d’un objet

• ST_Area

David FAU 36

Retourne le barycentre d’un polygone

• ST_Centroid

Page 10: Plan Les bases de données spatiales

10

David FAU 37

Enveloppe convexe

• ST_Convexhull

David FAU 38

Différence entre deux polygones

• ST_Difference– geom1– geom2

David FAU 39

Distance entre objets

• ST_Distance– geom1– geom2

David FAU 40

Intersection

• ST_Intersection– geom1– geom2

Page 11: Plan Les bases de données spatiales

11

David FAU 41

Validité de la géométrie

• ST_isvalid

David FAU 42

Point sur une surface

• ST_PointOnSurface

David FAU 43

OUTILS

• Extension :– Bibliothèque GEOS : tests géométrique

(http://geos.refractions.net )– Bibliothèque Proj4 : reprojections

(http://www.remotesensing.org/proj )

• Conversion SHP � PostGIS (shp2pgsql)

Présentation du module spatial Oracle

Spatial dans OracleLes champs géométriques

David FAU 4444David FAU

Page 12: Plan Les bases de données spatiales

12

Présentation Oracle Spatial

Multidimension

Context

Option

Spatial Data

Option

Oracle7

Image

Cartridge

Visual Image Retrieval

Cartridge

Time Series

Cartridge

Context

Cartridge

Spatial

Cartridge

Oracle8Intermedia

Image

Audio

Video

Text

Locator

Visual Image Retrieval

Time Series

Spatial

Oracle8 i

4545David FAU

Présentation Oracle Spatial

• Notion de champs géométrique

Id Géométrie Propriétaire Adresse

123

DupontDupuisDumoustier

Rue du quaiRue du pontRue d’auxonne

David FAU 4646David FAU

Spatial contient

• Un schéma (dans MDSYS)• Un Mécanisme d’indexation

• Une suite d’opérateurs et de fonctions– Zone d’intérêt – Jointure spatiale

• Suite d’utilitaires d’administration

David FAU 4747David FAU

Avantage du modèle Objet

• Plus de types géometriques– Arcs, cercles, Polygones composés,

Polylignes composées, Rectangles optimisés

• Utilisation plus simple des indexs

• Maintien de l’index par Oracle• Amélioration des performances

48David FAU 48David FAU

Page 13: Plan Les bases de données spatiales

13

Avantage du modèle relationnel

• Possibilité de réplication de bases de données

• Possibilité de bases de données répliquées

• Partitionnement des tables et chargement parallèle de l’index

David FAU 4949David FAU

Choix pour ce cours

• Modèle Objet– Accès plus facile– Modèle relationnel condamné à disparaître

David FAU 5050David FAU

Création d’une table spatiale

• Le type de géométrie est MDSYS.SDO_GEOMETRY

• Exemple

CREATE TABLE Parcelle(

id NUMBER PRIMARY KEY,

Geometry MDSYS.SDO_GEOMETRY);

David FAU 5151David FAU

Le type géométrie de Oracle

• Relationnel objet :– Géométrie dans un objet géométrique

• Champs SDO_GTYPE Type de géométrie• Champs SDO_SRID Système de projection• Champs SDO_POINT point pour les objet

ponctuels• Champs SDO_ELEM_INFO information sur l’objet• Champs SDO_ORDINATES géométrie des

champs

David FAU 5252David FAU

Page 14: Plan Les bases de données spatiales

14

53

Les formes géométriques

Chaîne de Chaîne de lignes avec lignes avec intersection intersection

ValideValide

PointPoint

PolygonePolygone Polygone Polygone trouétroué

Polygone avec Polygone avec intersectionintersection

Chaîne de Chaîne de LignesLignes

CompositionCompositiond’arcsd’arcs

CompositionCompositionde lignesde lignes

Polygone Polygone composécomposé

PolygonesPolygonesoptimisésoptimisés

David FAUNon valideNon valide

53David FAU

ExempleLe carré

• Un rectangle en géométrie Oracle

David FAU 5454David FAU

ExempleLa requête correspondante

• INSERT INTO Ma_Table VALUES( 125,

MDSYS.SDO_GEOMETRY(2003,423,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,3),MDSYS.SDO_ORDINATE_ARRAY(12,15,15,24))

‘Mon Rectangle à moi’);

David FAU 5555David FAU

Différents types de géométrieGéométrie simple

• SDO_GTYPE:– d000 : géométrie inconnue– d001 : Point– d002 : Polyligne– d003 : Polygone

David FAU 5656David FAU

Page 15: Plan Les bases de données spatiales

15

Différents types de géométrieGéométrie composée

• SDO_GTYPE:– d004 : Collection– d005 : Liste de points– d006 : Liste de polylignes– d007 : Liste de polygones

David FAU 5757David FAU

Les autres paramètres

• SDO_SRID : Système de projection• SDO_POINT : Point en X, Y et Z.

– Utilisé dans le type POINT

• SDO_ELEM_INFO : Definition du contenu de SDO_ORDINATES

• SDO_ORDINATES : Contient une liste de point :– En 2D : X1,Y1, X2,Y2, X3, Y3, …– En 3D : X1,Y1,Z1 X2,Y2,Z2 X3,Y3,Z3 …

David FAU 5858David FAU

A propos de SDO_ELEM_INFO

• Tableau dynamique– Contient des triplets de nombres

• SDO_STARTING_OFFSET– Indice de début de l’objet

• SDO_ETYPE– Type de l’objet

• SDO_INTERPRETATION– Si type d’objet composé � nombre de sous objet

consécutif après

David FAU 5959David FAU

SDO_ELEM_INFO(Point unique)

– SDO_GTYPE : d001– SDO_INTERPRETATION : 1

David FAU 6060David FAU

Page 16: Plan Les bases de données spatiales

16

SDO_ELEM_INFOListe de point

– SDO_ETYPE : 1– SDO_INTERPRETATION : Nombre de points

David FAU 6161David FAU

SDO_ELEM_INFOPolyligne

• SDO_ETYPE : 2• SDO_INTERPRETATION : 1

David FAU 6262David FAU

SDO_ELEM_INFOPolyligne faite d’arcs

• SDO_ETYPE : 2• SDO_INTERPRETATION : 2

David FAU 6363David FAU

SDO_ELEM_INFOPolygone

• SDO_ETYPE : t003• SDO_INTERPRETATION : 1t=1 si on fait une figure pleine (tracer dans le sens trigonométrique)t=2 si c’est un trou (tracer dans le sens horaire)

David FAU 6464David FAU

Page 17: Plan Les bases de données spatiales

17

Polygone lié par des arcs

• SDO_ETYPE : t003• SDO_INTERPRETATION : 2t=1 si on fait une figure pleine (tracer dans le sens trigonométrique)t=2 si c’est un trou (tracer dans le sens horaire)

David FAU 6565David FAU

SDO_ELEM_INFORectangle

• SDO_ETYPE : t003• SDO_INTERPRETATION : 3t=1 si on fait une figure pleinet=2 si c’est un trou

David FAU 6666David FAU

SDO_ELEM_INFOCercle

• SDO_ETYPE : t003• SDO_INTERPRETATION : 4t=1 si on fait une figure pleinet=2 si c’est un trou

David FAU 6767David FAU

SDO_ELEM_INFOComposition de polylignes

• SDO_ETYPE : d004• SDO_INTERPRETATION : Nombre de polylignes

David FAU 6868David FAU

Page 18: Plan Les bases de données spatiales

18

SDO_ELEM_INFOComposition de polygones

• SDO_ETYPE : d005• SDO_INTERPRETATION : Nombre de polygones

David FAU 6969David FAU

InterprétationEtype Interpretation Meaning

0 (toute valeur) Utilisé pour modéliser toutes géométries non supportées par Oracle Spatialtelles les courbes (autre que les arcs) et splines.

1 1 Point

n>1 Agrégat de n points

2 1 Ligne dont les sommets sont reliés par des lignes droites.

2 Ligne composée d'une séquence d'arcs définis par 3 points (début, sur et fin de l'arc). Un point servant de début et de fin d'un arc n'est pas répété.

1003 (polygone extérieur) ou 2003 (polygone intérieur)

1 Simple polygone dont les sommets sont reliés par des lignes droites. Le sommet de fin du polygone doit être le même que le sommet de début.

2 Polygone composé d'une séquence fermée d'arcs. Le point servant de début et de fin d'un arc n'est pas répété.

3 Rectangle défini par deux points dont l'un est localisé dans le coin inférieur gauche et l'autre dans le coin supérieur droit. Ce type peut être utilisé uniquement avec un système de coordonnées cartésien, sinon définir le rectangle avec 5 points et une interprétation égale à 1.

4 Cercle défini par 3 points localisés sur la circonférence.

David FAU 7070David FAU

InterprétationEtype Interpretation Meaning

4 n>1 Ligne complexe dont certains sommets sont reliés par des lignes droites et d'autres par des arcs. La valeur n du champ interprétation spécifie le nombre de sous-éléments contigus composant la ligne. Les n triplets suivants de la matrice SDO_ELEM_INFO décrivent chacun de ces sous-éléments. Les sous-éléments peuvent uniquement être de type SDO_ETYPE 2. Le dernier point d'un sous-élément est le premier du sous-élément suivant et ne doit pas être répéter .

1005 (polygone extérieur) ou 2005 (polygone intérieur)

n>1 Polygone complexe dont certains sommets sont reliés par des lignes droites et d'autres par des arcs. La valeur n du champ interprétation spécifie le nombre de sous-éléments contigus composant la ligne. Les ntriplets suivants de la matrice SDO_ELEM_INFO décrivent chacun de ces sous-éléments. Les sous-éléments peuvent uniquement être de type SDO_ETYPE 2. Le dernier point d'un sous-élément est le premier du sous-élément suivant et ne doit pas être répéter . Le point de début et de fin d'un polygone doit être le même.

David FAU 7171David FAU

Exemple de géométrie complexe

David FAU 72

INSERT INTO PARKSVALUES (’OBJ_1’,

MDSYS.SDO_GEOMETRY(2003, NULL,NULL,MDSYS.SDO_ELEM_INFO_ARRAY(1,1003,1, 19,2003,3),MDSYS.SDO_ORDINATE_ARRAY(6,15, 10,10, 20,10, 25,15, 25,35, 19,40, 11,40, 6,25, 6,15, 12,15, 15,24)

));

72David FAU

Page 19: Plan Les bases de données spatiales

19

Indexation et métadonnées

• Indexation �– Indiquer à ORACLE les données à indexer.– Remplir les table de métadonnées spatial

• USER_SDO_GEOM_METADATA• ALL_SDO_GEOM_METADATA• DBA_SDO_GEOM_METADATA

David FAU 7373David FAU

Indexation des données

MétadonnéesIndex

David FAU 7474David FAU

Indexation et métadonnées

• Ces tables contiennent :– TABLE_NAME VARCHAR2(32),– COLUMN_NAME VARCHAR2(32),– DIMINFO MDSYS.SDO_DIM_ARRAY,– SRID NUMBER

David FAU 7575David FAU

Indexation et métadonnées

INSERT INTO USER_SDO_GEOM_METADATAVALUES (

’nom_table’,’nom_colonne’,MDSYS.SDO_DIM_ARRAY(

MDSYS.SDO_DIM_ELEMENT(’X’, 0, 20, 0.005),MDSYS.SDO_DIM_ELEMENT(’Y’, 0, 20, 0.005)

),NULL

);

David FAU 7676David FAU

Page 20: Plan Les bases de données spatiales

20

L’indexation des données

Indexation par QUAD TREE

David FAU 7777David FAU

Requête d’indexation

CREATE INDEX nom_spatial_idxON nom_table(nom_colonne)

INDEXTYPE IS MDSYS.SPATIAL_INDEXPARAMETERS(’SDO_LEVEL = 8’);

David FAU 7878David FAU

Estimation de SDO_LEVEL

SDO_LEVEL profondeur de l’arbre d’index• SDO_TUNE.ESTIMATE_TILING_LEVEL

– Nom table– Nom colonne

– Nombre maximum de zones

David FAU 7979David FAU

Requête spatiale

Modèle d’interrogationOpérateur

David FAU 8080David FAU

Page 21: Plan Les bases de données spatiales

21

Avant toute requête

• Remplir les métadonnées• Créer les indexs

David FAU 8181David FAU

Jeu de données important

Modèle d’interrogation

• Système à deux filtres

FiltreJeu de

données réduit

Filtre Résultat

David FAU 8282David FAU

Modèle d’interrogation

• Premier filtre– Réduction du nombre de données à traiter– Utilisation de boite englobante

• Second filtre– Travail sur un jeu de données réduit

David FAU 8383David FAU

Utilisation de l’index

I

II

I

I

I

I I

II

I

B

I

BB

I

B

B

B

I

B

BBB

B

BB

BBB

I

B

B

B

B

I

B

I

IPas dans la figureDans la figure au second passageDans la figure au premier passageFigure de sélection

David FAU 8484David FAU

Page 22: Plan Les bases de données spatiales

22

ExempleSELECT SDO_GEOM.SDO_INTERSECTION(

c_a.shape,m.diminfo, c_c.shape,m.diminfo

)

FROM cola_markets c_a, cola_markets c_c, user_sdo_geom_metadata m

WHERE m.table_name = ’COLA_MARKETS’ AND m.column_name = ’SHAPE’

AND c_a.name = ’cola_a’ AND c_c.name = ’cola_c’;

David FAU 8585David FAU

Relation entre objets

• SDO_GEOM. RELATE– Paramètres

• geom1 : premier objet• dim1: zone du premier objet• mask : Relation recherchée• geom2 : second objet• dim2 : zone du second objet

David FAU 8686David FAU

Relation entre objets

• Différentes relations– ANYINTERACT– CONTAINS– COVERS– DISJOINT

– EQUAL– INSIDE

David FAU 8787David FAU

Relation entre objets

• Différentes relations– OVERLAPBDYDISJOINT– OVERLAPBDYINTERSECT– TOUCH

• Combinaison– ‘INSIDE + TOUCH’

David FAU 8888David FAU

Page 23: Plan Les bases de données spatiales

23

Aire d’un objet

• SDO_GEOM.SDO_AREA– geom– dim

David FAU 8989David FAU

Retourne le barycentre d’un polygone

• SDO_GEOM.SDO_CENTROID– geom– dim

David FAU 9090David FAU

Enveloppe convexe

• SDO_GEOM.SDO_CONVEXHULL– geom– dim

David FAU 9191David FAU

Différence entre deux polygones

• SDO_GEOM.SDO_DIFFERENCE– geom1– dim1– geom2– dim2

David FAU 9292David FAU

Page 24: Plan Les bases de données spatiales

24

Distance entre objets

• SDO_GEOM.SDO_DISTANCE– geom1– dim1– geom2– dim2

David FAU 9393David FAU

Intersection

• SDO_GEOM.SDO_INTERSECTION– geom1– dim1– geom2– dim2

David FAU 9494David FAU

Validité de la géométrie

• SDO_GEOM.VALIDATE_GEOMETRY– geom– dim

David FAU 9595David FAU

Point sur une surface

• SDO_GEOM.SDO_POINTONSURFACE– geom– dim

David FAU 9696David FAU

Page 25: Plan Les bases de données spatiales

25

Opérateurs

• SDO_GEOM.SDO_POLY_DIFFERENCE• SDO_GEOM.SDO_POLY_INTERSECTION• SDO_GEOM.SDO_POLY_UNION• SDO_GEOM.SDO_POLY_XOR

– geom1– dim1– geom2– dim2

David FAU 9797David FAU

OUTILS

• Utilitaire en JAVA– Conversion SHP � Oracle (shp2sdo)– Génération de XML depuis Oracle (java)

• SQL*Loader � Chargement de données de grand volume

• GeoRaptor : extension spatiale de SQL Developer

David FAU 9898David FAU