我试图根据点terrestical度量创建河流横截面配置文件。当试图用一系列具有通用id的点创建Shapely LineString
时,我意识到给定点的顺序非常重要,因为LineString
只会连接给定点的“索引”(列表中的连接点给出的顺序为) 。下面的代码说明了默认行为:许多2D点之间的最短路径(Shapely LineString内的旅行推销员?)
from shapely.geometry import Point, LineString
import geopandas as gpd
import numpy as np
import matplotlib.pyplot as plt
# Generate random points
x=np.random.randint(0,100,10)
y=np.random.randint(0,50,10)
data = zip(x,y)
# Create Point and default LineString GeoSeries
gdf_point = gpd.GeoSeries([Point(j,k) for j,k in data])
gdf_line = gpd.GeoSeries(LineString(zip(x,y)))
# plot the points and "default" LineString
ax = gdf_line.plot(color='red')
gdf_point.plot(marker='*', color='green', markersize=5,ax=ax)
这将产生图像:
问:是否有内匀称任何内置的方法,将自动创建最逻辑(又名:最短,最不复杂,最不是十字交叉,......)通过给定的随机2D点列表?
下面你可以找到所需的线(绿色)与默认(红色)相比。
假设你不知道订单或邻居的时间提前,你可以尝试建立每个节点都连接到所有其他节点的图形,然后搜索“简单路径”,并与相同数量的选择路径作为节点的数量的步骤,然后选择最短的这些?这需要网络X中的['all_simple_paths'](https://networkx.readthedocs.io/en/stable/reference/generated/networkx.algorithms.simple_paths.all_simple_paths.html#networkx.algorithms.simple_paths.all_simple_paths) 。 – shongololo
哇,看起来很有希望!将看看这个。 –
小修正:路径长度将是节点 - 1 – shongololo