python - OSMNX - 边缘的哪个“部分”被认为是最近的
问题描述
我在 OSMNX 中使用了nearest_edges 函数。我不清楚在进行此计算时使用了边缘的哪个“部分”。它是边缘的任何部分吗?是中间点吗?
对于网络中的长边,它会产生很大的不同。
解决方案
这取决于您如何参数化函数。从nearest_edges
功能文档:
找到离一个点或几个点中的每一个最近的边。
如果 X 和 Y 是单个坐标值,这将返回离该点最近的边。如果 X 和 Y 是坐标值列表,这将返回每个点最近的边。
如果 interpolate 为 None,则使用 r-tree 并最小化从该点到可能匹配项的欧几里德距离,一次一次搜索每个点的最近边。为了准确起见,请使用投影图和点。如果搜索相对于图形大小的几个点,此方法既精确又最快。
如果要搜索相对于图形大小的许多点,则要使用更快的方法,请使用 interpolate 参数沿边插入点并对其进行索引。如果图是投影的,这将使用 kd 树进行欧几里得最近邻搜索,这需要将 scipy 作为可选依赖项安装。如果图未投影,则使用球树进行半正弦最近邻搜索,这需要将 scikit-learn 作为可选依赖项安装。
因此,如果您离开interpolate=None
(为了准确起见,最好使用投影图和投影点),该函数将根据点到边缘几何形状的任何部分的最小距离找到离您的点最近的边缘。如果只在大图中搜索几个点,这在几何上是精确的并且是最快的。
或者,如果您传递一个interpolate
参数值,该函数将沿边缘插值均匀间隔的点,然后根据该点到沿边缘几何形状的任何插值点的最小距离找到离您的点最近的边缘。这在几何上有点不精确(这种不精确性随您的interpolate
值而变化),但在搜索许多点时速度最快,尤其是在较小或中等大小的图形中。
推荐阅读
- python - Django 中的 datetime.date.today()(Dash 应用程序)
- java - Java MapStruct:映射器在映射单个元素之前清除目标集合
- wordpress - Ninja 使用 get_user_meta 将值渲染到隐藏字段
- spring-boot - Spring启动Kafka轮询直到队列为空并休眠
- python - python从子进程中获取grep -q的输出
- c++ - 通过包装器传递指向 MPI_Win_allocate_shared 的指针
- python - 适用于允许您指定应调试哪些方法的类的 Python 装饰器。我该如何实施?
- python - 日期时间不能低于 1000 年
- azure-active-directory - 有没有办法使用 Graph API 调用来检索 appRoleName?
- python - 从需要时间加载的网页中抓取数据的问题