@Paxorin
Разработчик

Как в C# лучше реализовать следующую задачу?

Добрый день.
Есть некий картографический продукт и API для написания своего настольного приложения.
Создается карта на которую наносятся какие-то объекты из внешнего источник данных(БД). Объекты хранятся в карте как в БД.
Информация на карте должна обновляться раз в 1 сек.
Вопрос: Как организовать обновление данных на карте при изменении данных(координат объектов) во внешней БД? У объектов могут быть как неизменяемые данные, так и изменяемые. Например машина изменила направление или скорость.
Я предполагал, что можно сформировать какой-то первоначальный State обновлять его из БД, а потом с помощью событий обновлять карту. Но не уверен что это лучшее решение.
Понимаю ,что вопрос слишком абстрактный, но может быть кто-то решал подобные задачи и подскажет свой подход. Может быть какой-то паттерн использовать?
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ответы на вопрос 2
@oleg_ods
Объекты хранятся в карте как в БД.


Объекты на карте не хранятся, они на ней отображаются.

У объектов могут быть как неизменяемые данные, так и изменяемые. Например машина изменила направление или скорость.


С точки зрения геолокации у объекта из изменяемых данных есть только координаты, а исходя из предыдущих координат и текущих можно вычислить направление и скорость передвижения.

Информация на карте должна обновляться раз в 1 сек.

Вы уверены что вам нужна такая частота обновлений? С какой частотой будут обновляться координаты в БД? Какая средняя скорость движения объектов? Какая погрешность датчиков GPS?

А так вам подойдет любая картографическая API с поддержкой установки своих маркеров. К примеру, Google maps.
Ответ написан
Комментировать
@Paxorin Автор вопроса
Разработчик
Объекты на карте не хранятся, они на ней отображаются.

Поскольку в моем случае это конкретном продукт(Гис Панорама) , то там пользовательские векторные карты реализованы в виде хранилища объектов. Объекты сохраняются путем коммита в карту. Т.е можно создать объект на карте(например узел связи), закрыть-открыть карту он снова отобразился. Но это не столь важно для вопроса.

С точки зрения геолокации у объекта из изменяемых данных есть только координаты, а исходя из предыдущих координат и текущих можно вычислить направление и скорость передвижения.


Машина как пример. Это может быть радиолокационная станция, у которой меняется азимут зоны ответственности или координаты. А например дальность зоны ответственности всегда одна и та же.


Вы уверены что вам нужна такая частота обновлений? С какой частотой будут обновляться координаты в БД? Какая средняя скорость движения объектов? Какая погрешность датчиков GPS?


Не уверен. 1 сек пример. Пусть это будет 5 секунд.

Меня больше интересует как в общих чертах реализовать обновление карты из базы данных. Т.е. я должен раз в пять секунд опросить базу данных, как-то сравнить новые данные со старыми и если что-то поменялось как-то уведомить карту что надо отрисовать новые данные. В текущем API не совсем удобно запрашивать карту об имеющихся объектах для сравнения с базой данных. Должно быть какое-то промежуточное хранилище, какой-то state. Как этот state организовать? Список объектов?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы