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

от автора

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

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

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

create table focus_on_building as    select 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';

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

Если вы ищете только полезную информацию, то весь год я публиковал здесь модели «без цензуры» и данные полезные для поиска жилья, вот лишь некоторые из них:

А начинался этот год с того что я поделился своим проектом Как поместить весь мир в обычный ноутбук: PostgreSQL и OpenStreetMap. и выступал на PGConf.Russia 2023 перед дружелюбной аудиторией специалистов по PostgreSQL. За год я получил море практики в работе с данными OpenStreetMap, а также выиграл джекпот «поисковой деоптимизации». Покинул привычную «тепличную» обстановку офиса чтобы набраться нового для себя опыта и научиться новым навыкам, необходимым чтобы выжить в изменяющейся реальности, где со стороны может казаться что «пошел за ёлкой, а уже продает шкуру зайца».

Уважаемые программисты и сочувствующие нам читатели, поздравляю всех с наступающим Новым годом!


ссылка на оригинал статьи https://habr.com/ru/articles/783644/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *