我有北京地区人类活动的GPS坐标。我想将地理空间划分为例如2平方公里(三角形)的矩形网格,并访问网格内任何点的索引位置。像元的大小不必完全相等,在我的情况下,近似值可以起作用。
我的地理区域具有以下边界框坐标(纬度,经度)。
Bottom Left (x1,y1) = 39.77750000, 116.17944444
Top Left (x1,y2) = 40.04722222, 116.58888889
Bottom Right (x2,y1) = 39.77750000, 116.58888889
Top Right (x2,y2) = 40.04722222, 116.17944444
这是30公里x 34公里的矩形区域。
我心中的解决方案是将增量设为2公里,将纬度和经度值按增量增加,直到达到上限。
要访问GPS点p的索引位置,将BL设为矩形区域的左下角点
Row = Distance [(p.lat,BL.long), (BL.lat, BL.long)] / delta
Column = Distance [(BL.lat,p.long), (BL.lat, BL.long)] / delta
有没有更简单的方法或支持库来解决此问题?最好将行和列(x,y)组合使用,这样我就可以通过在笛卡尔坐标系中找到两个网格单元之间的距离来测量网格单元的紧密度。示例图像和输入数据集可以使您清楚地了解描述。
链接https://drive.google.com/file/d/1JjvS7igTmrtLA4E5Rs5D6tsdAXqzpYqX/view中给出的输入数据集
答案 0 :(得分:1)
bottomLeft = (39.77750000, 116.17944444)
bottomRight = (39.77750000, 116.58888889)
topLeft = (40.04722222, 116.58888889)
topRight = (40.04722222, 116.17944444)
cols = np.linspace(bottomLeft[1], bottomRight[1], num=18)
rows = np.linspace(bottomLeft[0], topLeft[0], num=15)
df['col'] = np.searchsorted(cols, df['long'])
df['row'] = np.searchsorted(rows, df['lat'])