如何了解一个多边形是否与两个或多个多边形相交?

时间:2019-05-03 10:02:25

标签: javascript geojson turfjs

我在地图上绘制了一个正方形的网格,这些正方形具有固定的面积。 然后将地图再次划分为其他4个宏qadrant。我们称它们为A,B,C,D。

所有先前的正方形都位于一个或另一个象限(A,B,C,D)中。但是,当然,边界上的那些落在两个或更糟的地方,中间的四个象限。

下面的图片可以更好地说明这种情况: enter image description here

如您所见,蓝色象限包含一定数量的suqare,红色象限也包含。问题出在中间,伦敦广场流血到红色象限。

我需要一种方法来理解一个象限中是否包含一个正方形或更多。如果是这样,则返回有关的象限。

我试图用TurfJS来做到这一点,更具体地说是使用booleanContains和booleanWithin,但是它们似乎都满足了我所寻找的部分内容:

布尔包含 如果第二个几何完全包含在第一个几何中,则 Boolean-contains返回True。两个几何的内部必须相交,并且次级几何的内部和边界(几何b)不得与主要几何的外部(几何a)相交。布尔包含返回与@ turf / boolean-within完全相反的结果。

布尔值内 如果第一个几何完全在第二个几何内,则 Boolean-within返回true。两个几何的内部必须相交,并且主几何的内部和边界(几何a)不得与次几何的外部(几何b)相交。 Boolean-within返回与@ turf / boolean-contains完全相反的结果。

所以,我有一个定义主要象限的多边形数组,还有另一个多边形(正方形)数组。我想遍历平方数组,并将每个平方与4个主要象限进行比较,并了解该平方属于哪个象限。

这是象限数组:

export const QUADRANTS_MAP: IQuadrant[] = [
    {
        collectionName: 'quad-a',
        geometry: { type: 'Polygon', coordinates: [[-180, 0], [-180, 90], [0, 90], [0, 0], [-180, 0]] }
    },
    {
        collectionName: 'quad-b',
        geometry: { type: 'Polygon', coordinates: [[0, 0], [0, 90], [180, 90], [180, 0], [0, 0]] }
    },
    {
        collectionName: 'quad-c',
        geometry: { type: 'Polygon', coordinates: [[-180, -90], [-180, 0], [0, 0], [0, -90], [-180, -90]] }
    },
    {
        collectionName: 'quad-d',
        geometry: { type: 'Polygon', coordinates: [[0, -90], [0, 0], [180, 0], [180, -90], [0, -90]] }
    }
];

squares数组相似,但是waaaayy更大:) 因此,总结起来,给定一个多边形(P1)和一个多边形数组(PX),我如何确定多边形(P1)包含在哪个多边形(PX)中。如果它在两个或多个多边形(PX)上出血,则知道哪个多边形。

0 个答案:

没有答案