WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Recherche d'un processus d'historisation de base de données d'occupation des sols appliqué au référentiel géographique forestier de l'IGN

( Télécharger le fichier original )
par Romain Louvet
Université Paris Diderot - Paris 7 - M1 Géographie et Sciences des territoires 2013
  

précédent sommaire

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

Bibliographie

Bonneau, M. E. (2008). Vérification d'aptitude de l'extraction différentielle dans un système client-serveur utilisant l'historique. ENSG. 68 p.

Bordin, P. (2002). Chapitre 3.6.4 La question Quand ? et chapitre 6.8 La mise à jour. Dans SIG : concept, outils et donnéees (pp. 90-91 & 162-172). Hermès Science. 259 p. ISBN/ISSN : 9782746205543

Date, C. J. (2004). Introduction aux bases de données. (M. Chalmond, & J.-M. Thomas, Trads.) Paris: Vuibert. 1047 p. ISBN/ISSN : 2711748383.

Guinaudeau, M. (2006). Etude préalable pour la misee en oeuvre du "Fond vert" produit par l'IFN et l'IGN. Mémoire d'examen professionel pour le recrutement d'Ingénieur des Travaux Géographiques et Cartographiques de l'Etat. 82 p.

Heres, L. (2000). « Hodochronologics: History and time in the National Road Database ». Dans L. Heres (Éd.), Time in GIS: issues in spatio-temporal modelling (pp. 45-56). Publication on Geodesy. Vol. 47. Deft. Pays-Bas: Netherlands Geodetic Commision. 70 p. ISBN/ISSN : 9789061322696

IGN. (2007). GCVS pour les nuls. Service de la recherche. 11 p.

IGN. (2011). BDUni V1.1 Grande Echelle : spécifications de contenu (éd. 5ème). 213 p. IGN. (2012). Spécification de saisie BDUni V1.1.

Langran, G. (1992). Time in geographic information systems. Londres, New York, Philadelphia: Taylor & Francis. 189 p. ISBN/ISSN : 0748400036.

Paque, D. (2004). « Gestion de l'historicité et méthodes de mise à jour dans les SIG » dans Cybergéo : Cartographie, Imagerie, SIG, article 278. Mis en ligne le 23 juin 2004. Consulté le 22 février 2013, sur http://cybergeo.revues.org/2500. 22 p. DOI : 10.4000/cybergeo.2500.

xxxi

Annexes

Exemple de requête SQL temporelle dans la BDUni

Cette requête permet l'extraction des objets du thème bâtiment correspondant à l'état de la base pour un instant et un département donné.

1 SELECT T.*

