WikiProject France/Parcs nationaux et régionaux, réserves naturelles/Import des données INPN

From OpenStreetMap Wiki
Jump to: navigation, search

Suite à l'autorisation donnée par l'INPN a importer ses données, voici le plan d'action pour les importer :

Contents

Phase alpha - Mise à disposition des fichiers dans des formats plus travaillables

Accès à de gros fichiers zip qui contiennent tout

Note : Les fichiers des territoires d'Outre-Mer ne sont pas en Lambert 93, donc les données dans ces régions ne sont pas forcément bien transformées en WGS84 dans les fichiers travaillés ; sauf dans le dossier wgs84.tar.gz.

Phase 1 - Affichage sur carte pour une analyse quantitative et qualitative

Voici une première représentation de toutes les données INPN sur toute la france


En rouge les données en provenance de l'INPN, en vert (si elles existent celles déjà présentes dans OSM).

Note : A ce jour les données d'Outre-Mer sont mal reprojetées sur cette carte (La Réunion se retrouve en Écosse, etc.)

PS: la carte est volontairement centrée sur un lieu ou on en voit deux, celle que j'ai fièrement rentré à la main, et celle de l'INPN sletuffe 16:10, 1 June 2010 (UTC)

Phase 2 - Liste des données attributaires disponibles dans les shapefile INPN

L'ensemble des shp n'est pas si homogènes, on a :

Nom du champ format Contenu
ID_DIREN (sauf pour conservatoire du littoral et réserves biologiques) 12 caractères identifiant utilisé en DIREN. Très peu rempli et incohérent.
DATE_ (des fois DATE) chaîne de 10 caractère au format JJ/MM/AAAA (des fois juste AAAA) Date de l’arrêté. Assez bien renseigné.
ID_SPN 9 caractères Identifiant international. Très bien renseigné et homogène. Les 2 premiers caractères indiquent le pays (ici c'est FR à chaque fois), et les deux chiffres suivants indiquent le type de protection (par exemple 23 pour les réserves biologiques dirigées et 24 pour les réserves bioogiques intégrales (qui sont dans le même fichier shapefile). Le reste est un numéro d'ordre.
NOM 160 caractères Pour les PNR et RN, <raccourcis pour décrire le type> <son nom> : exemple "PNR du massif des bauges", "R. N. des hauts de chartreuse". Nom simple sinon. Toujours renseigné. Parfois en lettres capitales (à traiter pour import dans OSM)
SUPERFICIE entier superficie "officielle" de la surface, peut être légèrement différent de la superficie calculée. Renseigné dans 1/3 des cas.
Selon les cas, il peut y avoir d'autres champs
ID_CDL (pour les conservatoire du littoral) entier Identifiant pour le Conservatoire du Littoral. Bien renseigné.
ID_ORG (pour les réserves biologiques) 12 caractères Identifiant des RB, en fait un entier. Bien renseigné.
D_I (pour les réserves biologiques des DOM) 1 caractère I = intégrale ou D = dirigée. Bien renseigné.
MIXTE (pour les réserves biologiques des DOM) 1 caractère Si la réserve est mixte. Bien renseigné.

Phase 3 - Choix des tags à utiliser pour l'intégration dans OSM

Pour l'instant les balises documentées dans le wiki sont :

J'aime bien le boundary=protected_area je donne une voix pour celui-là agrémenté de son protect_id=*. Je ne vois pas d'inconvénient à enregistrer toutefois dans un Fr:quelquechose=Réserve Naturelle sletuffe 12:57, 2 June 2010 (UTC)
Je crois que c'est prévu avec le protection_title=* (par exemple protection_title=Arrêté de protection de biotope). Damouns 07:29, 3 June 2010 (UTC)
Alors cette proposition est vraiment bien faite ;-) sletuffe 08:56, 3 June 2010 (UTC)
J'ai mis 'protection_title' dans le tableau Damouns 09:02, 7 June 2010 (UTC)

