RSS Libre@vous
RSS de la rubrique Géomatique

Dernière mise à jour
le 18/03/2014 à 09h51
Les contenus de ce site sont publiés sous la licence CC by-sa, sauf mention contraire.
licence_CC-by-sa
Copyright © 2014 Libre @ vous. Tous droits réservés.
Joomla! est un logiciel libre sous licence GNU/GPL.
08
Déc
2011
Script de téléchargement du registre parcellaire graphique depuis le site data.gouv.fr Imprimer
Il y a quelques semaines, le gouvernement français s'engageait dans une vraie politique d'ouverture des données publique en lançant la licence ouverte Etalab. Le 5 décembre, le site data.gouv.fr a ouvert ses portes pour proposer en téléchargement les premiers jeux de données publiques libérées. Au menu, il y a quelques jeux de données géographiques intéressants pour les SIGistes. Il y a pour le moment 121 fichiers Shape. Dans certains fichiers XLS, il y a aussi quelques informations de géolocalisation. Au passage, pour une plate-forme de partage de données sous licence libre, on aurait sans doute préféré l'utilisation d'un format ouvert comme ODT, mais bon ceci est un autre débat...

Par exemple, vous pouvez y télécharger le registre parcellaire graphique (identification des parcelles agricoles). Le problème si vous souhaitez récupérer toute la France, c'est qu'ils ont eu la bonne idée de mettre à disposition un fichier SHP par département, mais pas le fichier contenant toute la France. Vous me direz, ça viendra peut-être... En attendant j'ai fais un petit script shell très simple mais bien utile qui vous économisera 96 clics pour télécharger les 96 départements. Et encore j'ai été gentil, je n'ai pas compté les clics de la pagination sur la liste des données ! Complice Et comme je vous aime bien, je vous propose mon script en téléchargement ici :
Pour le lancer, il faut être sous GNU/Linux (si vous ne travailler pas sous ce système et que vous ne voulez pas l'installer, un Live CD fera parfaitement l'affaire). Après avoir ouvert une console shell, donnez les droits d'exécution au script : chmod u+x extract_RPG.sh, puis lancez le script : ./extract_RPG.sh

Allez prendre un petit ou un grand café (le site data.gouv est assez sollicité ça peut être long) et revenez déguster vos 96 départements qui vous attendent sur votre ordinateur !

Merci à Maëlle Decherf pour l'idée du script.

Nouveauté du 16/02/2012 :
Sébastien Joly a réalisé une version du script en VB pour Windows que je vous met en téléchargement ci-dessous. Merci Seb !


Nouveauté du 20/02/2012 :
Et voici une version en Python pour Windows réalisée par domlysz. Merci aussi !

 

Commentaires  

 
#1 TomM 08-12-2011 12:56
Un script qui roule comme sur des roulettes! Merci Nicolas
Citer
 
 
#2 Nicolas Moyroud 11-12-2011 21:29
Pas de quoi Thomas. C'était vraiment pas compliqué du tout. J'ai passé plus de temps pour écrire l'article sur le site que pour faire le script ! ;-)
Citer
 
 
#3 Sébastien Joly 15-02-2012 17:35
Bonjour Nicolas,
Voici la version MickeySoft pour les utilisateurs n'étant pas à l'aise avec Linux et/ou un live CD :


