И послала жена мужика из башни Вулыха со списком к празднованию Нового года

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

В шедевральном мультфильме "Падал прошлогодний снег" строгая, но авторитетная жена послала мужика за ёлкой в лес. Главный герой же не особо сконцентрирован на основной цели своей предновогодней прогулки и отвлекался по пути на все что только можно. Представим теперь, через 40 лет их дом попал под программу реновации, а они переехали почти в центр Москвы и живут теперь в башне типовой советской постройки. И отправила жена его, в этот раз со списком покупок к Новому году.

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

Как "готовить" открытые данные OpenStreetMap я рассказывал в "Где 15 минут пешком от дома до метро в Москве и как различать панельные дома…", не будем перед праздником распыляться в деталях. На этот раз для расчета дистанций нужны только дома построенные по типовому проекту "башня Вулыха":

create table focus_on_building as 
  select distinct id,type 
    from geometry_global_view  
    where tags->'design:ref'='Башня Вулыха';

Проект дома в виде башни подходит сказку сказывать - он обычно одноподъездный и пешеходные пути от входа в здание до POI в окрестностях получаются почти в форме снежинок. А для людей живших в эпоху СССР это были одни из самых комфортных квартир из типовых новостроек.

Скоро сказка сказывается, да не скоро код пишется. Библиотека для расчета расстояний GraphHopper умеет выдавать маршрут в виде ломаных линий, а мы легко можем превратить ее объект в строку WKT (Well-known text representation of geometry)

String path = bestRoute.getPoints().toLineString(false).toString();

И при сохранении расчитанного маршрута в таблицу PostGIS:

osmworld=# \d footpath_distance 

    Column     |           Type            | 
---------------+---------------------------|
 building_id   | bigint                    | 
 building_type | table_reference           | 
 poi_id        | bigint                    | 
 poi_type      | table_reference           | 
 distance      | geometry(LineString,4326) | 

GraphHopper маршрут из WKT легко превращается в линию:

ST_SetSRID(ST_GeomFromText(path),4326)::geometry(LineString,4326)

Можно добавить еще больше зимней сказки, если приближение окрестностей делать шестигранниками геоиндексов H3 H_3_CORE.gridDistance( centreIdx, H_3_CORE.latLngToCell(ghPoint.lat, ghPoint.lon,8))<MAX_DISK_DISTANCE . Сходство пешеходных дистанций вокруг дома со снежинкой будет ближе.

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

В данных OSM столицы оказалось 293 башни Вулыха, так что возможно он гулял в других окрестностях:

Выгружу данные в GeoJSON и поделюсь с вами:

\copy (select json_build_object('type', 'FeatureCollection','features', json_agg(json_build_object('type', 'Feature','geometry', st_AsGeoJSON(path)::json))) from (select distance path from footpath_distance) fp) to '~/moscow_snowflake.json';

Пока со стороны кажется, что в этом нет особой практической пользы, кроме предновогоднего настроения. Но это только кажется

Источник: https://habr.com/ru/articles/783644/


Интересные статьи

Интересные статьи

Подготовили для вас подборку бесплатных курсов и тренажеров обучения для QA-тестировщиков. Также на нашем сайте есть раздел со всеми платными курсами по QA-тестированию и отзывами о них — https...
С наступающим Новым годом, Хабр! В этом посте мы поддерживаем традицию большинства компаний и кратко подводим итоги 2021 года. :) 
Всем привет! Продолжаем обзоры новостей свободного и открытого ПО (и немного железа). Всё самое главное про пингвинов и не только, в России и мире. В выпуске №6 за 2–8 марта 2020 г.: ...
В прошлом году в Санкт-Петербурге прошла первая конференция Hydra, посвящённая параллельным и распределённым системам. С докладами выступали лауреаты премии Дейкстры и премии Тьюринга (Лесли Лэмп...
Три года назад мы объявили о выходе CUBA 6. Та версия стала революционной: вместо закрытой проприетарной лицензии мы стали распространять фреймворк свободно, по лицензии Apache 2.0. В то время ...