Il peut y avoir débat sur l'utilisation de boundary=national_park d'une part, ou de la combinaison boundary=protected_area + protect_id=2 + protection_title=Coeur de Parc National d'autre part : la première a un usage déjà répandu, et est rendue sur la carte, alors que la seconde permet de comparer le niveau de protection de parcs de différents pays, et de différentier coeur et aire d'adhésion.

Pour les réserves naturelles, l'idée est la même (rendu, usage, et le classement en leisure du tag leisure=nature_reserve fait aussi débat).

En revanche pour les autres types de zones, rien n'existe, l'utilisation de boundary=protected_area permet d'être générique (les Arrêtés de protection de biotope n'existent qu'en France... inutile de créer boundary=apb qui ne serait jamais rendu sur la carte)

Espaces protégés

Ici on pourrait utiliser la balise boundary=protected_area + protect_id=*.

Note : wdpa.org répertorie un seul Marine Park : Côte Bleue (près de Marseille), et INPN répertorie un seul parc naturel marin en métropole : Iroise. Ce n'est donc pas la même chose.

On pourra mettre à chaque fois les champs :

protection_title protection_title:en Niveau préfixe ID_SPN nb objets protect_id Tags additionnels à ajouter
Arrêté de protection de biotope Biotope Protection Order National FR38 715 4
Réserve de la biosphère, zone centrale UNESCO-MAB Biosphere Reserve International FR63 9 98
Réserve de la biosphère, zone tampon UNESCO-MAB Biosphere Reserve International FR64 9 98
Réserve de la biosphère, aire de coopération UNESCO-MAB Biosphere Reserve International FR65 9 98
Terrain du Conservatoire du Littoral Land Acquired by Littoral and Lakeside Conservatoire National FR11 636 4 id_cdl
Coeur de Parc national National Park - Central Area National FR33 9 2 (sauf Cévennes ?) access=no + foot=no (car accès interdit en dehors des chemins ?)
Aire d'adhésion de Parc national National Park - Central Area / Buffer Zone National FR34 8 5 Sauf erreur, en tout cas de ma connaissance pour le parc de la vanoise, l'aire d'adhésion ne dispose d'aucune protection particulière
Parc naturel marin National FR91 1 5 ou 6
Parc naturel régional Regional Natural Park, Regional Nature Park National FR80 46 5
Site Ramsar (voir aussi Ramsar site) Wetlands of International Importance (Ramsar) International FR72 33 98
Réserve biologique dirigée Forest Biological Reserve National FR23 168 4 id_org
Réserve biologique intégrale Forest Biological Reserve National FR24 62 1 id_org
Réserve naturelle nationale Nature Reserve, Natural Reserve, National Natural Reserve National FR36 166 4 sauf celles géologiques : 3. access=no + foot=no(car accès interdit en dehors des chemins ?)
Réserve nationale de chasse et faune sauvage National Hunting and Wildlife Reserve National FR51 9 4
Réserve naturelle volontaire Voluntary Nature Reserve National FR37 139 3

Et aussi "Marine Protected Zone: aquaculture concession" (deux : Cap Couronne et Carry-le-Rouet) : pas d'équivalent dans les données INPN ?

Inventaires d'espaces naturels

Ce ne sont pas des espaces protégés à proprement parler. L'utilité de leur import dans OSM est discutable.

Type balise
Zone d'importance pour la conservation des oiseaux (ZICO)
ZNIEFF 1
ZNIEFF 2

NATURA 2000

