У меня есть сетка квадратов, нарисованных на карте, у всех этих квадратов фиксированная площадь.
Затем карта снова делится на 4 других макрокадра. Давайте назовем их A, B, C, D.
Все предыдущие квадраты попадают в тот или иной квадрант (A, B, C, D). Но, конечно, те, что на границах, попадают в два или хуже, в середине падают в 4 квадранта.
Вот картинка, чтобы лучше объяснить ситуацию:

Как видите, синий квадрант содержит определенное количество сукэров, а также красный. Проблема заключается в середине, где площадь над Лондоном сливается с красным квадрантом.
Мне понадобится способ понять, содержится ли один квадрат в одном квадранте или более. И если так, верните соответствующий квадрант / ы.
Я пытался сделать это с TurfJS, более конкретно с booleanContains и booleanWithin, но оба они, кажется, выполняют часть того, что я ищу:
логическое значение содержит
Boolean-contains возвращает True, если вторая геометрия полностью содержится в первой геометрии. Внутренние части обеих геометрий должны пересекаться, а внутренняя часть и граница вторичного элемента (геометрия b) не должны пересекать внешнюю часть первичного элемента (геометрия a). Boolean-contains возвращает прямо противоположный результат @ turf / boolean-inside.
Boolean в пределах
Boolean-Within возвращает true, если первая геометрия полностью находится во второй геометрии. Внутренние части обеих геометрий должны пересекаться, а внутренняя часть и граница первичного элемента (геометрия а) не должны пересекать внешнюю часть вторичного элемента (геометрия 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]] }
}
];
Массив квадратов похож, но ваааааа еще больше :)
Итак, в заключение, учитывая один полигон (P1) и массив полигонов (PX), как я могу выяснить, в каком полигоне (PX) содержится полигон (P1). И если он кровоточит на двух или более полигонах (PX), узнайте, какие из них.