2017-10-17 5 views
1

Je regarde bien sûr méga python par Udemy Je suis le codage de toutes les applications selon les instructions Dans l'application 2 Création Webmaps avec Python et Folium, je suis confronté à cette erreur:python erreur d'analyse folium Oppening JSON

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-2-0a5927ab8141> in <module>() 
    26 
    27 fgp.add_child(folium.GeoJson(data=open('world.json', 'r', 
     encoding='utf-8-sig'), 
---> 28 style_function=lambda x: {'fillColor':'green' if x['properties'] 
     ['POP2005'] < 10000000 
    29 else 'orange' if 10000000 <= x['properties']['POP2005'] < 20000000 
     else 'red'})) 
    30 

C:\Users\poya\Anaconda3\lib\site-packages\folium\features.py in 
__init__(self, data, style_function, name, overlay, control, smooth_factor, 
highlight_function) 
    493     raise ValueError(msg) 
    494   else: 
--> 495    raise ValueError('Unhandled object {!r}.'.format(data)) 
    496 
    497   if style_function is None: 

ValueError: Unhandled object <_io.TextIOWrapper name='world.json' mode='r' encoding='utf-8-sig'>. 

ce code:

import folium 
import pandas 

data = pandas.read_csv("Volcanoes.txt") 
lat = list(data["LAT"]) 
lon = list(data["LON"]) 
elev = list(data["ELEV"]) 

def color_producer(elevation): 
    if elevation < 1000: 
     return 'green' 
    elif 1000 <= elevation < 3000: 
     return 'orange' 
    else: 
     return 'red' 
map = folium.Map(location=[38.58, -99.09], zoom_start=6, tiles="Mapbox 
Bright") 

fgv = folium.FeatureGroup(name="Volcanoes") 

for lt, ln, el in zip(lat, lon, elev): 
    fgv.add_child(folium.CircleMarker(location=[lt, ln], radius = 6, 
popup=str(el)+" m", 
    fill_color=color_producer(el), color = 'grey', fill_opacity=0.7)) 

fgp = folium.FeatureGroup(name="Population") 

fgp.add_child(folium.GeoJson(data=open('world.json', 'r', encoding='utf-8- 
sig'), 
style_function=lambda x: {'fillColor':'green' if x['properties']['POP2005'] 
< 10000000 
else 'orange' if 10000000 <= x['properties']['POP2005'] < 20000000 else 
'red'})) 

map.add_child(fgv) 
map.add_child(fgp) 
map.add_child(folium.LayerControl()) 

map.save("Map1.html") 

Répondre

0

Essayez d'utiliser avec le changement suivant:

fgp.add_child(folium.GeoJson(data=open('World_Population.json').read(), 
style_function = lambda x: {'fillColor':'green' if x['properties']['POP2005']< 10000000 else 'orange' if 10000000 <= x['properties']['POP2005'] < 20000000 else'red'}))