Можно ли плотно создать картографическую карту одного штата США? - PullRequest
0 голосов
/ 20 июня 2020

Можно ли создать карту одного штата или нескольких состояний, которые находятся рядом друг с другом? т.е. создать карту только Калифорнии, Невады и Аризоны и не отображать остальную часть Соединенных Штатов?

1 Ответ

1 голос
/ 20 июня 2020

Да, вы можете просто отфильтровать географические json функции, которые вам не нужны, т.е. в вашем случае все штаты, кроме Калифорнии, Невады и Аризоны. Вот небольшое приложение Da sh, демонстрирующее концепцию с использованием Da sh Leaflet,

import dash
import dash_html_components as html
import json
import dash_leaflet as dl
from dash_leaflet import express as dlx

# Input data.
with open("assets/us-states.json", 'r') as f:
    data = json.load(f)
marks = [0, 10, 20, 50, 100, 200, 500, 1000]
colorscale = ['#FFEDA0', '#FED976', '#FEB24C', '#FD8D3C', '#FC4E2A', '#E31A1C', '#BD0026', '#800026']


def get_style(feature):
    color = [colorscale[i] for i, item in enumerate(marks) if feature["properties"]["density"] > item][-1]
    return dict(fillColor=color, weight=2, opacity=1, color='white', dashArray='3', fillOpacity=0.7)


# Create colorbar.
ctg = ["{}+".format(mark, marks[i + 1]) for i, mark in enumerate(marks[:-1])] + ["{}+".format(marks[-1])]
colorbar = dlx.categorical_colorbar(categories=ctg, colorscale=colorscale, width=300, height=30, position="bottomleft")
# Create geojson.
options = dict(hoverStyle=dict(weight=5, color='#666', dashArray=''), zoomToBoundsOnClick=True)
geojson = dlx.geojson(data, id="geojson", defaultOptions=options, style=get_style)
# Filter out the desired states.
target_states = ["California", "Nevada", "Arizona"]
geojson.data["features"] = [f for f in geojson.data["features"] if f["properties"]["name"] in target_states]
# Create app.
app = dash.Dash()
app.layout = html.Div([dl.Map(children=[dl.TileLayer(), geojson, colorbar], center=[39, -98], zoom=4)],
                      style={'width': '100%', 'height': '50vh', 'margin': "auto", "display": "block"}, id="map")


if __name__ == '__main__':
    app.run_server()

Чтобы запустить пример, вы должны поместить файл us-states.json в папку с ресурсами. Вы можете получить его из оригинального примера Leaflet или из здесь .

...