m = folium.Map([53, -113], zoom_start=8, control_scale=True)
minimap = plugins.MiniMap()
m.add_child(minimap)
map_shape = gpd.read_file("some_huge_shape_file.shp")
import random
def random_html_color():
r = random.randint(0,256)
g = random.randint(0,256)
b = random.randint(0,256)
return '#%02x%02x%02x' % (r, g, b)
def style_fcn(x):
return { 'fillColor': random_html_color() }
def highlight_fcn(x):
return { 'fillColor': '#ff0000' }
folium.GeoJson(data=map_shape, overlay=True, popup_keep_highlighted=True, style_function=style_fcn, highlight_function=highlight_fcn, tooltip = folium.GeoJsonTooltip(fields=['DESREP']), opacity=0.1,
popup=folium.GeoJsonPopup(fields=['TYPE', 'NUMBER'])
).add_to(m)
我一直在阅读整个形状文件,最后得到的 html 文件超过 600mb,即使在高端机器中也无法显示/加载。所以我想知道是否可以绘制这个巨大形状文件的一小部分而不是整个,以便最终的 html 文件足够轻,可以在没有内存问题的情况下显示。
您可以在使用 geopandas.read_file 读取文件时指定过滤器。您可以例如指定
box=slice(10, 20)
只读取第 10 行到第 20 行。或者您可以指定 box=(10000, 10000, 20000, 20000)
只读取与指定框相交的多边形。