'Début script
'========================================
' NOM : Extract_RPG.vbs
' AUTEUR : Sébastien Joly
' DATE : 15/02/2012
' Description : Télécharger les 96 fichiers du registre parcellaire graphique par département depuis le site http://data.gouv.fr
'========================================
MonIndex = Array("01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","2A","2B","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44","45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65","66","67","68","69","70","71","72","73","74","75","76","77","78","79","80","81","82","83","84","85","86","87","88","89","90","91","92","93","94","95")
For i = LBound(MonIndex) To UBound(MonIndex)
' URL de téléchargement
strFileURL = "http://www.data.gouv.fr/var/download/ign/RPG_2010_0" & MonIndex(i) & ".ZIP"
' Chemin courrant
Dim sCurPath
sCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(".")
' Déterminer nom fichier
Dim UrlArray
UrlArray = Split(strFileURL, "/", -1,1)
TopOfArray = UBound(UrlArray)
' Chemin de sauvegarde
strHDLocation = sCurPath & "\" & UrlArray(TopOfArray)
' Téléchargement
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
objXMLHTTP.open "GET", strFileURL, False
objXMLHTTP.send()
If objXMLHTTP.Status = 200 Then
Set objADOStream = CreateObject("ADODB.Stream")
objADOStream.Open
objADOStream.Type = 1 'adTypeBinary
objADOStream.Write objXMLHTTP.ResponseBody
objADOStream.Position = 0 'Set the stream position to the start
Set objFSO = Createobject("Scripting.FileSystemObject")
If objFSO.Fileexists(strHDLocation) Then objFSO.DeleteFile strHDLocation
Set objFSO = Nothing
'Sauvegarde
objADOStream.SaveToFile strHDLocation
objADOStream.Close
Set objADOStream = Nothing
End If
Set objXMLHTTP = Nothing
Next
'========================================
'Fin script
Citer
 
 
#4 Nicolas Moyroud 16-02-2012 17:34
Merci Seb. Je viens de copier ton code dans un fichier en téléchargement. Ça me rappelle des mauvais souvenir de revoir un code en VB ! ;-)
Citer
 
 
#5 Sébastien 16-02-2012 20:42
Citation en provenance du commentaire précédent de Nicolas Moyroud:
Merci Seb. Je viens de copier ton code dans un fichier en téléchargement. Ça me rappelle des mauvais souvenir de revoir un code en VB ! ;-)

On peut aussi envisager le :
- Ruby
- Rexx
- Powershell
- bash
- ksh
- Python
- Perl
- Tcl/Tk
- JavaScript
- WSH
- AppleScript
... :P
Citer
 
 
#6 domlysz 17-02-2012 10:22
Au secours le vbs, vite une version Python :

# -*- coding:Latin-1 -*-
import urllib

outFolder="C:\\"
ls=[str(i+1).zfill(3) for i in range(95)]+['02A','02B']
for num in ls:
fileName="RPG_2010_"+num+".ZIP"
urllib.urlretrieve ("http://www.data.gouv.fr/var/download/ign/"+fileName, outFolder+fileName)
print fileName+" ok"
Citer
 
 
#7 Nicolas Moyroud 20-02-2012 12:31
Tout à fait d'accord avec toi domlysz concernant le VB. Merci pour ta version Python. Je l'ajoute en téléchargement de ce pas ! :-)
Je ne connais pas bien Python, sympa la construction du tableau "ls". J'ai appris quelque chose merci à toi.
Citer
 
 
#8 loic 17-04-2012 09:43
Bonjour, juste une petite question à propos du site data.gouv pour telecharger le RPG; Le lien ne marche pas " 404 not found" . Est_ce temporaire ? Existe t'il un autre site pour télécharger le RPG ? Car j'en aurais besoin rapidement..
Merci d'avance
Citer
 
 
#9 Nicolas Moyroud 21-04-2012 00:06
Bonjour,
Il y a peut-être une coupure temporaire du site du RPG. J'espère qu'ils ne se sont pas amusés à changer l'adresse du service ! Là je n'ai pas trop le temps, mais je regarderai si ça ne fonctionne toujours pas d'ici quelques jours. J'adapterai le script de téléchargement si besoin.
Citer
 
 
#10 Guy Roussin 31-05-2012 14:34
En une ligne :
for i in {01..95} ; do wget http://www.data.gouv.fr/var/download/ign/RPG_2010_0$i.ZIP ; done
Citer
 
 
#11 Nicolas Moyroud 31-05-2012 16:38
Salut Guy,
Content de te voir passer sur mon site ;-)
Non pour le script ce n'est pas si simple, il faut gérer le cas de la Corse avec 2A et 2B ! Mais on doit pouvoir peut-être faire plus simple que ce que j'ai fait...
Citer
 
 
#12 Guy Roussin 31-05-2012 16:53
Dans la même ligne corse comprise :
for i in {01..95} 2A 2B; do wget http://www.data.gouv.fr/var/download/ign/RPG_2010_0$i.ZIP ; done
Citer
 
 
#13 Xavier 24-02-2014 19:48
Grace à votre article, j'ai découvert le site data.gouv.fr. Merci beaucoup.
Citer
 

Ajouter un Commentaire

Tout les contenus de ce site sont publiés selon les termes de la licence Creative Commons by sa. En ajoutant votre commentaire, vous acceptez implicitement sa mise à disposition selon les termes de cette licence.


Code de sécurité
Rafraîchir