【问题标题】:How to generate random lat-long points within geographical boundaries?如何在地理边界内生成随机经纬度点?
【发布时间】:2021-07-13 17:37:59
【问题描述】:

我想在地理边界内随机生成 k 个纬度/经度点,特别是曼哈顿。我想到的一种解决方案是根据中心点的半径生成点,但这要么太不准确(没有覆盖足够的空间),要么最终会出现在海洋中(我希望它们只出现在陆地上)。如何实现这一点,是否有任何 python 库可以帮助解决这种地理限制?

【问题讨论】:

    标签: python


    【解决方案1】:

    您可以使用osmnx。它将从 Openstreetmap 加载道路网络。然后可以将道路网络图馈送到osmnx.utils_geo.sample_points 以创建统一的随机点样本。它们不会最终落入海洋,因为它们与道路网络相连。

    import osmnx as ox
    
    G = ox.graph_from_place("Manhattan, New York")
    Gp = ox.project_graph(G)
    points = ox.utils_geo.sample_points(ox.get_undirected(Gp), 20) # generate 20 random points
    

    【讨论】:

    • 似乎无法在文档中找到答案 - 你知道 sample_points 是否也会沿道路网络(边缘)采样点,还是会被限制在 OSMNX 图上的节点上?
    • 原文issue建议采样点是沿路网(边)生成的。
    • OSMnx 开发人员在这里。是的,它将对受限于街道网络边缘几何形状的随机点进行采样。
    • 谢谢!但是我不能完全解释数据输出,一个例子是 POINT (585155.331 4507719.832),它不长;怎么转换/这是什么坐标系?
    • 编辑:它是18区的WGS84 UTM坐标。可以用这里的python代码转换:stackoverflow.com/questions/343865/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 2020-02-19
    • 2012-08-24
    • 2023-04-01
    • 2021-01-01
    相关资源
    最近更新 更多