Детализированные требования
Основная задача – разработать сервис (интерактивный прототип) «Интерактивная карта для размещения спортивной инфраструктуры» для сотрудников Департамента спорта города Москвы (далее – Москомспорт). В рамках работы с сервисом сотруднику должна быть предоставлена возможность провести анализ в автоматизированном режиме по следующим направлениям:

  • Расчет площади спортивных зон на 100 000 человек на выбранной территории;
  • Расчет количества спортивных зон на 100 000 человек на выбранной территории;
  • Расчет количества видов спортивных услуг на 100 000 человек на выбранной территории.

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

    Результат работы сервиса должен быть представлен на карте города Москвы, с возможностью визуализации аналитики по загруженным данным. Карта выступает ключевым агрегатором сведений и средством визуализации решения. Карта должна выступать инструментом, с помощью которого сотрудники Москомспорта смогут провести анализ по загрузке территории спортивными зонами, типами спортивных услуг и видами спортивных услуг.
Скачать
Структура
Представленные модели, используемые для решения поставленной задачи.
МОДЕЛЬ I
Population
Данные о районе Москвы. Хранит информацию о названии региона, плотности населения на квадратный километр, площади района, а также географические координаты центра.
struct Population: CodableMappable {
    let area: String
    let population: Double
    let square: Double
    let latitude: Double
    let longitude: Double
}

МОДЕЛЬ II
SportObject
Данные о спортивном объекте. Хранит информацию о названии объекта, адресе, доступности, департаменте, к которому принадлежит, локации, а также о видах спорта представленных на объекте.
struct SportObject: CodableMappable {

    enum AvailabilityType: String, Codable {
        case walking = "Шаговая доступность"
        case district = "Районное"
        case area = "Окружное"
        case city = "Городское"
    }

    struct Sport: CodableMappable {
        let sportAreaID: Int // АйДи спортзоны, у каждого вида спорта свой айди | 1014648
        let sportArea: String // Спортзона | бассейн плавательный 25-ти метровый крытый
        let sportAreaType: String // Тип спортзоны. Идентичен Спортзоне ? | бассейн плавательный 25-ти метровый крытый
        let sportType: SportType // Вид спорта | Плавание
        let square: Double // Площадь спортзоны | 150.0 
    }

    struct Coordinate: CodableMappable {
        let latitude: Double
        let longitude: Double
    }

    let id: Int // Не уникальный. Несколько объектов с разными видами спорта | 100002
    let title: String // Название объекта, идентичный | Спортивный комплекс «Полярная звезда»
    let address: String // Адрес, идентичный | проезд Шокальского, дом 45, корпус 3
    let sport: [Sport] // Информация о спорте
    let department: Department // Департамент
    let availabilityType: AvailabilityType // Доступность, рассчитана на посетителей в данном покрытии | Районное
    let coordinate: Coordinate

    var coorditate: CLLocationCoordinate2D {
        return CLLocationCoordinate2D(latitude: self.coordinate.latitude, longitude: self.coordinate.longitude)
    }
}

МОДЕЛЬ III
Department & SportType
Данные о департаменте и виде спорта.
struct Department: CodableMappable {
    let id: Int // АйДи организации | 219165
    let title: String // Название организации | Москомспорт
}

struct SportType: CodableMappable {
    let id: Int
    let title: String
}
Карта
  • Кластерное представление спортивных объектов на карте
  • Тепловая карта
  • Границы районов Москвы с визуальным отображением плотности населения
ВАРИАНТ I
Кластерное представление спортивных объектов
Спортивные объекты сгруппированы по кластерам. На карте, при приближении отображается их реальная позиция. По тапу на маркер, доступна полная информация об объекте.
If a building becomes architecture, then it is art
ВАРИАНТ II
Тепловая карта
Насыщенность области спортивными объектами визуально представлена в виде тепловой карты. Градиент цвета направлен от зелёного к красному, что характеризует большую насыщенность объектами.
If a building becomes architecture, then it is art
ВАРИАНТ III
Границы районов
Границы районов Москвы и области, изображены на карте. Насыщенность цвета визуально отображает плотность населения. По тапу на конкретный район, можно ознакомиться с детальной информацией о спортивных объектах данного района.
If a building becomes architecture, then it is art
Данные
  • Доступность
  • Ведомство, к которому относится
  • Виды спорта, доступные на объекте
  • Плотность населения на квадратный километр
  • Площадь спортивных объектов
  • Спортивные объекты в расчёте на среднюю плотность населения
  • Департаменты, объекты которых размещены в данном районе
  • Виды спортивных услуг в данном районе
