Я создал «лондонский» фрейм данных для лондонских районов с названиями, населением и координатами. Затем я создал карту фолиума и добавил маркеры каждого района. Это сработало на отлично. Однако затем я попытался создать карту хороплета, показывающую интенсивность населения в каждом районе. Я использую платформу IBM Watson Studio Python Notebook.
Я нашел файл геойсона для лондонских районов по следующей ссылке https://skgrange.github.io/www/data/london_boroughs.json. Он имеет следующую структуру, со списком «Элемент», заполненным данными района и его координатами, и так далее по одному.
{
"type": "FeatureCollection",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [
{
"type": "Feature",
"id": 0,
"properties": {
"id": 1,
"name": "Kingston upon Thames",
"code": "E09000021",
"area_hectares": 3726.117,
"inner_statistical": 0
},
"geometry": {"type": "MultiPolygon", "coordinates": [] }
},
{
"type": "Feature",
"id": 23,
"properties": {
"id": 24,
"name": "Kensington and Chelsea",
"code": "E09000020",
"area_hectares": 1238.379,
"inner_statistical": 1
},
"geometry": {"type": "MultiPolygon","coordinates": [] }
}
Я проверил фрейм данных London ['Population'], это float. Все названия районов в Лондоне ['Borough'] совпадают с именами в файле json.
Когда я запускаю типичный код choropleth, ноутбук не отображает ничего. Также не появляется сообщение об ошибке. Я попробовал все, не зная, в чем может быть проблема. Неверный файл JSON? Возможно, вы можете посоветовать лучший JSON, если это так. Пожалуйста, помогите.
from geopy.geocoders import Nominatim
import folium
address = 'London'
geolocator = Nominatim(user_agent="ny_explorer")
location = geolocator.geocode(address)
latitude = location.latitude
longitude = location.longitude
map_london = folium.Map(location=[latitude, longitude], zoom_start=10, height = '70%', width = '70%')
# add markers to map
for lat, lng, borough in zip(London['Latitude'], London['Longitude'], London['Borough']):
label = '{}'.format(borough)
label = folium.Popup(label, parse_html=True)
folium.CircleMarker(
[lat, lng],
radius=5,
popup=label,
color='blue',
fill=True,
fill_color='#3186cc',
fill_opacity=0.7,
parse_html=False).add_to(map_london)
the above section worked perfectly well with beautiful London and borough markers shown.
!wget --quiet https://skgrange.github.io/www/data/london_boroughs.json -O london.json
london_geo = r'london.json'
map_london.choropleth(
geo_data=london_geo,
name='choropleth',
data=London,
columns=['Borough', 'Population'],
key_on='Features.properties.name',
fill_color='BuPu',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='Population rate of London Boroughs'
)
#Nothing appears here. No error message.