Создайте многоугольник вокруг каждой точки геойсона из геойсона - PullRequest
1 голос
/ 07 марта 2019

Создание карты, аналогичной найденной здесь: https://www.plantmaps.com/interactive-california-2012-usda-plant-zone-hardiness-map.php

Иметь все необходимые данные. Создайте многоугольники вокруг каждого без расстояния между ними. Нет совпадений или подобных.

Рисование всего этого вручную на geojson.io кажется невозможным.

Ответы [ 2 ]

2 голосов
/ 07 марта 2019

Я хочу создать многоугольники вокруг каждой [точки] и убедиться, что между ними нет расстояния.

То, что вы описываете здесь, это тесселяция . В зависимости от ваших данных, вы можете выбрать регулярную тесселяцию (то есть создать сетку из квадратов или шестиугольников, уделять немного внимания единицам вашей системы координат) или хорошо известных среди людей ГИС Вороной тесселяции . Обратите внимание, что тесселяция Вороного, созданная на регулярной сетке точек, приведет к правильной сетке полигонов.

Существует множество инструментов для тесселяций Вороного. Для javascript и GeoJSON мой инструмент выбора будет модуль вороной turf.js .

1 голос
/ 07 марта 2019

Вот некоторые вещи, которые следует учитывать:

  • Создание многоугольника из точки достаточно просто. Например, вы используете точку в качестве центра правильного многоугольника и делите 2PI на количество сторон и шагаете по точкам, чтобы создать многоугольник. Но каков радиус? Это зависит от проекции, которую вы используете. Мне случается использовать OpenLayers и мне действительно нравится этот элемент управления картой. Это проекция по умолчанию это EPSG: 3857. Итак, координаты уже в метрах - так просто. Но если ваши очки в длинных / латах, то вы должны сделать некоторую математику. может быть легче временно преобразовать в другую проекцию. Библиотека с открытым исходным кодом, которая действительно хороша для вычислений ГИС, если вам нужно это Turf .

  • Вы упомянули также о наличии непересекающихся полигонов? Что ж, в этом случае у вас будет много пробелов, если вы будете использовать обычные полигоны. Наличие неперекрывающихся полигонов с, как вы говорите, без расстояния между ними - интересное ограничение. Теперь вы имеете дело с многоугольниками различной формы. И алгоритм обработки этого довольно интенсивный. Я знаю, что в MapInfo GIS есть функция настройки неперекрывающихся полигонов. Но в среде JavaScript с GeoJSON вы, вероятно, говорите об этой логике на стороне сервера.

  • Карта, на которую вы смотрите, выглядит так, как будто она использует Листовка с оверлеями svg .

...