代码之家  ›  专栏  ›  技术社区  ›  SO Stinks ennuikiller

如何确定地球表面的哪些图像与任意给定的图像重叠?

  •  3
  • SO Stinks ennuikiller  · 技术社区  · 14 年前

    假设你得到了一个地球表面的图像,并且它作为一个多边形存储在数据库中,这个多边形由其角的经纬度对定义。

    现在假设有数百万张覆盖地球表面的图像也同样被存储。找到与给定图像相交的图像的好策略是什么?

    我有一个工作的基本算法,是基于“边界半径”的图像。但它不是最优的,它发现的图像比应该返回的要多。

    我已经看过mysql的gis空间功能,但其中的所有计算似乎都是用欧几里德几何完成的。

    实际上,我只需要一个返回“true”或“false”的函数,这取决于两个多边形(在球体上,由lat/long点定义)是否相交。看起来很简单,但我还没有找到一个实现。一想到要自己解决这个问题就很累。

    2 回复  |  直到 14 年前
        1
  •  2
  •   underdark    14 年前

    使用postgis,您可以运行以下内容:

    SELECT b.* 
    FROM images AS a
     JOIN images AS b
     ON ST_Intersects(a.the_geom,b.the_geom)
    WHERE a.name = "The image you are interested in"
    

    这假设所有图像边界都包含在同一个postgis表“images”中。

        2
  •  1
  •   Seth    14 年前

    我个人使用 PostGIS GEOS (通过 geodjango )来解决这个问题。