Проєкти · глобальний постачальник геоданих
Демографія для будь-якого контуру, який користувач може намалювати
Проблема
Демографічні дані існували як національні таблиці та растрові файли. Щоб відповісти «скільки людей живе всередині цього контуру», потрібен був GIS-спеціаліст, настільна програма й ручний експорт — тож питання, яке клієнт ставив за десять секунд, потребувало днів і не могло продаватися як продукт.
Підхід
Сервіс на PostGIS за версіонованим REST API. Користувач малює межу або вивантажує shapefile, частини об’єднуються в один підсумковий полігон, і по ньому рахуються показники — загальна кількість, щільність, темп приросту, розмір домогосподарства та вікові групи від 0–4 і вище — і повертаються через API або експортуються в KML. Робота йде в Celery-завданнях із власними записами статусу, тож клієнт опитує, а не тримає з’єднання.
Що було технічно складним
Контур, який малює людина, — це не той контур, який любить база даних. Shapefile приходять із 3D-координатами, які треба сплощити, перш ніж PostGIS їх прийме, у тій проєкції, яку обрало джерело, і з частинами, які накладаються. Кожна межа нормалізується й об’єднується до будь-яких обчислень, а кожен перерахунок піднімає лічильник ревізії інкрементом на рівні бази — бо ту саму цільову групу можуть редагувати двоє, поки завдання для попередньої версії ще виконується.
Одне рішення, і чому
Сервіс відмовляє запит, площа якого перевищує налаштовану межу, і каже про це окремим статусом, а не падає. Необмежений полігон над глобальним набором даних не повільний — він фактично нескінченний, а завдання, яке ніколи не завершиться, виглядає так само, як те, що ще працює. Назвати відмову означало перетворити зависання на відповідь, з якою клієнт може щось зробити.
Інші проєкти
- Звірка, що ловить розбіжність того ж дня →
Час виявлення розбіжності у звірці впав із тижнів до одного дня.
- Дані з машин приходять двічі, із запізненням або ніяк →
Підсумок кожної зміни тепер зводиться до власних показників цеху.
- Реєстр навчальних записів, якому довіряють аудитори →
$ розкажіть, що ви будуєте і де застрягли
Забронювати 30-хв дзвінок
Відповідаємо протягом одного робочого дня.