08 Déc 2011 |
|
| 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 ! 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 ! |
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.







Et comme je vous aime bien, je vous propose mon script en téléchargement ici :
Commentaires
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
On peut aussi envisager le :
- Ruby
- Rexx
- Powershell
- bash
- ksh
- Python
- Perl
- Tcl/Tk
- JavaScript
- WSH
- AppleScript
...
# -*- 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"
Je ne connais pas bien Python, sympa la construction du tableau "ls". J'ai appris quelque chose merci à toi.
Merci d'avance
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.
for i in {01..95} ; do wget http://www.data.gouv.fr/var/download/ign/RPG_2010_0$i.ZIP ; done
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...
for i in {01..95} 2A 2B; do wget http://www.data.gouv.fr/var/download/ign/RPG_2010_0$i.ZIP ; done
S’abonner au flux RSS pour les commentaires de cet article.