[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