- •Анотація
- •5. Економічна частина 44
- •6. Список опрацьованих інформаційних джерел 61
- •Розділ 1. Огляд алгоритмів для використання у графічних зображеннях та картах
- •1. Загальний огляд географії
- •2. Огляд використовуваних алгоритмів
- •Розділ 2. Огляд продуктів аналогів та створення специфікації вимог
- •1. Постановка задачі
- •2. Огляд продуктів аналогів
- •Географія Світу – Atom Games Ent.
- •Географія Вікторина - AppSmartz
- •Середовище функціонування
- •2.3.5.Oбмeжeння пpoeктувaння I peaлiзaцiї
- •Опис використаних технологій
- •Характеристика системи
- •Вибір типу тесту та його складність
- •Проходження тесту
- •Перегляд результату проходження тесту
- •Можливість поділитися результатом у соціальних мережах
- •Перегляд теоретичних відомостей
- •Додавання нотатків
- •Налаштування
- •Розділ 3. Розробка основного функціоналу та інтерфейсу користувача
- •Створення прототипу
- •3.3. Пpoeктувaння apхiтeктуpи пpoгpaмнoгo зaсoбу
- •Розділ 4. Реалізація та тестування мобільного додатку для географії україни
- •4.1 Реалізація основного функціоналу мобільного додатку.
- •4.2. Тeстувaння мoбiльнoгo дoдaтку для географії
- •Розробка тестів.
- •Функціональні тестові випадки.
- •Негативні тестові випадки
- •Тестування продуктивності
- •Розділ 5. Економічна частина
- •5.1. Eкoнoмiчнe oбґpунтувaння пpoгpaмнoї peaлiзaцiї мoбiльнoгo дoдaтку для навчання географії нa плaтфopмi Android.
- •5.2. Інформаційне забезпечення та формування гіпотези щодо потреби розроблення проектного рішення пpoгpaмнoї peaлiзaцiї мoбiльнoгo дoдaтку для навчання географії України нa плaтфopмi Android.
- •5.3. Оцінювання та аналізування факторів зовнішнього та внутрішнього середовища.
- •Результати експертного оцінювання впливу факторів зовнішнього та внутрішнього середовищ
- •5.4. Формування стратегічних альтернатив.
- •5.5. Бюджетування
- •Бюджет витрат матеріалів та комплектуючих виробів
- •Бюджет витрат на оплату праці
- •Бюджет обов’язкових відрахувань та податків
- •Бюджет загальновиробничих витрат
- •Бюджет адміністративних витрат та витрат на збут.
- •Зведений кошторис витрат на розробку проектного рішення
- •Бюджет фінансових результатів
- •5.6. Вибір стратегії
- •Виснoвoк
- •6. Список опрацьованих інформаційних джерел
- •Дoдaтoк a. Фpaгмeнти вихiдних кoдiв.
- •Дoдaтoк б. Інструкція користувача.
- •Компоненти пз
2. Огляд використовуваних алгоритмів
Кластеризація може значно збільшити продуктивність при відображенні великого числа гео-об'єктів[3].
Багато Java бібліотек для інтерактивних карт надають можливість кластеризації гео-об'єктів на стороні клієнта. При кластеризації на стороні клієнта з сервера виходять окремі точки, які потім обробляються в браузері або мобільному додатку для об'єднання в кластер. Це робить розмір відповіді сервера величезним, займаючи час і пам'ять на стороні клієнта. Їли використовується кластеризація на стороні сервера, розмір відповіді сервера значно менше - дані про декілька кластерах замість тисяч окремих точок. Це швидше і споживає набагато менше пам'яті на стороні клієнта.
Для реалізування кластеризації гео-об’єктів на карті використоймо Geohash.
Geohash - це алфавітно-цифровий рядок, що представляє географічні координати, широту і довготу.
Спочатку весь світ ділиться навпіл вертикально. Лівій половині присвоюється бінарне значення 0, а правою - значення 1. Якщо точка, координати якої кодуються, потрапляє в праву половину, ми додаємо 1 до бінарним значенням Geohash:
Рис. 1 .1. – Розподіл півкуль на координати .
|
Далі, алгоритм геокодування Geohash ділить карту горизонтально на 2 половини і привласнює бінарне значення 1 верхній половині, а нижній - 0. Точка, координати якої ми вибрали для прикладу в Geohash, розташована у верхній половині, через це ми додаємо 1 до бінарного значенням Geohash. На даному етапі бінарне значення Geohash нашої точки - 11:
Рис. 3.2 – Розподіл нових координатів
Ми продовжуємо ділити осередки на половини вертикально і горизонтально, кожен раз додаючи до бінарним значенням Geohash 0 або 1. Кожен раз, коли ми додаємо біт до бінарним значенням Geohash, точність підвищується:
Рис. 3.3. Відображення кінцевого результату пошуку нашої точки
Бінарне значення Geohash необхідно перевести в рядок, кодовану в Base 32. Кожні 5 біт перетворюються в символ, використовуючи таблицю символів.
Geohash розбиває карту світу на осередки, кожна з яких представляє один кластер. Довжина префікса Geohash рядки безпосередньо пов'язана зі ступенем наближення (zoom). Для кращої візуалізації, середнє арифметичне значення всіх координат в осередку буде місцем розміщення іконки кластера - замість розміщення іконки в центрі осередку. Припустимо, географічні координати зберігаються в таблиці GEO_POINT:
CREATE TABLE GEO_POINT (
GEO_POINT_ID SERIAL PRIMARY KEY,
LATITUDE_DEG FLOAT8 NOT NULL,
LONGITUDE_DEG FLOAT8 NOT NULL,
GEOHASH VARCHAR (12) NOT NULL,
COUNTRY_CODE VARCHAR (2)
);
CREATE INDEX I_GEO_POI_LAT_LON ON GEO_POINT (LATITUDE_DEG, LONGITUDE_DEG);
CREATE INDEX I_GEO_POI_GEOHASH ON GEO_POINT (GEOHASH);
Щоб сформувати кластери з видимих в поточній області перегляду (viewport) точок, може використовуватися наступний SQL запит:
SELECT AVG (GP.LATITUDE_DEG) AS LATITUDE_DEG,
AVG (GP.LONGITUDE_DEG) AS LONGITUDE_DEG,
COUNT (*) AS QUANTITY,
SUBSTRING (GP.GEOHASH FROM 1 FOR: precision) AS GEOHASH_PREFIX,
GP.COUNTRY_CODE AS COUNTRY_CODE
FROM GEO_POINT GP
WHERE GP.LATITUDE_DEG BETWEEN: south_west_lat AND: north_east_lat
AND GP.LONGITUDE_DEG BETWEEN: south_west_lon AND: north_east_lon
GROUP BY GEOHASH_PREFIX,
COUNTRY_КОДЕ
south_west_lat / south_west_lon - широта / довгота нижньої лівої вершини обмежувального прямокутника області перегляду (viewport);
north_east_lat / north_east_lon - широта / довгота верхній правій вершини обмежувального прямокутника області перегляду (viewport);
precision - так як кількість символів в Geohash коді прямо пов'язане з розміром кластера, значення даного параметра залежить від відстані між нижній лівій і верхній правій вершиною (діагональ обмежувального прямокутника області перегляду).
Цей запит поверне координати розміщення іконки кластера і кількість об'єктів в кожному кластері. Гео-об'єкти групуються в кластери по Geohash префіксу і країні. Гео-об'єкти, які розташовані поруч, але в різних країнах, що не будуть об'єднані в один кластер, навіть маючи однаковий Geohash префікс. Для цього колонка COUNTRY_CODE була додана в GROUP BY.
