我有一组给出闭合多边形的坐标。 使用 Python 中的
folium.PolyLine()
函数,我可以轻松填充“内部”,但不能填充“外部”。
图中左侧为实际输出,右侧为所需输出。
Python中使用的代码(为了获取左侧的图像)如下,我决定使用
leafmap.folium.Map()
对象。
import folium
import leafmap.foliumap as leafmap
m = leafmap.Map(
layers_control=True,
draw_control=False,
measure_control=False,
fullscreen_control=False,
center=(map_center_x,map_center_y),
zoom=z_start
)
m.add_basemap('OpenTopoMap')
folium.PolyLine(
locations=coords,
fill_color="#D3D3D3",
color="#00B0F0",
weight=line_weight,
opacity=fill_opacity
).add_to(m)
我想恢复填充的区域,但找不到方法。 有没有办法,用
folium.PolyLine()
来获得右边的结果?
您可以创建覆盖坐标系整个范围的多边形,并在多边形内添加内环(或孔)。当您对多边形应用
fillOpacity
时,内环不受影响,使其完全透明,并且在填充的外多边形的衬托下清晰可见。
import folium
import leafmap.foliumap as leafmap
from shapely.geometry import Polygon, mapping
map_center_x = 51.1657
map_center_y = 10.4515
z_start = 5
m = leafmap.Map(
layers_control=True,
draw_control=False,
measure_control=False,
fullscreen_control=False,
center=(map_center_x, map_center_y),
zoom=z_start
)
m.add_basemap('OpenTopoMap')
# Define the extent of the outer polygon (global coordinates)
x_min, y_min = -180, -90
x_max, y_max = 180, 90
# create the outer polygon
outer_polygon = Polygon([
[y_min, x_min], [y_min, x_max], [y_max, x_max], [y_max, x_min], [y_min, x_min]
])
# Define the inner polygon
hole = Polygon([
[8.5, 50.5], [11.5, 50.5], [11.5, 51.5], [8.5, 51.5], [8.5, 50.5]
])
polygon_with_hole = Polygon(outer_polygon.exterior.coords, [hole.exterior.coords])
geojson_data = mapping(polygon_with_hole)
folium.GeoJson(
geojson_data,
name="Polygon with hole",
style_function=lambda feature: {
'fillColor': 'grey',
'color': 'black',
'weight': 1,
'fillOpacity': 0.8
}
).add_to(m)
m
结果地图: