Leaflet + Turf Странное поведение SquareGrid - PullRequest
1 голос
/ 29 апреля 2019

После недели тестов и исследований я решил "сдаться" и попросить вас, ребята, о помощи.

То, что я пытаюсь сделать, довольно легко.

  • Возьмите карту мира и разделите ее на 4 квадранта (готово)
  • Возьмите каждый квадрант и, используя turf вычислите, сколько квадратов из N единиц содержится.

Все отлично работает с двумя первыми квадрантами: A (красный), B (зеленый)

enter image description here

InНа самом деле, если я попытаюсь заполнить первые два квадранта квадратами, используя turf , результат будет правильным:

enter image description here

Проблемаявляется то, что при попытке повторить ту же логику на квадратах ниже, 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?Это я тупой?Пожалуйста, помогите мне, ребята.

...