使用 OSMnx 提取约束多边形

2024-01-26

我正在使用 OSMnx 包来解决以下任务: - 地图上有一个由纬度和经度定义的点 X - 我们需要检测包含该点 X 并受到相邻道路约束的多边形 - 所以基本上点 X 位于多边形内部,相邻道路将是该多边形的边界。

到目前为止,我只设法在地图上绘制图形的可视化并找到距离 X 点最近的边/节点。

在附图中,我用红色突出显示了要提取的区域。


当您尝试查找包含您的点的多边形时,首先需要从多线串几何图形中生成多边形。由于您没有提供数据,我正在使用 OSMnx 从 OSM 下载示例。

import osmnx as ox
import geopandas as gpd
import shapely

point = (40.742623, -73.977857)

streets_graph = ox.graph_from_point(point, distance=500, network_type='drive')
streets_graph = ox.project_graph(streets_graph)

我重新投影了它,因为它比使用学位更方便,特别是如果你想测量任何东西。

然后,您必须将 OSMnx 图转换为 geopandas GeoDataFrame。

streets = ox.save_load.graph_to_gdfs(streets_graph, nodes=False, edges=True,
                                     node_geometry=False, fill_edge_geometry=True)

为了获得一些我可以使用的点,我将仅使用此地理数据框中心的点。

point = streets.unary_union.centroid

这就是它的样子。

接下来,您需要获取由街道定义的街区的多边形,使用shapely.ops.polygonize正如我在上面的评论中建议的那样,并将它们存储为 GeoSeries。

polygons = shapely.ops.polygonize(streets.geometry)
polygons = gpd.GeoSeries(polygons)

接下来您唯一要做的就是找到哪个多边形包含您的点。

target = polygons.loc[polygons.contains(point)]

再次绘制:

ax = target.plot()
gpd.GeoSeries([point]).plot(ax=ax, color='r')

如果您想知道哪些街道形成了该多边形的边界,只需将其与原始网络相交即可。我正在过滤MultiLineString排除仅与多边形相交于一点的街道。

target_streets = streets.loc[streets.intersection(target.iloc[0]).type == 'MultiLineString']

这就是结果的样子。

ax = target_streets2.plot()
gpd.GeoSeries([point]).plot(ax=ax, color='r')

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OSMnx 提取约束多边形 的相关文章

