conversion de json OSM en csv avec tous les tags trouvés

This commit is contained in:
Tykayn 2024-10-17 13:04:07 +02:00 committed by tykayn
parent 6bdbcac95d
commit d9faa53577
2 changed files with 68 additions and 6 deletions

View File

@ -12,18 +12,46 @@ parser.add_argument("-o", "--output", default=None, help="Le nom du fichier de s
args = parser.parse_args() args = parser.parse_args()
# charger le fichier GeoJSON en tant que dataframe # charger le fichier GeoJSON en tant que dataframe
geojson = pdg.read_geojson(args.geojson) with open(args.geojson, "r") as f:
df = geojson.to_dataframe() data = json.load(f)
# afficher le décompte des éléments
print("Nombre d'éléments dans le fichier GeoJSON :", len(data["elements"]))
print(json.dumps(data["elements"][0], indent=2))
# for element in data["elements"]:
# ajouter les colonnes latitude et longitude à partir des géométries des points # initialiser un dataframe vide
# df[["latitude", "longitude"]] = pd.json_normalize(df["geometry"].apply(lambda x: {"latitude": x["coordinates"][1], "longitude": x["coordinates"][0]})) # définir les noms des colonnes à partir des propriétés prises dans la boucle append
keys = list(data["elements"][0]['tags'].keys())
columns= keys
# columns = ["id", "latitude", "longitude", "name", "shop", "opening_hours", "ref:FR:SIRET", "contact:city","contact:housenumber", "contact:street","contact:postcode","contact:website", "check_date", "email", "phone"]
# définir le nom du fichier de sortie CSV # initialiser le dataframe avec les colonnes définies ci-dessus
df = pd.DataFrame(columns=columns)
# définir une fonction qui prend en entrée un élément du JSON et renvoie un dictionnaire avec les valeurs correspondantes pour chaque tag
def get_element_tags_values(element):
values = {}
for column in columns[1:]: # on saute la première colonne "id"
tag = column.split(":")[-1] # on prend le nom du tag à partir du nom de la colonne
values[column] = element["tags"].get(tag, "")
values["id"] = element["id"]
values["latitude"] = element["lat"]
values["longitude"] = element["lon"]
return values
# parcourir chaque élément dans la clé "elements"
for element in data["elements"]:
# ajouter une nouvelle ligne au dataframe avec les valeurs de chaque tag
df = df._append(get_element_tags_values(element), ignore_index=True)
# # définir le nom du fichier de sortie CSV
if args.output: if args.output:
output_file = args.output output_file = args.output
else: else:
output_file = os.path.splitext(args.geojson)[0] + ".csv" output_file = os.path.splitext(args.geojson)[0] + ".csv"
print('output_file: ', output_file)
# convertir le dataframe en CSV en incluant toutes les colonnes # convertir le dataframe en CSV en incluant toutes les colonnes
df.to_csv(output_file, index=False) df.to_csv(output_file, sep=";", index=False)

View File

@ -0,0 +1,34 @@
check_date;contact:city;contact:facebook;contact:housenumber;contact:postcode;contact:street;currency:EUR;email;harassment_prevention;name;opening_hours;payment:cash;payment:credit_cards;phone;ref:FR:SIRET;shop;id;latitude;longitude
;;;;;;;labruyere.vagabonde@sfr.fr;ask_angela;La Bruyere Vagabonde;Tu-Sa 10:00-19:00;;;+33 5 16 34 47 57;;books;821960105.0;46.5825312;0.3408317
;;;;;;;otzi.poitiers@gmail.com;ask_angela;Ötzi;Tu-Sa 10:0019:00;;;;;shoes;821960281.0;46.5820663;0.3409686
;;;;;;;;ask_angela;Pharmacie Gambetta;"Mo-Fr 08:00-20:30; Sa 08:30-20:30";;;+33 4 78 72 46 24;;;926332915.0;45.7513353;4.8533207
;;;;;;;mairie.beaulieu@poitiers.fr;ask_angela;Mairie de quartier de Beaulieu;Mo-Fr 08:30-12:30,13:30-17:15, Tu[1] 08:30-12:30 off;;;+33 5 49 30 22 08;;;1328307136.0;46.5746098;0.378643
;;;;;;;mairie.couronneries@poitiers.fr;ask_angela;Mairie de quartier des Couronneries;Mo-Fr 08:30-12:30,13:30-17:15;;;+33 5 49 47 78 85;;;1328395862.0;46.5885715;0.3608095
;;;;;;;;ask_angela;Le Court-Circuit;"Mo-Fr 10:00-01:00; Sa 16:00-01:00";;;+33 9 54 36 61 29;;;1825539647.0;45.7516361;4.8432671
;;;;;;;mairie.bellejouanne@poitiers.fr;ask_angela;Mairie de quartier de Bellejouanne;Mo-Fr 08:30-12:30,13:30-17:15;;;+33 5 49 30 81 52;;;1846885829.0;46.5659483;0.3124482
;;;;;;;;ask_angela;Bleu Citron;"We 12:30-18:30; SH 07:30-18:30";;;+33 5 49 44 53 58;;;1873359201.0;46.5920454;0.3651505
;;;;;;;contact@animation-couronneries.fr;ask_angela;Centre dAnimation des Couronneries;Tu-Fr 14:00-18:30;;;+33 5 49 44 12 48;;;1873359248.0;46.5890263;0.3656885
;;;;;;;;ask_angela;Maison des Quartiers Seve;"Mo-Th 11:00-13:30,15:30-18:30; Fr 11:00-13:30";;;+33 5 49 00 87 28;;;2144013790.0;46.5907089;0.3799719
;;;;;;;mairie.belair@poitiers.fr;ask_angela;Mairie de quartier de Bel-Air;Mo-Fr 08:30-12:30,13:30-17:15;;;+33 5 49 58 38 80;;;2206970904.0;46.5903642;0.3238923
;;;;;;;;ask_angela;Malting-Pot;Mo-We 12:00-14:00,17:00-24:00, Th-Sa 12:00-24:00;;;+33 9 70 95 27 78;;;3824873160.0;45.7474334;4.8583696
;;;;;;;magasin.poitiers30@rannou-metivier.com;ask_angela;Rannou Métivier;"Mo 13:45-19:00; Tu-Sa 09:00-19:00";;;+33 5 49 30 30 10;;confectionery;4145418850.0;46.5824409;0.3414729
;;;;;;;;ask_angela;Médiathèque des Couronneries;Jul-Aug Tu-We 10:00-12:00,14:00-18:00, Jul-Aug Th-Fr 14:00-18:00, Jul-Aug Sa 10:00-12:00,14:00-17:00;;;+33 5 49 30 20 70;;;7985485920.0;46.5891843;0.356584
;;;;;;;;ask_angela;Okara;Mo-Fr 08:30-15:00;;;;;;8117393921.0;45.7471653;4.8381774
;;;;;;;gambetta.lingerie@gmail.com;ask_angela;Gambetta lingerie;Mo 14:00-18:00, Tu-Sa 10:00-13:00,13:30-19:00;;;+33 6 61 79 91 96;;clothes;8592775317.0;46.5828886;0.341707
;;;;;;;bar-poitiers@chez-alphonse.com;ask_angela;Chez Alphonse;Tu-Sa 16:00-01:00;;;+33 6 18 99 12 84;;;8592775322.0;46.5833764;0.3412903
;;;;;;;contact@totemtempo.com;ask_angela;Totem & Tempo;Mo-Sa 12:00-01:00;;;+33 7 67 34 78 77;;;9095125230.0;45.7484208;4.8426113
;;;;;;;;ask_angela;Médiathèque Saint-Eloi;"Tu,Fr 14:00-18:00; We,Sa 10:00-12:00,14:00-18:00";;;+33 5 49 30 20 75;;;9480796637.0;46.5900313;0.3828364
;;;;;;;poitiers@lebibliovore.fr;ask_angela;Le bibliovore;"Tu-Fr 10:30-12:30,14:30-19:00; Sa 10:00-13:00,14:00-19:00";;;+33 7 49 68 41 46;;books;11579437577.0;46.5834523;0.3417176
;;;;;;;info@astucesdecuisine.fr;ask_angela;Astuces de cuisine;Tu-Sa 10:00-13:00,14:00-18:00;;;+33 9 86 34 30 14;;general;11734847201.0;46.581746;0.3408588
;;;;;;;mairie.sainteloi@poitiers.fr;ask_angela;Mairie de quartier de Saint-Eloi;"Tu-Fr 08:30-12:30,13:30-17:15; Aug 01-30 off; Tu[1] 08:30-12:30 off";;;+33 5 49 30 20 65;;;11932728183.0;46.589809;0.3827432
;;;;;;;maison.gibauderie@wanadoo.fr;ask_angela;Maison de la Gibauderie;"Mo,Tu,Th 13:30-18:30, We 09:00-12:00,13:00-17:30, Fr 13:30-18:30; SH Mo,Tu,Th-Fr 13:00-18:00, We 10:00-12:00,13:00-18:00";;;+33 5 49 47 83 57;;;12091860570.0;46.5661514;0.3686592
;;;;;;;;ask_angela;Mairie annexe;;;;;;;12091860572.0;46.5669569;0.342954
;;;;;;;;ask_angela;Médiathèque des Trois-Cités;"Sep-Jun Tu 14:00-19:00, We 09:30-12:00,14:00-18:00, Th 09:30-12:00, Fr 14:00-19:00, Sa 09:30-12:00,14:00-18:00; Jul-Aug Tu,Fr 14:00-18:00, We 09:30-12:00,14:00-18:00, Th 09:30-12:00, Sa 09:30-12:30";;;+33 5 49 30 21 80;;;12091860573.0;46.5668148;0.3428766
;;;;;;;amarrhaj@lelocal.asso.fr;ask_angela;L'Amarr'HAJ;;;;+33 5 49 47 72 24;;;12091860578.0;46.6082502;0.3453262
;;;;;;;maisonsegeron@gmail.com;ask_angela;Le Grand Magasin;Tu-Fr 10:30-19:00, Sa 10:00-19:00;;;;;furniture;12092290924.0;46.5823393;0.341443
;;;;;;;info@lagazettepoitiers.com;ask_angela;La Gazette;Mo-Su 12:00-14:30,19:00-22:30;;;+33 5 49 61 49 21;;;12092290925.0;46.5829209;0.3420038
;;;;;;;local.poitiers@gmail.com;ask_angela;Le Petit Alphonse;Tu-Sa 16:00-01:00;;;;;;12092290926.0;46.5834039;0.3416832
;;;;;;;;ask_angela;The Body Shop;Mo-Sa 10:0019:00;;;+33 9 77 94 70 31;;perfumery;12092357011.0;46.5822324;0.3424257
;;;;;;;;ask_angela;Le petit Souk;Mo 14:00-19:00, Tu-Sa 10:00-19:00;;;+33 5 49 55 93 35;;general;12092357013.0;46.5823388;0.3422069
;;;;;;;;ask_angela;Médiathèque Médiasud;Tu 14:00-18:00, We,Fr 09:30-12:00,14:00-18:00, Sa 10:00-12:30,14:00-17:00;;;+33 5 49 30 20 60;;;12095141963.0;46.566426;0.3121249
;;;;;;;accueil@cap-sud-poitiers.com;ask_angela;Cap Sud;"Mo 14:00-19:00, Tu-Fr 9:00-12:30,13:30-19:00; SH Mo 18:30+ off";;;+33 5 49 62 97 4;;;12095141964.0;46.5662102;0.3131492
1 check_date contact:city contact:facebook contact:housenumber contact:postcode contact:street currency:EUR email harassment_prevention name opening_hours payment:cash payment:credit_cards phone ref:FR:SIRET shop id latitude longitude
2 labruyere.vagabonde@sfr.fr ask_angela La Bruyere Vagabonde Tu-Sa 10:00-19:00 +33 5 16 34 47 57 books 821960105.0 46.5825312 0.3408317
3 otzi.poitiers@gmail.com ask_angela Ötzi Tu-Sa 10:00–19:00 shoes 821960281.0 46.5820663 0.3409686
4 ask_angela Pharmacie Gambetta Mo-Fr 08:00-20:30; Sa 08:30-20:30 +33 4 78 72 46 24 926332915.0 45.7513353 4.8533207
5 mairie.beaulieu@poitiers.fr ask_angela Mairie de quartier de Beaulieu Mo-Fr 08:30-12:30,13:30-17:15, Tu[1] 08:30-12:30 off +33 5 49 30 22 08 1328307136.0 46.5746098 0.378643
6 mairie.couronneries@poitiers.fr ask_angela Mairie de quartier des Couronneries Mo-Fr 08:30-12:30,13:30-17:15 +33 5 49 47 78 85 1328395862.0 46.5885715 0.3608095
7 ask_angela Le Court-Circuit Mo-Fr 10:00-01:00; Sa 16:00-01:00 +33 9 54 36 61 29 1825539647.0 45.7516361 4.8432671
8 mairie.bellejouanne@poitiers.fr ask_angela Mairie de quartier de Bellejouanne Mo-Fr 08:30-12:30,13:30-17:15 +33 5 49 30 81 52 1846885829.0 46.5659483 0.3124482
9 ask_angela Bleu Citron We 12:30-18:30; SH 07:30-18:30 +33 5 49 44 53 58 1873359201.0 46.5920454 0.3651505
10 contact@animation-couronneries.fr ask_angela Centre d’Animation des Couronneries Tu-Fr 14:00-18:30 +33 5 49 44 12 48 1873359248.0 46.5890263 0.3656885
11 ask_angela Maison des Quartiers Seve Mo-Th 11:00-13:30,15:30-18:30; Fr 11:00-13:30 +33 5 49 00 87 28 2144013790.0 46.5907089 0.3799719
12 mairie.belair@poitiers.fr ask_angela Mairie de quartier de Bel-Air Mo-Fr 08:30-12:30,13:30-17:15 +33 5 49 58 38 80 2206970904.0 46.5903642 0.3238923
13 ask_angela Malting-Pot Mo-We 12:00-14:00,17:00-24:00, Th-Sa 12:00-24:00 +33 9 70 95 27 78 3824873160.0 45.7474334 4.8583696
14 magasin.poitiers30@rannou-metivier.com ask_angela Rannou Métivier Mo 13:45-19:00; Tu-Sa 09:00-19:00 +33 5 49 30 30 10 confectionery 4145418850.0 46.5824409 0.3414729
15 ask_angela Médiathèque des Couronneries Jul-Aug Tu-We 10:00-12:00,14:00-18:00, Jul-Aug Th-Fr 14:00-18:00, Jul-Aug Sa 10:00-12:00,14:00-17:00 +33 5 49 30 20 70 7985485920.0 46.5891843 0.356584
16 ask_angela Okara Mo-Fr 08:30-15:00 8117393921.0 45.7471653 4.8381774
17 gambetta.lingerie@gmail.com ask_angela Gambetta lingerie Mo 14:00-18:00, Tu-Sa 10:00-13:00,13:30-19:00 +33 6 61 79 91 96 clothes 8592775317.0 46.5828886 0.341707
18 bar-poitiers@chez-alphonse.com ask_angela Chez Alphonse Tu-Sa 16:00-01:00 +33 6 18 99 12 84 8592775322.0 46.5833764 0.3412903
19 contact@totemtempo.com ask_angela Totem & Tempo Mo-Sa 12:00-01:00 +33 7 67 34 78 77 9095125230.0 45.7484208 4.8426113
20 ask_angela Médiathèque Saint-Eloi Tu,Fr 14:00-18:00; We,Sa 10:00-12:00,14:00-18:00 +33 5 49 30 20 75 9480796637.0 46.5900313 0.3828364
21 poitiers@lebibliovore.fr ask_angela Le bibliovore Tu-Fr 10:30-12:30,14:30-19:00; Sa 10:00-13:00,14:00-19:00 +33 7 49 68 41 46 books 11579437577.0 46.5834523 0.3417176
22 info@astucesdecuisine.fr ask_angela Astuces de cuisine Tu-Sa 10:00-13:00,14:00-18:00 +33 9 86 34 30 14 general 11734847201.0 46.581746 0.3408588
23 mairie.sainteloi@poitiers.fr ask_angela Mairie de quartier de Saint-Eloi Tu-Fr 08:30-12:30,13:30-17:15; Aug 01-30 off; Tu[1] 08:30-12:30 off +33 5 49 30 20 65 11932728183.0 46.589809 0.3827432
24 maison.gibauderie@wanadoo.fr ask_angela Maison de la Gibauderie Mo,Tu,Th 13:30-18:30, We 09:00-12:00,13:00-17:30, Fr 13:30-18:30; SH Mo,Tu,Th-Fr 13:00-18:00, We 10:00-12:00,13:00-18:00 +33 5 49 47 83 57 12091860570.0 46.5661514 0.3686592
25 ask_angela Mairie annexe 12091860572.0 46.5669569 0.342954
26 ask_angela Médiathèque des Trois-Cités Sep-Jun Tu 14:00-19:00, We 09:30-12:00,14:00-18:00, Th 09:30-12:00, Fr 14:00-19:00, Sa 09:30-12:00,14:00-18:00; Jul-Aug Tu,Fr 14:00-18:00, We 09:30-12:00,14:00-18:00, Th 09:30-12:00, Sa 09:30-12:30 +33 5 49 30 21 80 12091860573.0 46.5668148 0.3428766
27 amarrhaj@lelocal.asso.fr ask_angela L'Amarr'HAJ +33 5 49 47 72 24 12091860578.0 46.6082502 0.3453262
28 maisonsegeron@gmail.com ask_angela Le Grand Magasin Tu-Fr 10:30-19:00, Sa 10:00-19:00 furniture 12092290924.0 46.5823393 0.341443
29 info@lagazettepoitiers.com ask_angela La Gazette Mo-Su 12:00-14:30,19:00-22:30 +33 5 49 61 49 21 12092290925.0 46.5829209 0.3420038
30 local.poitiers@gmail.com ask_angela Le Petit Alphonse Tu-Sa 16:00-01:00 12092290926.0 46.5834039 0.3416832
31 ask_angela The Body Shop Mo-Sa 10:00–19:00 +33 9 77 94 70 31 perfumery 12092357011.0 46.5822324 0.3424257
32 ask_angela Le petit Souk Mo 14:00-19:00, Tu-Sa 10:00-19:00 +33 5 49 55 93 35 general 12092357013.0 46.5823388 0.3422069
33 ask_angela Médiathèque Médiasud Tu 14:00-18:00, We,Fr 09:30-12:00,14:00-18:00, Sa 10:00-12:30,14:00-17:00 +33 5 49 30 20 60 12095141963.0 46.566426 0.3121249
34 accueil@cap-sud-poitiers.com ask_angela Cap Sud Mo 14:00-19:00, Tu-Fr 9:00-12:30,13:30-19:00; SH Mo 18:30+ off +33 5 49 62 97 4 12095141964.0 46.5662102 0.3131492