Да, вы можете просто отфильтровать географические 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 или из здесь .