【问题标题】:When using geopandas explore() method is there a way to restrict the boundaries of the resulting map?当使用 geopandas explore() 方法时,有没有办法限制结果地图的边界?
【发布时间】:2022-01-09 21:46:03
【问题描述】:

我正在尝试使用 explore() 显示美国的交互式热图。但它展示了整个世界。有没有办法将其限制在美国?

【问题讨论】:

    标签: python pandas geopandas


    【解决方案1】:

    您可以传递与直接使用 folium 相同的参数。例如,以美国几何形心为中心

    gdf = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
    gdf.explore(
        "pop_est",
        cmap="Blues",
        location=gdf.loc[gdf["iso_a3"].eq("USA"), "geometry"]
        .apply(lambda g: [g.centroid.xy[1][0], g.centroid.xy[0][0]])
        .values[0],
        zoom_start=3,
        control_scale=True,
    )
    

    【讨论】:

    • 感谢第一次加载时放大美国。但是您仍然可以导航到整个世界。是否可以将导航本身限制在美国?
    • 准确 - 定义起始位置
    【解决方案2】:

    您可以指定地图的最小和最大边界,并在用户想要离开时强制反弹。

    import geopandas as gpd
    
    gdf = gpd.read_file(gpd.datasets.get_path("naturalearth_lowres"))
    us = gdf[gdf.iso_a3 == "USA"]
    bounds = us.total_bounds
    
    us.explore(
        min_lat=bounds[1],
        min_lon=bounds[0],
        max_lat=bounds[3],
        max_lon=bounds[2],
        max_bounds=True,
    )
    

    【讨论】:

    • 非常感谢,是的,这确实会导致限制用户的预期效果。但这似乎是一种解决方法,所以说没有办法阻止渲染整个世界而只渲染美国是否正确? bc 我希望解决的另一个问题是,当保存到 HTML 时,它会创建一个 80 MB 的文件,这对于我的用例来说是不可行的。我认为如果它只渲染较小的区域,不仅会限制用户,还会降低尺寸。我尝试使用 gdp.simplify() 作为大小问题的解决方法,但它似乎不起作用。
    • 我不会称其为解决方法,这是 API 的一部分,也是管理它的预期方式。请注意,背景图块在 HTML 中不占用空间,它们是动态加载的。所以它没有帮助。 80 MB 最有可能获取您要显示的数据。 explore 不是用于 webmaps 的解决方案,而是用于本地交互式探索。对于网络地图,您需要矢量图块之类的东西。 simplify(),如果以合理的精度使用应该会有所帮助。
    猜你喜欢
    • 2013-02-20
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2016-06-15
    • 2018-07-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-27
    相关资源
    最近更新 更多