web-dev-qa-db-fra.com

La carte du Folium ne s'affiche pas

Fonctionnant sur la verrière version 1.5.5.3123 Avec;

Version Folium: 0.1.2, Build: 1

Le code suivant;

import folium  
import pandas as pd
LDN_COORDINATES = (51.5074, 0.1278)  
from IPython.display import HTML
import shapefile
#create empty map zoomed in on London
LDN_COORDINATES = (51.5074, 0.1278) 
map = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(map)  

Retour

<folium.folium.Map at 0x10c01ae10>

Mais rien d'autre.

Comment afficher une carte dans un bloc-notes ipython?

11
mapping dom

J'ai trouvé ce tutoriel sur Folium dans les cahiers iPython très utile. L'instance Folium brute que vous avez créée n'est pas suffisante pour que iPython affiche la carte - vous devez faire un peu plus de travail pour obtenir du code HTML que iPython peut rendre.

Pour afficher dans le bloc-notes iPython, vous devez générer le code html avec la méthode myMap._build_map (), puis l'encapsuler dans une iFrame avec un style pour iPython.

import folium  
from IPython.display import HTML, display
LDN_COORDINATES = (51.5074, 0.1278) 
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
myMap._build_map()
mapWidth, mapHeight = (400,500) # width and height of the displayed iFrame, in pixels
srcdoc = myMap.HTML.replace('"', '&quot;')
embed = HTML('<iframe srcdoc="{}" '
             'style="width: {}px; height: {}px; display:block; width: 50%; margin: 0 auto; '
             'border: none"></iframe>'.format(srcdoc, width, height))
embed

Alors qu'en retournant embed comme sortie de la cellule iPython, iPython appellera automatiquement display.display() sur l'iFrame retournée. Dans ce contexte, vous ne devriez avoir besoin d'appeler display() que si vous effectuez un autre rendu par la suite ou si vous l'utilisez dans une boucle ou une fonction.

Notez également que l'utilisation de map comme nom de variable peut être confondue avec la méthode .map () de plusieurs classes.

1
emunsing

_build_map () n'existe plus. Le code suivant a fonctionné pour moi

import folium
from IPython.display import display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(myMap)
5
Shehan Ishanka

Y a-t-il une raison pour laquelle vous utilisez une version obsolète de Folium?

Ce bloc-notes ipython clarifie certaines des différences entre 1.2 et 2, et il explique comment placer des cartes folium dans des iframes. http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb

Et le code ressemblerait à quelque chose comme ça (trouvé dans le cahier ci-dessus, il ajoute un marqueur, mais on pourrait simplement le retirer):

m = folium.Map([43,-100], zoom_start=4)

html="""
    <h1> This is a big popup</h1><br>
    With a few lines of code...
    <p>
    <code>
        from numpy import *<br>
        exp(-2*pi)
    </code>
    </p>
    """
iframe = folium.element.IFrame(html=html, width=500, height=300)
popup = folium.Popup(iframe, max_width=2650)

folium.Marker([30,-100], popup=popup).add_to(m)

m

Les documents sont également opérationnels, http://folium.readthedocs.io/en/latest/

2
Nevermore

Compte tenu des réponses ci-dessus, un autre moyen simple consiste à l'utiliser avec Jupiter Notebook.

par exemple (sur le cahier Jupiter):

import folium

london_location = [51.507351, -0.127758]

m = folium.Map(location=london_location, zoom_start=15)
m

et voyez le résultat lorsque vous appelez le "m".

2
novonimo