2017-11-11 242 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")