Skip to content

Dasero197/geonames_json_extractor

Repository files navigation

🌍 GeoNames JSON Extractor

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

🚀 Fonctionnalités

  • Extraction des villes à partir de allCountries.txt ou allCountries.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)

📂 Structure de sortie

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
      └── ...

Exemple countries.json

[
  {
    "country_code": "BJ",
    "flag": "🇧🇯",
    "regions": [
      { "admin1_code": "AQ", "admin1_name": "Atlantique" },
      { "admin1_code": "ZO", "admin1_name": "Zou" }
    ]
  }
]

Exemple regions/BJ_AQ.json

{
  "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 }
  ]
}

⚙️ Installation

1. Cloner le dépôt

git clone https://github.com/dasero197/geonames_json_extractor.git
cd geonames_json_extractor

2. Télécharger les fichiers GeoNames nécessaires

Deux options :

🔹 Option A — Téléchargement manuel

Récupérez les fichiers depuis GeoNames Export :

  • allCountries.zip (ou allCountries.txt)
  • admin1CodesASCII.txt

Puis placez-les dans le dossier resources/.

🔹 Option B — Utiliser le script automatique

Lancez simplement

python download_ressources.py

👉 Ce script télécharge allCountries.zip, admin1CodesASCII.txt et les drapeaux emoji dans resources/.

3. Créer un environnement Python

python -m venv venv
source venv/bin/activate   # sous Linux/Mac
venv\Scripts\activate      # sous Windows

4. Installer les dépendances

pip install -r requirements.txt

▶️ Exécution

🔹 Option A — Utiliser le script in memory

Lancez simplement (ATTENTION CONSOMME BEAUCOUP DE MEMOIRE VIVE):

python generate_data.py

🔹 Option B — Utiliser le script by stream

Lancez simplement

python generate_data_by_stream.py

Une fois terminé :

  • data/countries.json est généré
  • data/regions/*.json contient un fichier par région

✅ Cas d’utilisation

  • 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)

📜 Licence

  • 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages