Ce projet permet de transformer les données brutes de GeoNames en une structure JSON optimisée, facile à utiliser dans une application mobile ou web.
Il génère :
data/countries.json→ liste des pays, leurs régions (Admin1) et le drapeau emoji 🇧🇯🇳🇬🇫🇷data/regions/*.json→ un fichier par région contenant toutes les villes associées
- Extraction des villes à partir de
allCountries.txtouallCountries.zip(GeoNames) - Ajout des noms lisibles des régions grâce à
admin1CodesASCII.txt - Ajout des drapeaux emoji pour chaque pays via
country-flag-emoji-json - Génération d’une structure optimisée pour lazy-loading :
countries.json(léger, pour affichage initial des pays et régions)regions/{country}_{admin1}.json(chargé seulement quand nécessaire)
data/
├── countries.json # Liste des pays avec code, drapeau et régions
└── regions/
├── AF_BDS.json # Exemple : Afghanistan - Badakhshan
├── BJ_AQ.json # Exemple : Bénin - Atlantique
└── ...
[
{
"country_code": "BJ",
"flag": "🇧🇯",
"regions": [
{ "admin1_code": "AQ", "admin1_name": "Atlantique" },
{ "admin1_code": "ZO", "admin1_name": "Zou" }
]
}
]{
"country_code": "BJ",
"admin1_code": "AQ",
"admin1_name": "Atlantique",
"cities": [
{ "geonameid": 2392087, "name": "Cotonou", "latitude": 6.36536, "longitude": 2.41833 },
{ "geonameid": 2392088, "name": "Ouidah", "latitude": 6.362, "longitude": 2.085 }
]
}git clone https://github.com/dasero197/geonames_json_extractor.git
cd geonames_json_extractorDeux options :
Récupérez les fichiers depuis GeoNames Export :
allCountries.zip(ouallCountries.txt)admin1CodesASCII.txt
Puis placez-les dans le dossier resources/.
Lancez simplement
python download_ressources.py👉 Ce script télécharge allCountries.zip, admin1CodesASCII.txt et les drapeaux emoji dans resources/.
python -m venv venv
source venv/bin/activate # sous Linux/Mac
venv\Scripts\activate # sous Windowspip install -r requirements.txtLancez simplement (ATTENTION CONSOMME BEAUCOUP DE MEMOIRE VIVE):
python generate_data.pyLancez simplement
python generate_data_by_stream.pyUne fois terminé :
data/countries.jsonest générédata/regions/*.jsoncontient un fichier par région
- Précharger les pays et régions dans une app mobile
- Charger à la demande les villes d’une région (lazy loading)
- Fournir une base complète pour la sélection d’adresses (pays → région → ville)
- Les données proviennent de GeoNames.org (licence CC-BY)
- Les drapeaux emoji viennent de
country-flag-emoji-json(MIT) - Le code de ce repo est sous licence MIT