@lighter97
backend-недоразработчик

Как кластеризовать маркеры на стеке Python/Django/GeoJSON?

Добрый день!

Сразу к сути вопроса. Разрабатываем API для проекта с применением стека Django/REST Framework/Postgresql. У некоторых моделей присутствуют поля, содержащие в себе геоданные (координаты) в формате JSON (используется django-geojson).
От пользователя приходит запрос, который содержит в себе геовектор (координаты левой нижней и правой верхней точек карты), размер карты в пикселях и размер иконки кластера в пикселях. Ему нужно отдать JSON вида:
[
    {
        "cluster_id": 0,
        "coordinates": [
            37.6184755,
            55.7582595
        ],
        "ids": [
            1,
            2
        ]
    }
]

где cluster_id - идентификатор кластера (не так важен, на самом деле), coordinates - координаты кластера и ids - идентификаторы объектов, которые входят в кластер.
Есть ли какие-то расширения или пакеты (для питона, джанги или БД), позволяющие сделать такую вещь? Или может быть подскажете какой-то алгоритм сего действа?
Сейчас это реализовано с применением расширения kmeans для Postgresql, но это решение не учитывает размер иконки, и иконки двух кластеров, которые на деле расположены достаточно близко, могут перекрываться, делая этот процесс бесполезным (на вторую иконку просто невозможно кликнуть).
  • Вопрос задан
  • 237 просмотров
Пригласить эксперта
Ответы на вопрос 1
dom1n1k
@dom1n1k
Самое простое - грид-кластеризация.
Указываете размер клетки больше размена вашей иконки и всё.
https://video.yandex.ru/users/ya-events/view/721/u...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы