某些边界之外的黑白叶子图

问题描述 投票:0回答:1

我有一个 .geojson 文件,其中包含某个国家/地区的边界 我正在创建这样的大叶地图:

m = folium.Map(location=[51.026, 4.476], zoom_start=9)
folium.GeoJson('BELGIUM_-_Municipalities.geojson', name='Municipalities', style_function=style_function).add_to(m)

如何将边界外的地图背景以灰度显示,同时保持边界内的底图颜色? 基本上在下面的地图中,我想将比利时边界之外的所有内容都以灰度显示

.

html visualization folium
1个回答
0
投票

模拟您正在寻找的内容的一个可能的选择是使用 Cartodb Position 作为主要底图,然后添加

WmsTileLayer
类似于 NGI 服务提供的地形图层):

m = folium.Map(
    location=[51.026, 4.476] zoom_start=9, tiles="cartodb positron",
)

folium.WmsTileLayer(
    url="https://cartoweb.wms.ngi.be/service",
    fmt="image/png", layers="topo", transparent=True,
).add_to(m)

或者,您可以使用本地化的基础层,即来自

openstreetmap-carto-be:
的图块,不包括比利时以外的区域:

m = folium.Map(
    location=[51.026, 4.476], zoom_start=9,
    tiles="https://tile.openstreetmap.be/osmbe/{z}/{x}/{y}.png",
    attr='&copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, Tiles courtesy of <a href="https://geo6.be/">GEO-6</a>',
)

NB:两种方法都独立于数据的范围/边界(多边形、点等)

使用的输入:BELGIUM_-_Municipalities.geojson

import folium
import json

def style_function(x):
    return {
        "fillColor": "cyan",
        "fillOpacity": 0.3,
        "color": "black",
        "opacity": 0.7,
        "weight": 1,
    }

with open("BELGIUM_-_Municipalities.geojson", "r") as f:
    data = json.load(f)

folium.GeoJson(
    data,
    name="Municipalities",
    style_function=style_function,
).add_to(m)
© www.soinside.com 2019 - 2024. All rights reserved.