Ici aussi, on pourrait utiliser la balise boundary=protected_area + protect_id=*, s'il s'agit effectivement de zones protégées (si quelqu'un peut confirmer).

Type protect_id
Sites d'importance communautaire (SIC, directive habitats) 97
Zones de protection spéciale (ZPS, directive oiseaux) 97

Phase 4 - Choix de tout ou partie des données à importer et méthode

Choix des données

Méthode

Parcs Naturels Régionaux

Une première analyse rapide indique que les données sont des unions de limites communales (parfois infra-communales : Altenstadt -intégré à Wissembourg- pour le PNR des Vosges du Nord, par exemple).

Certaines de ces limites communales existent déjà dans OSM avec une précision meilleure que celle de l'import (niveau scan25|BD Carto, à vue de nez).

Proposition de conflation

Use case

Autre proposition

Si la zone candidate à import est par nature constituée d'un ensemble de communes (cas des PNR) alors on peut :

Idéalement dans ce schéma on ne créé aucune géométrie propre aux zones candidates, on s'appuie sur de la géométrie OSM existante. Ca reste un cas bien particulier valable uniquement pour les zones qui sont des "sommes" de communes entières.

Importation technique avec ogr2osm

Utilisation de l'outil ogr2osm : (La version disponible du svn pose problème, cette version [1] permet une utilisation plus adapté au cas INPN (ways de + de 500 noeuds interdits, ne pas ignorer le dernier champ du shapefile, et j'ai même tweaké la librairie SimpleXMLWrite pour produire un fichier lisible et pour bien gérer le ' )

python ogr2osm.py -t inpn_rules filename.shp

Avec le fichier inpn_rules.py (dans le sous-dossier "translations")

CHANGELOG v7 : Les aires d'adhésion de parc n'interdisent ni les véhicules à moteurs, ni la construction. sletuffe 18:27, 4 July 2010 (UTC)
CHANGELOG v6 : Bon ordre des if pour les attributs (sinon protection_title et protect_id sont absents !) Damouns 14:50, 1 July 2010 (UTC)
CHANGELOG v5 : Ajout de la source et gestion chaîne DATE vide ou différente Damouns 13:35, 1 July 2010 (UTC)
CHANGELOG v4 : Ajout des restrictions d'accès pour les réserves et parcs nationaux sletuffe 17:53, 30 June 2010 (UTC)
CHANGELOG v3 : re-factorisation du code, si il s'agit d'un parc national, je laisse tomber le boundary=national_park pour lui préférer l'homogénéité de boundary=protected_area sletuffe 17:46, 30 June 2010 (UTC)
CHANGELOG v2 : factorisation du code, gestion de la conversion iso -> utf-8, correction de bugs ajout de FR33 sletuffe 17:38, 30 June 2010 (UTC)
CHANGELOG v1 : Première version

ATTENTION certains noms en provenance de l'INPN comportent des abréviations, ce qui est contraire à l'usage toponymique dans openstreetmap, il serait bon de corriger les règles ci-après, ou de finir à la main avant import

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
def translateAttributes(attrs):
	if not attrs: return
 
	tags = {}
	tags.update({'boundary':'protected_area'})
	tags.update({'source':'Inventaire National du Patrimoine Naturel 2010'})
 
	# Utiliser l'attribut "NOM" pour la balise name=
	if 'NOM' in attrs:
		#print 'un nom :' +  unicode(attrs['NOM'],'ISO-8859-15')
		nom=unicode(attrs['NOM'],'ISO-8859-15')
		tags.update({'name':nom})
 
	# Utiliser l'attribut "DATE" ou "DATE_" pour la balise valid_from=
	key_date = 'EMPTY'
	if 'DATE' in attrs:
		key_date = 'DATE'
	if 'DATE_' in attrs:
		key_date = 'DATE_'
	if key_date != 'EMPTY':
		if (attrs[key_date].count('/') == 2):
			year = attrs[key_date].split('/')[2]
			month = attrs[key_date].split('/')[1]
			day = attrs[key_date].split('/')[0]
			date = year + '-' + month + '-' + day
			tags.update({'valid_from':date})
		elif (len(attrs[key_date].strip()) != 0):
			tags.update({'valid_from':attrs[key_date]})
 
	# Utiliser l'attribut "ID_DIREN" si existe, pour la balise id_diren
	if 'ID_DIREN' in attrs:
		if attrs['ID_DIREN'] :
			tags.update({'id_diren':attrs['ID_DIREN']})
 
	# Utiliser l'attribut "ID_SPN" pour la balise id_spn=
	if 'ID_SPN' in attrs:
		tags.update({'id_spn':attrs['ID_SPN']})
 
		# Mettre les bons tags selon le préfixe de ID_SPN
		if attrs['ID_SPN'].startswith('FR38'):
			tags.update({'protect_id':'4'})
			tags.update({'protection_title':u'Arrêté de protection de biotope'})
 
		elif attrs['ID_SPN'].startswith('FR63'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'98'})
			tags.update({'protection_title':u'Réserve de la biosphère, zone centrale'})
 
		elif attrs['ID_SPN'].startswith('FR64'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'98'})
			tags.update({'protection_title':u'Réserve de la biosphère, zone tampon'})
 
		elif attrs['ID_SPN'].startswith('FR65'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'98'})
			tags.update({'protection_title':'Réserve de la biosphère, aire de coopération'})
 
		elif attrs['ID_SPN'].startswith('FR33'):
			tags.update({'protect_id':'2'})
			tags.update({'protection_title':u'Cœur de Parc national'})
			tags.update({'access':u'no'})
			tags.update({'foot':u'yes'})
 
		elif attrs['ID_SPN'].startswith('FR34'):
			tags.update({'protect_id':'5'})
			tags.update({'protection_title':u'Aire d’adhésion de Parc national'})
 
		elif attrs['ID_SPN'].startswith('FR91'):
			tags.update({'protect_id':'5'})
			tags.update({'protection_title':'Parc naturel marin'})
 
		elif attrs['ID_SPN'].startswith('FR80'):
			tags.update({'protect_id':'5'})
			tags.update({'protection_title':u'Parc naturel régional'})
 
		elif attrs['ID_SPN'].startswith('FR72'):
			tags.update({'protect_id':'98'})
			tags.update({'protection_title':'Site Ramsar'})
 
		elif attrs['ID_SPN'].startswith('FR23'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'4'})
			tags.update({'protection_title':u'Réserve biologique dirigée'})
 
		elif attrs['ID_SPN'].startswith('FR24'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'1'})
			tags.update({'protection_title':u'Réserve biologique intégrale'})
 
		elif attrs['ID_SPN'].startswith('FR36'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'4'})
			tags.update({'protection_title':u'Réserve naturelle nationale'})
			tags.update({'access':u'no'})
			tags.update({'foot':u'yes'})
 
		elif attrs['ID_SPN'].startswith('FR51'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'4'})
			tags.update({'protection_title':u'Réserve nationale de chasse et faune sauvage'})
 
		elif attrs['ID_SPN'].startswith('FR37'):
			tags.update({'leisure':'nature_reserve'})
			tags.update({'protect_id':'3'})
			tags.update({'protection_title':u'Réserve naturelle volontaire'})
 	#print tags
	return tags

Phase 5 - Réflexion sur l'avenir et le maintien à jour des données

Si on a une version annuelle des shapefile sur le site de l'INPN, on pourrait comparer leurs contours avec ce qu'il y a dans la base OSM. Le problème c'est que si un contributeur a amélioré le contour présent grâce au cadastre et au texte du décret constitutif de l'espace protégé, on risque d'écraser son travail (cf. réserve naturelle des Hauts de Chartreuse). L'idéal serait d'avoir un différentiel tous les ans, par exemple uniquement la liste des espaces modifiés, ajoutés, supprimés. on pourrait regénérer les fichiers osm de ces espaces.

Phase 6 - Import réél dans OSM

C'est long et ça prend du temps ! Damouns 10:33, 10 August 2010 (BST)

Ajout du 7 janvier 2011 : Suite à des remarques et surtout des problèmes de rendu (eh oui) j'ai modifié les données comme suit :

Je suis conscient que tagguer pour le rendu ne se fait pas, mais en l'occurence ce sont des modifications qui se justifient d'une certaine manière, donc pas inacceptables selon moi. Je les documente ici pour info. Damouns 12:43, 7 January 2011 (UTC)

Personal tools
Namespaces
Variants
Actions
site
Toolbox