随机推荐

  • 将 pdb 文件包含到我的 nuget (nupkg) 文件中

    我正在使用 MSBuild 生成我的 nuget 包 我是否需要设置任何命令 以允许它包含我的 pdb文件 以便在调试时进入源代码 我不希望将源文件包含到拉入 nuget 包的项目中 生产 最简单的配置方法是有一个Directory Bui
  • 计算三次贝塞尔曲线长度的廉价方法

    三次贝塞尔曲线长度的解析解 看似不存在 但并不代表 编写廉价的解决方案并不存在 我所说的 便宜 是指 50 100 ns 或更短 范围内的时间 有人知道类似的事情吗 可能分为两类 1 错误较少 如 1 但代码速度较慢 2 错误更多 例如 2
  • 高效地从 PHP 数组中选取 n 个随机元素(无需随机播放)

    我有以下代码可供选择 n数组中的元素 array in PHP shuffle array result array splice array 0 n 给定一个大数组但只有几个元素 例如5 out of 10000 这相对较慢 所以我想对其
  • 反应引导 + purgeCss + next.js

    PurgeCss 删除了我的项目中使用的react bootstrap css 类 我正在使用 Next js 框架 app js import styles style scss import React from react impor
  • 我的 kafka docker 容器无法连接到我的 Zookeeper docker 容器

    我想同时使用confluent kafka and confluent zookeeper并在单个 Ubuntu 服务器上运行它们 我正在使用以下配置 docker run e ZOOKEEPER CLIENT PORT 2181 name
  • Conda 不会删除包

    我的命令是否做错了什么 我无法删除 Keras conda remove name myEnv keras Collecting package metadata repodata json done Solving environment
  • CORS:预检通过,主请求完成 w/200,但浏览器仍然存在 Origin 错误

    我正在向运行 Express 的节点服务器发送 CORS ajax 请求 在服务器日志和 js 控制台中 我可以看到预检 OPTIONS 请求成功 然后 主请求也在服务器上成功 并以 200 和我认为正确的标头进行响应 但是 在 Chrom
  • 实施 Sitecore Multisite Robots.txt 文件

    如何为同一 Sitecore 解决方案上托管的每个网站实现不同的 robots txt 文件 我想从 sitecore 项目中动态读取 robots txt 您需要执行以下步骤 1 创建并实现您的自定义通用 ashx 处理程序 2 在 we
  • 滚动到时开始动画

    我花了一整天的时间寻找一种简单的方法来让我的动画在滚动到页面上的特定位置后开始 My css animation width 50 float left position relative webkit animation name tes
  • LaunchD Plist 不工作

    编辑 看起来好像我在控制台中收到错误 com apple launchd com xxxx adbind 57 退出 代码 1 那有什么意思 还 如果我加载使用 launchctl 命令登录的 launchd plist 文件 它工作正常
  • 在 web.config 中存储值 - appSettings 或 configSection - 哪个更有效?

    我正在编写一个可以使用几个不同主题的页面 并且我将在 web config 中存储有关每个主题的一些信息 创建一个新的sectionGroup并将所有内容存储在一起 还是将所有内容都放在appSettings中 是否更有效 配置部分解决方案
  • 如何将现有的 Mercurial 存储库转换为使用子存储库并保持历史记录完整?

    我一直在阅读有关子存储库以及如何使用转换扩展和文件映射将现有文件夹从 Mercurial 存储库提取到子存储库的内容 我可以成功地做到这一点 如果我有以下文件夹结构 C Project Project root txt Project Su
  • 防止所有非系统 shell 扩展加载到 GetOpenFileName、CFileDialog、IFileOpenDialog 等中

    我正在寻找一种编程方式来使用资源管理器 shell 提示用户输入文件名 并且我只希望加载系统 shell 扩展 我寻找此功能的原因是我想消除第 3 方 shell 扩展作为崩溃和其他不确定行为的可能原因 理想情况下 在某个地方有一个我错过的
  • Visual Studio Online 网站以调试模式部署到 Azure

    我创建了一个 ASP NET MVC Web 应用程序项目 将其提交到 Visual Studio Online Git 存储库 并链接到 Windows Azure 网站以进行自动部署 如果所有单元测试都成功 我的项目包含默认的 Web
  • 如何在 Angular2 上使用 onBlur 事件?

    如何检测 Angular2 中的 onBlur 事件 我想用它
  • 在 Perl 中计算字符串中单词数的最快方法是什么?

    我有一些函数在各种文本上运行了超过一百万次 这意味着这些函数的微小改进总体上会带来巨大的收益 目前 我注意到所有涉及字数统计的功能的运行时间都比其他功能要长得多 所以我想尝试以不同的方式进行字数统计 基本上 我的函数所做的就是获取许多具有与
  • 阻止用户输入字母? C++

    你好 我是 C 新手 但我有一个小问题 那就是我必须阻止用户在数字部分输入字母 我做了一次尝试 虽然有效 但很狡猾 因为它将允许用户继续 然后告诉他们出了问题并重新启动应用程序 我如何验证它以显示错误消息 告诉他们这不是数字并让他们重新输入
  • 如何根据对象索引合并两个列表 - 保留属性?

    我想合并两个列表 保留每个对象的索引 mylist lt list 1 NULL 2 otherlist lt list NULL 3 NULL 4 5 6 Desired list 1 3 2 4 5 6 my try suppressW
  • System.IO.IOException:使用 Directory.EnumerateDirectories 时句柄无效

    我有一个窗口服务可以将东西导入到我的系统中 有时我会收到 System IO IOException 句柄无效 有谁知道为什么会出现这种异常 下面你可以看到触发异常的代码 foreach string directoryPath in Di
  • 使用 OSMnx 提取约束多边形

    我正在使用 OSMnx 包来解决以下任务 地图上有一个由纬度和经度定义的点 X 我们需要检测包含该点 X 并受到相邻道路约束的多边形 所以基本上点 X 位于多边形内部 相邻道路将是该多边形的边界 到目前为止 我只设法在地图上绘制图形的可视化