Folium est une bibliothèque qui visualise les données sur une carte.
JavaScript Dépliant Il existe une bibliothèque qui prend en charge le traitement interactif des cartes On peut dire que Folium a analysé cette bibliothèque et l'a rendue disponible en Python.
Je n'ai pas trouvé la version correspondante sur la page officielle. En regardant les catégories sur pypi, il semble que les systèmes 2 et 3 fonctionneront.
Exécutez la commande suivante dans un environnement Python quelque peu nouveau. C'est «le plus facile».
installation de folium
$ pip install folium
Si vous ne voulez pas polluer l'environnement, séparez-le au préalable avec venv. J'ai mis en place un conteneur jetable.
FROM python:3.5.2-alpine
RUN pip install folium
Démarrer le conteneur
#Créer une image folium avec un Dockerfile dans le répertoire courant
docker build -t folium .
#Lancer le conteneur à partir de l'image folium
docker run -it -v /home/nanakenashi/workspace:/workspace folium /bin/sh
Se référer au fichier html craché de Folium Le répertoire courant (espace de travail) est monté à l'intérieur du conteneur.
Merci à QuickStart. Tout d'abord, démarrez le shell interactif de Python et chargez le folium.
Préparation
$ python
Python 3.5.2 (default, Nov 17 2016, 22:46:45)
[GCC 5.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import folium
Créez un objet Map
avec les coordonnées et le niveau de zoom dans une main, nommez-le et enregistrez-le.
Plus le niveau de zoom est élevé, plus le niveau de zoom est élevé.
Créer et enregistrer des cartes
>>> map1 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> map1.save('/workspace/map1.html')
Essayez d'ouvrir le fichier html enregistré dans votre navigateur.
Je me demande si les coordonnées spécifiées dans location
étaient le centre
Je pensais avoir vu l'Australie hors du centre, mais je vais passer à autre chose.
Ajouter un marqueur
>>> map2 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> folium.Marker([-31.253218, 146.921099], popup='New South Wales').add_to(map2)
<folium.map.Marker object at 0x7fc1c73bd048>
>>> map2.save('/workspace/map2.html')
Ouvrez la map2.html enregistrée.
Un marqueur est apparu.
Au fait, si vous cliquez dessus, la chaîne de caractères spécifiée par popup
sera affichée.
Bien que diverses options de visualisation soient utilisées même dans Quickstart Cette fois, je vais me concentrer sur le marqueur circulaire et mettre quelque chose. Premier essai.
Afficher les marqueurs circulaires
>>> map3 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
>>> folium.CircleMarker([-31.253218, 146.921099],
... radius=100000,
... popup='New South Wales',
... color='#3186cc',
... fill_color='#3186cc',
... ).add_to(map3)
<folium.features.CircleMarker object at 0x7fc1c7408a20>
>>> map3.save('/workspace/map3.html')
Ouvrez map3 dans votre navigateur.
Puisqu'il semble que la quantité puisse être exprimée par «rayon», reflétons une valeur numérique pour chaque ville. À ce stade, je n'ai pas besoin d'être interactif, je vais donc écrire un script.
Placer des marqueurs par ville
import folium
map4 = folium.Map(location=[-30.159215, 138.955078], zoom_start=4)
#Stocke les données pour chaque ville (initialement obtenues à partir d'un fichier DB ou csv)
states = (
{'lat': -35.473468, 'lon': 149.012368, 'value': 1, 'name': 'Australian Capital Territory'},
{'lat': -31.253218, 'lon': 146.921099, 'value': 2, 'name': 'New South Wales'},
{'lat': -19.491411, 'lon': 132.550960, 'value': 3, 'name': 'Northern Territory'},
{'lat': -20.917574, 'lon': 142.702796, 'value': 4, 'name': 'Queensland'},
{'lat': -30.000232, 'lon': 136.209155, 'value': 5, 'name': 'South Australia'},
{'lat': -41.454520, 'lon': 145.970665, 'value': 6, 'name': 'Tasmania'},
{'lat': -37.471308, 'lon': 144.785153, 'value': 7, 'name': 'Victoria'},
{'lat': -27.672817, 'lon': 121.628310, 'value': 8, 'name': 'Western Australia'}
)
#Poids pour rendre la taille du cercle facile à comprendre
WEIGHT = 100000
#Ajoutez des marqueurs pour chaque ville (car il est difficile d'augmenter le nombre, l'ajout de lots est un problème futur)
for state in states:
folium.CircleMarker(
[state['lat'], state['lon']],
radius=state['value'] * WEIGHT,
popup=state['name'],
color='#3186cc',
fill_color='#3186cc',
).add_to(map4)
map4.save('/workspace/map4.html')
Après avoir exécuté le script ci-dessus, affichez map4.html dans le navigateur.
Le contenu de QuickStart donnait l'impression que c'était comme ça. Si vous souhaitez l'utiliser plus solidement, consultez la documentation Folium Il semble bon de vérifier également le [document Leaflet] original (http://leafletjs.com/reference-1.0.2.html).
Je pense que Google Maps est souvent utilisé lors de la fourniture en tant que service Ces bibliothèques sont également utiles pour la recherche et les offres internes. Dans l'article, il était limité à une visualisation superficielle jusqu'à ce que le marqueur soit placé. Vous pouvez créer diverses expressions telles que la modification de la carte elle-même et l'organisation des polygones.
Jupyter Notebook semble être capable d'analyser plus interactivement Si vous l'avez utilisé, essayez-le.
Recommended Posts