Я пытаюсь отобразить scattermap с пользовательским файлом geojson, но у меня возникают трудности с отображением карты.
Я могу хорошо отобразить файл geojson, если установить source
слоя на URL, где размещены данные. Пример этого представлен ниже вместе с изображением:
...
app.layout = html.Div( [ dcc.Graph(
id = 'TxWCD-choropleth',
figure = dict(
data = [dict(
type = 'scattermapbox'
)],
layout = dict(
mapbox = dict(
layers =[ layer_t ],
accesstoken = mapbox_access_token,
center = dict(
lat = 31.3,
lon = -99.2
),
zoom = 5.2,
style='light'
),
height = 900,
autosize = True
)
)
)])
...
Однако я хотел бы сначала загрузить json в объект на python, чтобы я мог фильтровать и настраивать данные. Когда я пытаюсь сделать это, карта зависает и никогда не рендерится. Нет ошибки, когда я открываю инспектор в моем браузере. Код ниже воссоздает мою проблему вместе с изображением ошибки:
import dash
import json
import os
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import geopandas as gpd
# public token
mapbox_access_token = MAPBOX_TOKEN
app = dash.Dash(__name__)
pf = pd.read_json( "https://raw.githubusercontent.com/TNRIS/tx.geojson/master/counties/tx_counties.geojson" )
layer_t = dict(
sourcetype = "geojson",
type = "fill",
color = "#265465",
source = json.loads( pf.to_json() )
)
app.layout = html.Div( [ dcc.Graph(
id = 'TxWCD-choropleth',
figure = dict(
data = [dict(
type = 'scattermapbox'
)],
layout = dict(
mapbox = dict(
layers =[ layer_t ],
accesstoken = mapbox_access_token,
center = dict(
lat = 31.3,
lon = -99.2
),
zoom = 5.2,
style='light'
),
height = 900,
autosize = True
)
)
)])
if __name__ == '__main__':
app.run_server( port = 8051, debug = True )
Я пытался следовать теме здесь , чтобы увидеть, есть ли какие-либо ошибки в том, что я делаю, но я верю, что вычисляю это правильно. Я также здесь , но не вижу проблемы с моим кодом по сравнению с примером.
Любая помощь будет принята с благодарностью.
Спасибо!