Построение карт с использованием сюжета и файла geo json - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь составить карту Индии и ее штатов, используя python сюжетно-хороплет. Я не могу понять, как это сделать. В документации и других местах, которые я искал, упоминалось, что locations должен содержать список или numpy массив индексов или имен различных регионов из файла CSV, которые вы хотите отобразить на карте, что должно соответствовать часть 'id' файла geo json.

Но как определить идентификатор, о котором идет речь, из файла geo json. Вот файл geo json , который я использовал для построения без успеха.

Я также отобразил 'ID_1' из файла geo json из штатов Индии в мой pandas фрейм данных, но карта все еще пуста.

Вот мой код:

#data for Indian States

india_state_link = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vSAD0SPvZSXA6TWBih-uaKutfl-m_UewVBqozY-kk3HudlM-23Iput1XiRrzd8VopiQXvK5KoN5_Sl3/pub?output=csv'
india_state = pd.read_csv(india_state_link)
india_state = india_state.dropna(axis = 1, how = 'all') #dropping NaN columns
india_state = india_state.dropna(axis = 0, how = 'all') ##dropping NaN rows
india_state = india_state.dropna()
col = india_state.columns
india_state = india_state.rename(columns = {col[1]: 'State', col[2]:'confirmed', col[3]:'cured', col[4]:'death', col[5]:'Latitude', col[6]:'Longitude'})
india_state = india_state.dropna()
india_state = india_state.astype({'confirmed': 'float64', 'cured':'float64', 'death':'float64'})

#reading json
with open('india-states.json', encoding = 'utf8') as f:
    india = json.loads(f.read())

id_dict = {}
for i in range(35):
    name = india['objects']['IND_adm1']['geometries'][i]['properties']['NAME_1']
    id_geojson = india['objects']['IND_adm1']['geometries'][i]['properties']['id']
    id_dict[name] = id_geojson

india_state['id_map'] = india_state['State'].map(id_dict)
india_state  = india_state.fillna(0)
india_state = india_state.astype({'id_map':'int'})

#plotting the map
fig = go.Figure(go.Choroplethmapbox(geojson=india,locations=india_state.id_map,z=india_state.confirmed,
                                    colorscale='Cividis',zmin=0,zmax=17,
                                    marker_line_width=3))

fig.update_layout(mapbox_style="carto-positron")

Я также пытался locations = india_state.State, но это не сработало.

Я проверил эту сюжетную карту Китая для справки, но безуспешно.

...