Python 确定一组地理空间点是否包含在另一组中

Python 确定一组地理空间点是否包含在另一组中,python,geospatial,Python,Geospatial,在项目的这个阶段,我已经对两种类型的卫星数据(MODIS和AMSR-E)进行了过滤和地理空间聚类。我的下一步是确定AMSR-E数据中的任何簇是否位于任何MODIS簇的范围内 我已经使用SciKit learn in python中的DBSCAN库分别对这两个数据集中的高值点进行了聚类,但我不确定如何确定一种类型的集群是否位于另一种类型的集群中 我从每个数据集中输入的数据存储在一个python字典中,该字典将集群ID映射到一个点列表及其值。换句话说,字典看起来是这样的(虽然很自然地用数字代替变量名

在项目的这个阶段,我已经对两种类型的卫星数据(MODIS和AMSR-E)进行了过滤和地理空间聚类。我的下一步是确定AMSR-E数据中的任何簇是否位于任何MODIS簇的范围内

我已经使用SciKit learn in python中的DBSCAN库分别对这两个数据集中的高值点进行了聚类,但我不确定如何确定一种类型的集群是否位于另一种类型的集群中

我从每个数据集中输入的数据存储在一个python字典中,该字典将集群ID映射到一个点列表及其值。换句话说,字典看起来是这样的(虽然很自然地用数字代替变量名)

{group_id:[(lat,long,data_val),(lat,long,data_val)]}


如果您能帮助找到一种算法来有效地识别集群是否包含在彼此内部,我们将不胜感激。

在我看来,您需要两种基本算法(其中有许多实现)

一种算法,用于确定一个点是否包含在由一组点给定的多边形中

粗略地说,在给定一组点的情况下,确定完全包围这些点的最小多边形的算法

关于如何使用这些算法来实现您的目标,这里有两个想法:

  • 找到每个MODIS簇的凸包
  • 通过从每个簇中随机选取一个AMSR-E测试点,并在所有计算的MODIS凸包上使用多边形中的点算法,确定哪些AMSR-E簇可能位于哪些MODIS点簇内
  • 对于可能位于MODIS凸包中的每个AMSR簇,在每个AMSR-E点上使用多边形中的点算法,以确定该簇中的所有AMSR-E点是否位于已识别的MODIS凸包中
  • 由于凸包算法和多边形中的点算法需要不同的计算量,这取决于每个簇中有多少个点,因此此过程可能更有效:

  • 找到每个MODIS簇的凸包
  • 找到每个AMSR-E簇的凸包
  • 通过从每个AMSR-E凸包中拾取一个随机点,并在所有计算的MODIS凸包上使用多边形中的点算法,确定哪些AMSR-E簇可能位于哪些MODIS点簇内
  • 对于可能位于MODIS凸包中的每个AMSR簇,在AMSR-E凸包中的每个点上使用多边形中的点算法,以确定该簇中的所有AMSR-E凸包点是否位于已识别的MODIS凸包中

  • 你能举例说明一个集群位于另一个集群的边界内意味着什么吗?我还不清楚。到目前为止,我只是在视觉上考虑过这一点,但想象一下,一个由几百个点组成的集群以0度经纬度为中心,如果你在最外面的点之间画线,它将类似于一个圆。如果在其边缘点之间绘制直线时,整个第二个形状位于第一个圆的边界内,则另一个簇将位于第一个圆的内部。