2017-11-11 241 views
2

我試圖用我從這裏下載GeoJSON的數據文件繪製英國的等值線圖:https://data.gov.uk/dataset/regions-december-2016-full-extent-boundaries-in-england2的Python大青葉等值線繪製

下面是JSON數據的例子:

{ 
    "type":"FeatureCollection", 
    "features":[ 
    { 
     "type":"Feature", 
     "properties":{"objectid":1,"rgn16cd":"E12000001","rgn16nm":"North East","bng_e":417313,"bng_n":600358,"long":-1.72889996,"lat":55.2970314,"st_areashape":8675727008.425964,"st_lengthshape":795456.8022925043}, 
     "geometry":{ 
     "type":"MultiPolygon", 
     "coordinates":[[[[-2.03,55.80991509288915],[-2.030069429494278,55.80991420787532],[-2.0300215494803053,55.80992140589199],[-2.0300040593387223,55.80993039246682], 

我csv文件看起來像這樣: csv

我基本上只是想使用葉子繪製Taxi列。

問題是情節不顯示任何東西。我使用了下面的代碼。

import pandas as pd 
import os 
import json 

# read in population data 
df = pd.read_csv('map-data.csv') 

import folium 
from branca.utilities import split_six 
state_geo = 'Regions_December_2016_Full_Extent_Boundaries_in_England.geojson' 

m = folium.Map(location=[55, 4], zoom_start=5) 
m.choropleth(
    geo_data=state_geo, 
    data=df, 
    columns=['LA-Code', 'Taxi'], 
    key_on='feature.properties.rgn16cd', 
    fill_color='YlGn', 
    fill_opacity=0.7, 
    line_opacity=0.2, 
    legend_name='h', 
    highlight=True 
) 

m 

我認爲這個問題與key_on參數有關。 我可以在JSON文件使用像這樣訪問正確的代碼:

geodata['features'][0]['properties']['rgn16cd'] 

這使我回到了正確的LA碼(E12000001),但它似乎 沒有在上面的代碼工作。我使用的KEY_ON參數的功能,而不是功能也試過,但那個給我一個錯誤

AttributeError的:「NoneType」對象有沒有屬性「得到」

沒有人有任何想法的問題是什麼?謝謝。

回答

1

folium library's documentation on github

To display it in a Jupyter notebook, simply ask for the object representation:

In : m

很可能是你的問題的根源是,你是不是在木星的筆記本。將地圖保存爲html文件並在瀏覽器中打開它可以正常工作,無需更改json文件。試試下面的代碼:

import pandas as pd 
import folium 

# read in population data 
df = pd.read_csv('map-data.csv') 
state_geo = 'Regions_December_2016.geojson' 


m = folium.Map(location=[55, 4], zoom_start=5) 
m.choropleth(
    geo_data=state_geo, 
    data=df, 
    columns=['LA-Code', 'Taxi'], 
    key_on='feature.properties.rgn16cd', 
    fill_color='YlGn', 
    fill_opacity=0.7, 
    line_opacity=0.2, 
    legend_name='h', 
    highlight=True 
) 

m.save("my_map.html") 

要打開腳本中的地圖,可以通過subprocess.callos.system打電話給你的網絡瀏覽器,通過將這些線在腳本的末尾:

import os 
os.system("firefox my_map.html")