我有轨迹数据,每个轨迹由一系列坐标(x,y点)组成,每个轨迹都由一个唯一的ID标识
这些轨迹在x-y平面上,我想把整个平面分成等大小的网格(正方形网格)。这个网格显然是不可见的,但它被用来将轨迹划分为子段。当一条轨迹与一条网格线相交时,它就被分割成一条新的子轨迹。在
我包括一个简单的手工图表,以明确我的期待。在
可以看到轨迹是如何在网格线的交点处划分的,并且每个线段都有新的唯一id
我正在研究Python,并寻求一些Python实现链接、建议、算法,甚至是一个伪代码。在
如果有什么不清楚的,请告诉我。在
更新
为了将平面划分为栅格,单元索引如下:#finding cell id for each coordinate
#cellid = (coord / cellSize).astype(int)
cellid = (coord / 0.5).astype(int)
cellid
Out[] : array([[1, 1],
[3, 1],
[4, 2],
[4, 4],
[5, 5],
[6, 5]])
#Getting x-cell id and y-cell id separately
x_cellid = cellid[:,0]
y_cellid = cellid[:,1]
#finding total number of cells
xmax = df.xcoord.max()
xmin = df.xcoord.min()
ymax = df.ycoord.max()
ymin = df.ycoord.min()
no_of_xcells = math.floor((xmax-xmin)/ 0.5)
no_of_ycells = math.floor((ymax-ymin)/ 0.5)
total_cells = no_of_xcells * no_of_ycells
total_cells
Out[] : 25
因为平面现在被分成25个细胞,每个细胞都有一个细胞。为了找到交点,也许我可以检查轨迹中的下一个坐标,如果单元格ID保持不变,那么轨迹的那一段在同一个单元格中,与网格没有交集。例如,如果x_cellid[2]大于x_cellid[0],则线段与垂直网格线相交。尽管如此,我仍然不确定如何找到与网格线相交的交叉点,并在交叉点上分割轨迹,给它们新的id