После недели тестов и исследований я решил "сдаться" и попросить вас, ребята, о помощи.
То, что я пытаюсь сделать, довольно легко.
- Возьмите карту мира и разделите ее на 4 квадранта (готово)
- Возьмите каждый квадрант и, используя turf вычислите, сколько квадратов из N единиц содержится.
Все отлично работает с двумя первыми квадрантами: A (красный), B (зеленый)
InНа самом деле, если я попытаюсь заполнить первые два квадранта квадратами, используя turf , результат будет правильным:
Проблемаявляется то, что при попытке повторить ту же логику на квадратах ниже, turf возвращает 0 квадратов ...
Код, используемый для создания 4 квадрантов с Leaflet следующее:
const quadrantA = L.rectangle(L.latLngBounds(L.latLng(90, -180), L.latLng(0, 0)), { weight: 1, fillColor: 'red', color: 'red' });
const quadrantB = L.rectangle(L.latLngBounds(L.latLng(90, 0), L.latLng(0, +180)), { weight: 1, fillColor: 'green', color: 'green' });
const quadrantC = L.rectangle(L.latLngBounds(L.latLng(0, -180), L.latLng(-90, 0)), { weight: 1, fillColor: 'blue', color: 'blue' });
const quadrantD = L.rectangle(L.latLngBounds(L.latLng(0, 0), L.latLng(-90, 180)), { weight: 1, fillColor: 'yellow', color: 'yellow' });
quadrantA.addTo(this.map);
quadrantB.addTo(this.map);
quadrantC.addTo(this.map);
quadrantD.addTo(this.map);
Между тем код, используемый для вычисления квадратов в каждом квадранте с turf , выглядит следующим образом:
const QGrid_A = turf.squareGrid(turf.bbox(quadrantA.toGeoJSON()), 500, { units: 'kilometers' });
const QGrid_B = turf.squareGrid(turf.bbox(quadrantB.toGeoJSON()), 500, { units: 'kilometers' });
const QGrid_C = turf.squareGrid(turf.bbox(quadrantC.toGeoJSON()), 500, { units: 'kilometers' });
const QGrid_D = turf.squareGrid(turf.bbox(quadrantD.toGeoJSON()), 500, { units: 'kilometers' });
Проблема в том, что "Второй раунд "расчетов всегда возвращает 0 объектов для квадрантов C и D.
Функции QGrid_A: 800
Функция QGrid_Bs: 800
Функции QGrid_C: 0
Функции QGrid_D: 0
Я также читал о том, что Leaflet меняет положение стандартных координат GeoJSON,используя [LAT, LON] вместо [LON, LAT], поэтому я также попытался стереть результат сгенерированных Leaflet GeoJSON, выполнив reverse
с массивом координат, но все еще ничего.
Интересно, где я тут не прав?Это проблема «зацикленных» координат?Это проблема из-за ложного преобразования между Leaflet и Turf?Это я тупой?Пожалуйста, помогите мне, ребята.