conversion de json OSM en csv avec tous les tags trouvés
This commit is contained in:
parent
6bdbcac95d
commit
d9faa53577
@ -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)
|
||||||
|
34
osm_output/ask_angela_points_from_openstreetmap.csv
Normal file
34
osm_output/ask_angela_points_from_openstreetmap.csv
Normal 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:00–19: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 d’Animation 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:00–19: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
|
|
Loading…
Reference in New Issue
Block a user