[Dessinetaville] Carte des transactions immobilières commerciales avec de l'opendata et du logiciel libre
Jean-Christophe Becquet
jcb at apitux.com
Dim 28 Avr 18:06:34 CEST 2019
Le 27/04/2019 10:05, Jean-Christophe Becquet a écrit :
> Tu peux aussi récupérer les données directement avec l'API, par exemple
> les maisons à Digne (04070) :
> http://api.cquest.org/dvf?code_commune=94068&type_local=Maison
>
> Tu obtiens un fichier au format JSON que tu peux convertir en CSV
Suite et fin de cette petite séquence technique.
J'ai utilisé jq, csvkit et quelques outils standards sous GNU-Linux
(wget, tr, sed) pour écrire le script dvf ci-joint.
Tu indiques un code_commune et un type_local (lignes 9-10). Le programme
télécharge les données et génère un fichier CSV simplifié directement
utilisable en import dans un calque uMap.
JC
--
Conférence « Images en commun » - mardi 30 avril à Digne
http://www.mediatheque-digne.fr/cms/articleview/id/86
==============APITUX : le choix du logiciel libre==============
APITUX - Jean-Christophe Becquet
2 chemin du Tivoli - 04000 Digne-les-Bains
06 25 86 07 92 - jcb at apitux.com - http://www.apitux.com
SIRET : 452 887 441 00031 - APE : 6202A
===============================================================
-------------- section suivante --------------
#!/bin/bash
# APITUX - Jean-Christophe Becquet
# samedi 27 avril 2019
# licence GPL 3.0
#apt install jq
#apt install python3-csvkit
CODE_COMMUNE="04070" #Digne
TYPE_LOCAL="Maison"
#TYPE_LOCAL="Appartement"
#TYPE_LOCAL="Local"
FICHIER="dvf-${CODE_COMMUNE}-${TYPE_LOCAL::3}"
FICHIER="${FICHIER,,}" #minuscules
mkdir ${FICHIER}
cd ${FICHIER}
URL="http://api.cquest.org/dvf?code_commune=${CODE_COMMUNE}&type_local=${TYPE_LOCAL}"
wget -O "${FICHIER}.json" "${URL}"
sleep 3
#conversion en CSV
jq -r '.resultats[] | [.[] | tostring] | @csv' ${FICHIER}.json > ${FICHIER}-init.csv
#selection des autres colonnes
csvcut -c 9,11,23,39,43,44-45 ${FICHIER}-init.csv > ${FICHIER}-autres.csv
#selection et fusion des colonnes pour l'adresse
csvcut -c 12,13,14,16 ${FICHIER}-init.csv > ${FICHIER}-adresse.csv
cat ${FICHIER}-adresse.csv | tr ',' ' ' | tr -s ' ' | tr -d '\"' | sed -e "s/^ //" > ${FICHIER}-adresse-fus.csv
#fusion des colonnes autres et adresse
csvjoin ${FICHIER}-autres.csv ${FICHIER}-adresse-fus.csv > ${FICHIER}-autres-adresse.csv
#ajout d'une ligne de titre
sed '1idate,prix,numero_plan,surface_bati,surface_terrain,lat,lon,adresse' ${FICHIER}-autres-adresse.csv > ${FICHIER}.csv
echo "Le fichier CSV est dans ${FICHIER}/${FICHIER}.csv"
Plus d'informations sur la liste de diffusion Dessinetaville