атрибутивная информация
Спортивный объект
Включает в себя:

• Доступность (шаговая, районная и т.д.)
• Адрес
• Ведомство, к которому относится
• Виды спорта, доступные на объекте
АТРИБУТИВНАЯ ИНФОРМАЦИЯ
Район
Включает в себя:

• Плотность населения на квадратный километр
• Площадь района
• Площадь спортивных объектов
• Спортивные объекты в расчёте на среднюю плотность населения
• Департаменты, объекты которых размещены в данном районе
• Виды спортивных услуг в данном районе
• Все спортивные объекты района
• Спортивные зоны района
Расчёты
  • Расчет площади спортивных зон на среднюю плотность населения
  • Расчет количества спортивных зон на среднюю плотность населения
  • Расчет количества видов спортивных услуг на среднюю плотность населения
РАСчёты
Выбор территории
Доступно два способа выбора территории, для которой производится расчёт:

• Район - Информация по конкретному району.
• Произвольная область - Детальная информация по выбранной территории, произвольной формы.
РАСЧЁТЫ
Расчеты
Включает в себя:

• Расчет площади спортивных зон на одного человека на выбранной территории:
Вся площадь спортивных зон заданной области делится на плотность населения в данном районе.

• Расчет количества спортивных зон на одного человека на выбранной территории:
Все спортивные зоны заданной области делятся на плотность населения в данном районе.

• Расчет количества видов спортивных услуг на одного человека на выбранной территори:
Все виды спортивных услуг заданной области делятся на плотность населения в данном районе.
Фильтрация
  • Фильтрация по принадлежности спортивного объекта к департаменту
  • Фильтрация спортивных объектов по видам спорта
  • Спортивная инфраструктура в районе
  • Фильтрация спортивных объекто
Поиск
Фильтрация
Выборка возможно по следующим параметрам:

• Доступность
Показаны объекты с указанным типом доступности

• Департамент
Показаны объекты, принадлежащие к определённому департаменту

• Район
Показаны объекты в данном районе

• Вид спортивных услуг
Все объекты, с указанным видом спортивных услуг.

• Спортивный объект
Поиск объекта среди их множества
Рекомендации
  • Оснащение территории новыми спортивными объекта
    на основе существующих спортивных объектах в районе, а так же их доступности
Рекомендации
Оснащение территории новыми спортивными объектами
Рекомендация строится на основании следующих входных параметрах:

• Район, в котором планируется разместить спортивный объект.
• Доступность.

Исходя из приведённых выше сведений, будет произведена выборка, в которой в зависимости от указанного типа доступности, будут отфильтрованы спортивные объекты. На основе полученных данных, на карте отрисованы места, в которых наиболее оптимально разместить спортивный объект. Пустые места свидетельствуют о том, что в данной области уже присутствует достаточное количество объектов.
РЕКОМЕНДАЦИИ
Примеры:
Район - Царицыно.
Доступность - Шаговая


На карте указаны объекты в шаговой доступности, уже размещённые в данном районе, соответственно ближе чем 500 метров размещение новых объектов не рекомендуется. Напротив, если в радиусе 500 метров, объектов нет - рекомендуется размещение нового спортивного объекта.
Район - Царицыно.
Доступность - Районная


На карте указаны объекты c районной доступностью, уже размещённые в данном районе, соответственно ближе чем 1000 метров размещение новых объектов не рекомендуется. Напротив, если в радиусе 1000 метров, объектов нет - рекомендуется размещение нового спортивного объекта.
Дополнительно
Нюансы
Дополнение:
Реализовать возможность предоставления пользователю визуальной аналитики в графическом виде (дашборды) или возможности выгрузки результатов в формате excel и pdf.
На данный момент выгрузка происходит в формате PDF, конечный результат выгрузки возможно изменить к более ожидаемому виду со стороны заказчика.

• Информация из открытых источников
Данные о границах Москвы, а так же информация о численности населения. Open Street Map.

Формулы и величины
В данный момент для расчёта величины площади/объектов/видов спорта на одного человека используются простое деление. По требованию заказчика возможно любое иное представление результата.

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

Реализовать возможность наложения слоев «Тепловая карта плотности спортивных объектов»
Получается не слишком красиво

Увеличение количества спортивных зон, видов спорта или времени занятий в группах по наиболее популярным видам спорта
Не известно какие виды спорта наиболее популяры


Сергей
Email: cerjeyx@gmail.com