如何通过与特定国家/地区相交的路径来筛选轨道路径?

问题描述

我有大量的轨道路径文件,每个文件包含63,000个经纬度坐标列表,这些列表构成了像this这样的轨道路径。

这些文件是HDF文件,包含两个列表,依次列出一个63k纬度点和一个63k经度点。 Here is a sample file.

要选择纬度和经度坐标,请使用以下代码:

hdf = SD(FILEPATH,SDC.READ)
lat = hdf.select('Latitude')
lon = hdf.select('Longitude')

我需要能够过滤掉这些文件,以便只有轨道路径与格陵兰岛国家相交的文件。

目前,我的工作效率极低,我的解决方案现在遍历每个文件路径的每个点,并检查该点是否在格陵兰岛之内,如果确实如此,则将其添加到文件列表中。这可能要花费数小时才能完成,这就是代码从现在开始的本质。

#poly is a polygon around Greenland. 
coords = [(-55,59.5),(-55,67.5),(-60,75),(-73.25,79.2),(-67.5,80.82),(-65.34,81.23),(-62,82),(-60.25,84),(-10,(-17,(-30,59.5)]
poly = Polygon(coords)
latlon = zip(latitude,longitude)
for index,lalo in enumerate(latlon):
     if (poly.contains(Point(lalo[1],lalo[0]))):
          greenland_files.append(f)
          break

有什么想法吗?

解决方法

如果您的轨道上的点是按顺序排序的(我假设它们必须是排序的),则可以尝试某种搜索技术。例如,如果您所有的轨道点都从东向西移动(反之亦然,但始终如一),并且如果您可以找到一个保证在格陵兰岛以东且保证在格陵兰岛以西的点,那么您应该可以进行搜索在这些点之间。

我意识到这些情况会变得很奇怪,因为如果您走的足够远,地球上的任何一点都同时在格陵兰的东西方,但是我也不知道您的轨道路径是如何构成的(每次的起点都是相同的) ?他们总是从东向西前进还是从东向西前进?等)。

编辑:要快速找到两个多边形之间的交点,可以使用以下算法:https://dl.acm.org/doi/abs/10.1145/800141.804662

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...