我在OSMNX中使用nearest_edges函数。在我看来,在进行这一计算时,还不清楚边缘的“部分”是什么。它是边缘的任何一部分吗?是中途点吗?
对于网络中的长边沿,这将产生很大的不同。
发布于 2021-10-25 17:13:17
这取决于如何将函数参数化。来自nearest_edges函数文档
找到一个点或几个点中的每一个点的最近的边。 如果X和Y是单个坐标值,这将返回最近的边缘到那个点。如果X和Y是坐标值的列表,这将返回每个点的最近的边。 如果插值为无,则搜索每个点的最近的边缘,每次一个,使用r-树并最小化从点到可能匹配的欧几里德距离。为了准确起见,使用投影图和点。这种方法是精确的,也是最快的,如果搜索的几个点相对于图形的大小。 为了获得更快的方法,如果搜索与图的大小相关的多个点,则使用内插参数沿边对点进行插值并对其进行索引。如果该图是投影的,则使用k-d树进行欧几里德最近邻搜索,这需要将this作为可选依赖项安装。如果图形没有投影,这将使用球状树进行最近邻搜索,这需要将scikit-learn安装为可选的依赖项。
因此,如果您离开interpolate=None (理想情况下使用投影图和投影点以提高精度),该函数将根据该点与边缘几何学中任何部分的最小距离,找到与您点最近的边缘。这在几何上是精确的,而且是最快的,只要在一个大图中搜索几个点。
或者,如果您传递一个interpolate参数值,该函数将沿边缘插值均匀间隔的点,然后根据该点与沿边几何上的任何插值点的最小距离,找到与该点最近的边(S)。这在几何上有点不精确(这种不精确程度随interpolate值的变化而变化),但在搜索许多点时最快,特别是在一个较小或中等大小的图中。
https://stackoverflow.com/questions/69673649
复制相似问题