Turf js рисует идеальный квадрат с центральной точкой и радиусом - PullRequest
0 голосов
/ 12 марта 2020

Я пытаюсь сгенерировать p квадратный многоугольник из центральной точки и радиуса. Как ниже.

bboxPolygon(square(bbox(circle(_circle.center, 0.5, { steps: 64 }))))

Все функции взяты из дерна. js

Я считаю, что должен генерировать идеальный квадрат или хотя бы близко к квадрату. Тем не менее, он возвращает прямоугольник angular.

Я не уверен, что это проблема с библиотекой газона, или я неправильно ее использую.

circle geo json

{
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -73.93524199999999,
          40.734656941636764
        ],
        [
          -73.93791238162646,
          40.73411472349626
        ],
        [
          -73.93986713367875,
          40.73263337851494
        ],
        [
          -73.94058248193825,
          40.730609876934174
        ],
        [
          -73.93986685239045,
          40.72858643688632
        ],
        [
          -73.93791210033818,
          40.72710521497083
        ],
        [
          -73.93524199999999,
          40.72656305836324
        ],
        [
          -73.93257189966181,
          40.72710521497083
        ],
        [
          -73.93061714760952,
          40.72858643688632
        ],
        [
          -73.92990151806174,
          40.730609876934174
        ],
        [
          -73.93061686632124,
          40.73263337851494
        ],
        [
          -73.93257161837353,
          40.73411472349626
        ],
        [
          -73.93524199999999,
          40.734656941636764
        ]
      ]
    ]
  }
}

bboxPolygon результат

{
  "type": "Feature",
  "bbox": [
    -73.93928894163675,
    40.72656305836324,
    -73.93119505836323,
    40.734656941636764
  ],
  "properties": {},
  "geometry": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -73.93928894163675,
          40.72656305836324
        ],
        [
          -73.93119505836323,
          40.72656305836324
        ],
        [
          -73.93119505836323,
          40.734656941636764
        ],
        [
          -73.93928894163675,
          40.734656941636764
        ],
        [
          -73.93928894163675,
          40.72656305836324
        ]
      ]
    ]
  }
}

1 Ответ

0 голосов
/ 12 марта 2020

Я думаю, что проблема с функцией turf.square. Это не делает то, что я ожидал.

Вы должны получить что-то совсем близко к квадрату, если замените bboxPolygon(square(bbox(circle(_circle.center, 0.5, { steps: 64 }))))

на

bboxPolygon(bbox(circle(_circle.center, 0.5, { steps: 64 })))

Вот пример того, как выглядят результаты. красный - это круг, зеленый - это результат, получаемый при использовании квадрата, а синий - это выход без использования квадрата.

enter image description here

Если вы посмотрите на исходный код из square, вы заметите, что он на самом деле не создает bbox с равными расстояниями с каждой стороны. Однако это создает bbox, который имеет одинаковое изменение в степени. Поскольку мы работаем по долготе и широте, обычно это НЕ будет многоугольник с квадратным расстоянием.

Я не уверен, почему кому-то когда-нибудь понадобится эта square функция, так как я нашел бы ее более полезной, если он был квадратным на расстоянии, однако я не знаю, является ли это предполагаемым поведением.

TLDR Попробуйте bboxPolygon(bbox(circle(_circle.center, 0.5, { steps: 64 }))) вместо

...