2 FROM(

3 SELECT bh.*

4 FROM batiment_h bh, metadonnees_departement d

5 WHERE d.code_insee = $2

6 AND (d.detruit is NULL or d.detruit=")

7 AND isvalid(bh.geometrie)

8 AND isvalid(d.geometrie)

9 AND intersects(bh.geometrie,d.geometrie)

-- concaténation de la table historique avec la table actuelle

-- pour avoir les numrec et les numrecmodif de tous les objets

10 UNION

11

-- on rajoute la colonne numrecmodif avec une valeur par défaut -- dans la table actuelle qui ne possède pas cette colonne SELECT b.*, 0 as numrecmodif

12 FROM batiment b, metadonnees_departement d

13 WHERE d.code_insee = $2

14 AND (d.detruit is NULL or d.detruit=")

15 AND isvalid(b.geometrie)

16 AND isvalid(d.geometrie)

17 AND intersects(b.geometrie,d.geometrie)) AS T

-- jointure simple avec la table des réconciliations permettant d'éliminer toutes les versions de l'objet -- correspondant à des réconciliations postérieures à la date qui nous intéresse

18 JOIN(

19 SELECT *

20 FROM reconciliations

-- opérateur <= ; borne gauche de l'intervalle fermée

21 WHERE daterec <= $1) AS R1

22 ON T.numrec = R1.numrec

-- jointure gauche avec la table des réconciliations récupérant pour chaque version la date

-- de la réconciliation suivante sur cet objet (celle qui a mis la version courante dans l'historique)

23 LEFT JOIN(

24 SELECT *

25 FROM reconciliations

-- condition suivante peut-être inutile au regard du WHERE final

26 WHERE daterec > $1) AS R2

27 ON T.numrecmodif = R2.numrec

-- la date du numrecmodif (date de la réconciliation suivante doit être postérieur à la date t afin de vérifier -- que l'objet courant a bien été réconcilié avant t ET que la réconciliation suivante a eu lieu après t -- opérateur > ; borne droite de l'intervalle ouverte

28 WHERE R2.daterec > $1

-- Toutefois, si on est sur l'objet courant, on n'a pas de date de

-- numrecmodif et on se contente de s'assurer que l'objet n'est pas -- détruit ou que sa destruction est postérieure à t

29 OR (T.numrecmodif = 0 AND (T.date_destruction IS NULL OR T.date_destruction > $1)

xxxii

Commentaires :

? Première étape : création d'une table unique réunissant les objets actuels et l'historique

Lignes 1 et 2 : sélectionner toutes les lignes et toutes les colonnes dans une table T qui correspondent au résultat de la requête énoncée de la ligne 3 à 29.

Lignes 3 à 17 : création de la table T, contenant toutes les lignes et colonnes de la table historique (lignes 3 et 4), et (ligne 10) toutes les lignes et colonnes de la table des objets courants (lignes 11 et 12).La colonne « numrecmodif » est ajoutée et remplie avec la valeur « 0 » à la table des objets courants (ligne 11).

? Deuxième étape : borne inférieure de l'intervalle

Lignes 17, 18 et 21,22 : jointure de la colonne « numrec » de table principale T sur la même colonne de R1, vue issue de la table des réconciliations. C'est une inner join qui crée une nouvelle table dont le résultat ne contient que les lignes satisfaisant le prédicat de jointure.

Lignes 19 à 21 : R1est créé à partir d'une sélection dans la table des réconciliations de toutes les lignes et colonnes lorsque le contenu de la colonne « daterec » est strictement inférieur à la date choisie.

? Troisième étape : borne supérieure de l'intervalle

Lignes 23, 26 et 27 : jointure de la colonne « numrecmodif » de T sur la colonne « numrec » de R2. Le left join consiste à ajouter des colonnes et à remplir les lignes satisfaisant le prédicat de jointure, tout comme le inner join, mais sans supprimer les autres lignes.

Lignes 23 à 26 : une seconde vue, R2, est créé à partir d'une sélection dans la table des réconciliations de toutes les lignes et colonnes lorsque la colonne « daterec » est inférieure ou égale à la date choisie.

? Quatrième étape :

Lignes 28 et 29 : sélection finale des lignes où la colonne R2.daterec est supérieure ou égale à la date choisie (l'objet est compris dans l'intervalle), ou quand il s'agit d'un objet actuel, borné à gauche mais pas à droite car il n'a pas été modifié ou détruit (« numrecmodif » = 0 et « date_destruction » non renseignée ou strictement supérieure à la date choisie).

xxxiii

Exemple :

s Table actuelle « zone_de_vegetation »

cleabs

numrec

date_destruction

001

2

 

002

3

2002

003

3

 

004

4

2003

005

4

 

s Table d'historique « zone_de_vegetation_h »

cleabs

numrec

numrecmodif

Date_destruction67

001

1

2

 

002

2

3

 

004

1

3

 

004

3

4

 

s Table des réconciliations

numrec

daterec

Nom

1

2000

Création 001, 004

2

2001

Création 002, modification 001

3

2002

Création 003, modification 004, destruction 002

4

2003

Création 005, destruction 004

s Table T

(Table d'origine68)

cleabs

date_destruction

numrec

numrecmodif

zone_de_vegetation

001

 

2

0

zone_de_vegetation

002

2002

3

0

zone_de_vegetation

003

 

3

0

zone_de_vegetation

004

2003

4

0

zone_de_vegetation

005

 

4

0

zone_de_vegetation_h

001

 

1

2

zone_de_vegetation_h

004

 

1

3

zone_de_vegetation_h

002

 

2

3

zone_de_vegetation_h

004

 

3

4

67 Colonne toujours vide mais bien présente dans la table.

68 Cette colonne est ajoutée à titre indicatif.

xxxiv

L'opération est simulée pour quatre dates successives, le résultat final est souligné et noté en caractères gras.

1) t = 2000

s R1

numrec

daterec

1

2000

s R2

Numrec

daterec

2

2001

3

2002

4

2003

s Résultat

R2.numrec

R2.daterec

cleabs

T.date_des truction

T.numrec

T.numrec modif

R1.numrec

R1.date-rec

2

2001

001

 

1

2

1

2000

3

2002

004

 

1

3

1

2000

2) t = 2001

s R1

numrec

daterec

1

2000

2

2001

s R2

Numrec

daterec

3

2002

4

2003

s Résultat

R2.numrec

R2.daterec

cleabs

T.date_des truction

T.numrec

T.numrec modif

R1.numrec

R1.date-rec

 
 

001

 

1

2

1

2000

3

2002

004

 

1

3

1

2000

 
 

001

 

2

0

2

2001

3

2002

002

 

2

3

2

2001

xxxv

3) t = 2002

s R1

Numrec

daterec

1

2000

2

2001

3

2002

s R2

Numrec

daterec

4

2003

s Résultat

R2.numrec

R2.daterec

cleabs

T.date_des truction

T.numrec

T.numrec modif

R1.numrec

R1.date-rec

 
 

001

 

1

2

1

2000

 
 

004

 

1

3

1

2000

 
 

001

 

2

0

2

2001

 
 

002

 

2

3

2

2001

 
 

002

2002

3

0

3

2002

 
 

003

 

3

0

3

2002

4

2003

004

 

3

4

3

2002

4) t = 2003

s R1

Numrec

daterec

1

2000

2

2001

3

2002

4

2003

s R2

Numrec

daterec

s Résultat

R2.numrec

R2.daterec

cleabs

T.date_des truction

T.numrec

T.numrec modif

R1.numrec

R1.date-rec

 
 

001

 

1

2

1

2000

 
 

004

 

1

3

1

2000

 
 

001

 

2

0

2

2001

 
 

002

 

2

3

2

2001

 
 

002

2002

3

0

3

2002

 
 

003

 

3

0

3

2002

 
 

004

 

3

4

3

2002

 
 

004

2003

4

0

4

2003

 
 

005

 

4

0

4

2003

xxxvi

Remarques :

L'intervalle temporel défini par la requête (deuxième et troisième étape) pour obtenir l'état de la base à un instant t choisi peut être exprimé de la façon suivante :

? début de l'intervalle < ou = instant T choisi < fin de l'intervalle ? ou encore : [Tmin ; Tmax[

Cette définition est cohérente, car elle exclut une des valeurs des bornes, ce qui est nécessaire puisque le système d'historisation de la BDUni utilise une datation discrète : la fin d'un objet précédent et le début du suivant possède la même date, et non deux dates immédiatement consécutives. Deux états successifs ne peuvent pas en effet, selon la logique, se superposer dans le temps. Il faut donc exclure une des bornes. Dans l'absolu, il paraît plus conforme à la réalité du changement de considérer la borne de fin de l'intervalle comme ouverte, et non celle du début. Cela revient à faire correspondre à l'idée de durée d'un objet informatique la notion d'existence d'un objet du monde réel. Néanmoins, la résolution temporelle des données étant de l'ordre du cent-millième de seconde, ce point n'est pas nécessairement très important, d'autant plus que l'utilisation du temps dans la BDUni répond à un besoin de maintenance informatique. L'utilisation du temps réel et le suivi des changements dans le cadre de l'OCS GE demandera par contre de veiller au respect de ce principe.

précédent sommaire






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Le don sans la technique n'est qu'une maladie"