{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "Блог Антона Репушко: заметки с тегом городские данные",
    "_rss_description": "Блог Антона Репушко",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/repushko.com\/tags\/gorodskie-dannye\/",
    "feed_url": "https:\/\/repushko.com\/tags\/gorodskie-dannye\/json\/",
    "icon": "https:\/\/repushko.com\/user\/userpic@2x.jpg?1608852798",
    "author": {
        "name": "Антон Репушко",
        "url": "https:\/\/repushko.com\/",
        "avatar": "https:\/\/repushko.com\/user\/userpic@2x.jpg?1608852798"
    },
    "items": [
        {
            "id": "60",
            "url": "https:\/\/repushko.com\/all\/analogovy-kalendar-taiwan\/",
            "title": "Аналоговый календарь на корте в Тайване",
            "content_html": "<p>Интересно выглядит система бронирования публичных кортов на Тайване. Пишешь свое имя и вставляешь бумажку в нужный слот. Аналоговый shared calendar.<\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"960\" data-ratio=\"0.75\">\n<img src=\"https:\/\/repushko.com\/pictures\/tennis_taiwan_2.jpg\" width=\"960\" height=\"1280\" alt=\"\" \/>\n<img src=\"https:\/\/repushko.com\/pictures\/tennis_taiwan_1.jpg\" width=\"1280\" height=\"960\" alt=\"\" \/>\n<\/div>\n<\/div>\n",
            "date_published": "2025-01-05T18:24:44+03:00",
            "date_modified": "2025-01-06T09:20:57+03:00",
            "image": "https:\/\/repushko.com\/pictures\/tennis_taiwan_2.jpg",
            "_date_published_rfc2822": "Sun, 05 Jan 2025 18:24:44 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "60",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/fotorama\/fotorama.css",
                    "system\/library\/fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/tennis_taiwan_2.jpg",
                    "https:\/\/repushko.com\/pictures\/tennis_taiwan_1.jpg"
                ]
            }
        },
        {
            "id": "47",
            "url": "https:\/\/repushko.com\/all\/data-cleaning-stat-gibdd-ru\/",
            "title": "Как работает очистка данных со stat.gibdd.ru",
            "content_html": "<p>Год назад <a href=\"https:\/\/repushko.com\/all\/dtp-stat-helpers\/\">написал скрипты<\/a> для очистки данных статистики ДТП, потому что изначальные данные (именно GPS-координаты) были очень грязными  и их практически нельзя было визуализировать. Сорцы на Гитхабе <a href=\"https:\/\/github.com\/repushko\/dtp_stat_helpers\">имеются<\/a>.<\/p>\n<p>Сейчас скрипты временно неработоспособны, так как Яндексовский геокодер теперь требует ключ для использования API, но скоро я их поправлю.<\/p>\n<p>Я расскажу про красивый и аккуратный способ, как нам точку с неправильными координатами аккуратно подвинуть прямо на улицу, где произошло ДТП.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/graph_explanation.jpg\" width=\"1280\" height=\"960\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Алгоритм очистки данных<\/div>\n<\/div>\n<h2>Описаниме по шагам<\/h2>\n<p>Изначально нам дана синяя точка слева внизу. Это GPS-координаты, которые мы получили из исходных данных. Наша основная зацепка — адрес. Он заполняется вручную и обычно верный.<\/p>\n<p><b>Шаг 1.<\/b> Воспользуемся геокодером. Это такая программа, которая переводит географическое название (город\/село\/улицу + дом) в географические координаты. Я обычно пользуюсь <a href=\"https:\/\/tech.yandex.com\/maps\/geocoder\/\">геокодером Яндекса<\/a>, потому что он точнее для СНГ, но ещё есть <a href=\"https:\/\/nominatim.org\/\">бесплатный от OpenStreetMap<\/a>. Так мы получаем чистую координату дома по адресу (красная точка на рисунке).<\/p>\n<p><b>Шаг 2.<\/b> В OSM хранится граф дорог, при этом они привязаны к географическим координатам (у графа есть точное положение на плоскости). И есть классная особенность: мы можем ввести координаты точки на плоскости и получить кусок графа в радиусе n от этой точки. Общая идея такая:<\/p>\n<ul>\n<li>вводим координаты дома после геокодирования -> получаем круг примерно как на картинке,<\/li>\n<li>выбираем все дороги, попавшие в радиус (можно считать их просто линиями),<\/li>\n<li>строим перпендикуляры из точки до каждой из линий (на рисунке x и y),<\/li>\n<li>выбираем кратчайший (в нашем случае x),<\/li>\n<li>наша красная точка получает новые координаты (уже на ребре графа из OSM) и становится жёлтой точкой,<\/li>\n<li>profit.<\/li>\n<\/ul>\n<p>Так мы кривые координаты ДТП по одному лишь адресу аккуратно перенесли прямо на улицу. Теперь при визуализации всё будет аккуратно и ровно.<\/p>\n",
            "date_published": "2020-06-25T23:15:15+03:00",
            "date_modified": "2020-06-26T09:47:27+03:00",
            "image": "https:\/\/repushko.com\/pictures\/graph_explanation.jpg",
            "_date_published_rfc2822": "Thu, 25 Jun 2020 23:15:15 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "47",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/graph_explanation.jpg"
                ]
            }
        },
        {
            "id": "46",
            "url": "https:\/\/repushko.com\/all\/street-types-tula\/",
            "title": "Типы улиц Тулы",
            "content_html": "<p>Раз уж пошла такая мода (<a href=\"https:\/\/erdavis.com\/2019\/09\/20\/the-beautiful-hidden-logic-of-cities-worldwide\/\">оригинальная идея Эрина Дэвиса<\/a>, <a href=\"https:\/\/t.me\/pathetic_low_freq\/319\">Москва<\/a>, <a href=\"https:\/\/vk.com\/astr.city.data?w=wall-51262629_141\">Астрахань<\/a>), то и я нарисовал карту типов улиц Тулы.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/map.png\" width=\"2560\" height=\"2560\" alt=\"\" \/>\n<\/div>\n<p>Интересно выглядят плотные участки, состоящие только из проездов. Вроде как согласно СНиП (Строительные нормы и правила), к проездам меньше требований по ширине полос, допустимым углам поворота, наибольшему допустимому уклону, ширине пешеходной части.<\/p>\n<p>А ещё в Туле есть особенный тип: «обвод». Он всего один (<a href=\"https:\/\/yandex.ru\/maps\/15\/tula\/search\/%D0%92%D0%BE%D1%81%D1%82%D0%BE%D1%87%D0%BD%D1%8B%D0%B9%20%D0%BE%D0%B1%D0%B2%D0%BE%D0%B4\/?ll=37.662604%2C54.185500&z=14.64\">Восточной обвод<\/a>), но всё таки существует. И целых два проспекта.<\/p>\n",
            "date_published": "2020-06-07T23:54:35+03:00",
            "date_modified": "2020-06-08T17:40:20+03:00",
            "image": "https:\/\/repushko.com\/pictures\/map.png",
            "_date_published_rfc2822": "Sun, 07 Jun 2020 23:54:35 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "46",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/map.png"
                ]
            }
        },
        {
            "id": "41",
            "url": "https:\/\/repushko.com\/all\/srednenko-poc\/",
            "title": "«Средненько». Проверка гипотезы",
            "content_html": "<h2>Мотивация<\/h2>\n<p>Я 3-4 года назад услышал про исследование <a href=\"https:\/\/strelka-kb.com\/\">КБ «Стрелка»<\/a>, в котором они скрапили фото из социальных сетей (Инстаграм и ВК) и рисовали хитмапы на картах по ним. Оказывается, это называется <a href=\"https:\/\/strelkamag.com\/ru\/article\/est-takaya-professiya-cifrovoi-antropolog\">цифровой антропологией<\/a>.<\/p>\n<p>Идея кейса, который вдохновил меня, в том, что такое исследование помогло в каком-то там городе РФ выбрать лучшую точку для открытия общественного пространства. Гипотеза такая: если люди где-то делают фото, значит уже проводят там время, а значит там и так всё хорошо с социальной жизнью. В итоге администрации посоветовали открыть новую точку интереса на противоположном конце города от существующей.<\/p>\n<p>Загорелся идеей сделать нечто похожее, но в сферу каких-то постоянных событий идея оставалась идеей без реализации.<\/p>\n<p>Закрывая гештальт (как Инстаграм своё API для доступа к гео-информации о фотографиях в 2016-ом) достиг успеха.<\/p>\n<h2>Реализация<\/h2>\n<p>Т. к. API Инстаграма оказалось закрытым, решил воспользоваться <a href=\"https:\/\/www.flickr.com\/\">Flickr’ом<\/a>.<br \/>\nСуть идеи:<\/p>\n<ul>\n<li>берем 2019ый год,<\/li>\n<li>cкрапим фотографии с Flickr для конкретной локации (т.e. города),<\/li>\n<li>аккуратно накладываем на карту,<\/li>\n<li>видим места, где люди много фотографируют,<\/li>\n<li>делаем какие-то выводы.<\/li>\n<\/ul>\n<p><b>Например<\/b>: люди фотографируют -> там что-то интересное -> логично поселиться во время поездки.<\/p>\n<p><b>Другой например<\/b>: можно увидеть места, которые недостаточно освещены туристически (с точки зрения наличия фотографий) и можно выбрать наоборот район, где живут местные. На примере Берлина эта теория вроде как работает.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/berlin_flickr_project_2019.jpg\" width=\"1280\" height=\"684\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Фотографии в Берлине за 2019ый год<\/div>\n<\/div>\n<p>Найденные подводные камни:<\/p>\n<ul>\n<li>API Flickr’a частично не завелось из python-обертки, которую я нашёл,<\/li>\n<li>фотографий не так много (250к за год), как в Инстаграме. С геопозицией — еще меньше. За 2019ый год только 44к для Берлина,<\/li>\n<li>на карте прямыми линиями из фотографий заметны фотопрогулки, когда один человек шел и фотографировал всё, что видел. Так получается много фотографий одного места, хотя это всего лишь от одного человека. В планах написать кастомную функцию хитмапа, которая бы давала больший вес участкам, где фотографии от разных людей. Так получится сильно честнее.<\/li>\n<\/ul>\n<h2>«Средненько»<\/h2>\n<p>В процессе возникла идея — сопоставить кучу фотографий одной достопримечательности для получения её «усреднённого» вида. Итог получился сильно лучше, чем я ожидал.<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/ansgar-scheffold-cyUf9E_mhFc-unsplash.jpg\" width=\"2560\" height=\"1701\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Оригинальные Бранденбургские ворота<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/average_brandenburg_gates.jpg\" width=\"1280\" height=\"774\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Усреднённые 55 фотографий Бранденбургских ворот<\/div>\n<\/div>\n<p>Когда-то вероятно продолжу и сделаю для других городов.<\/p>\n",
            "date_published": "2020-04-26T01:05:52+03:00",
            "date_modified": "2020-04-26T01:05:49+03:00",
            "image": "https:\/\/repushko.com\/pictures\/berlin_flickr_project_2019.jpg",
            "_date_published_rfc2822": "Sun, 26 Apr 2020 01:05:52 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "41",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/berlin_flickr_project_2019.jpg",
                    "https:\/\/repushko.com\/pictures\/ansgar-scheffold-cyUf9E_mhFc-unsplash.jpg",
                    "https:\/\/repushko.com\/pictures\/average_brandenburg_gates.jpg"
                ]
            }
        },
        {
            "id": "23",
            "url": "https:\/\/repushko.com\/all\/moscow-lightning\/",
            "title": "Карта всех фонарей Москвы",
            "content_html": "<p>Случайно сделал карту всех фонарей Москвы. Данные стащил с <a href=\"https:\/\/data.mos.ru\/.\">https:\/\/data.mos.ru\/.<\/a><\/p>\n<div class=\"e2-text-picture\">\n<div class=\"fotorama\" data-width=\"1632\" data-ratio=\"1.8093126385809\">\n<img src=\"https:\/\/repushko.com\/pictures\/Screenshot-from-2020-01-29-17-50-18.png\" width=\"1632\" height=\"902\" alt=\"\" \/>\n<img src=\"https:\/\/repushko.com\/pictures\/Screenshot-from-2020-01-29-17-53-47.png\" width=\"1644\" height=\"902\" alt=\"\" \/>\n<\/div>\n<div class=\"e2-text-caption\">Каждая точка — отдельный фонарь<\/div>\n<\/div>\n",
            "date_published": "2020-01-29T19:55:18+03:00",
            "date_modified": "2020-01-29T19:55:16+03:00",
            "image": "https:\/\/repushko.com\/pictures\/Screenshot-from-2020-01-29-17-50-18.png",
            "_date_published_rfc2822": "Wed, 29 Jan 2020 19:55:18 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "23",
            "_e2_data": {
                "is_favourite": true,
                "links_required": [
                    "system\/library\/jquery\/jquery.js",
                    "system\/library\/fotorama\/fotorama.css",
                    "system\/library\/fotorama\/fotorama.js"
                ],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/Screenshot-from-2020-01-29-17-50-18.png",
                    "https:\/\/repushko.com\/pictures\/Screenshot-from-2020-01-29-17-53-47.png"
                ]
            }
        },
        {
            "id": "17",
            "url": "https:\/\/repushko.com\/all\/schastlivy-konec-moyseverozapad-rf\/",
            "title": "Счастливый конец мойсеверозапад.рф",
            "content_html": "<p>Мы в <a href=\"https:\/\/corgilab.ru\">КоргиЛаб<\/a> успешно запустили <a href=\"https:\/\/repushko.com\/all\/moyseverozapad-rf\/\">мойсеверозапад.рф<\/a> 5 месяцев назад и сейчас готовы сообщить о результатах исследований и полученных данных.<\/p>\n<p>Основная цель запуска — помочь магистрантке архитектурного ВУЗа успешно написать и защитить диплом об открытом проектировании в формировании общественных пространств жилого района. Диплом успешно написано и сдан на отлично, время подводить результаты.<\/p>\n<p>Отфильтровав некорректные данные (например больше 5 отметок одного типа с одной анкеты), получили 263 предложения по категориям:<\/p>\n<ul>\n<li>65 «Досуг»,<\/li>\n<li>64 «Спорт»,<\/li>\n<li>44 «События»,<\/li>\n<li>43 «Дети»,<\/li>\n<li>47 собственных идей жителей.<\/li>\n<\/ul>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/Screenshot-2019-07-24-at-02.14.58.png\" width=\"1918\" height=\"1017\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Финальное состояние карты<\/div>\n<\/div>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/Screenshot-2019-07-24-at-02.11.53.png\" width=\"661\" height=\"499\" alt=\"\" \/>\n<div class=\"e2-text-caption\">Статистика посещений<\/div>\n<\/div>\n",
            "date_published": "2019-07-24T02:16:34+03:00",
            "date_modified": "2019-07-24T02:16:52+03:00",
            "image": "https:\/\/repushko.com\/pictures\/Screenshot-2019-07-24-at-02.14.58.png",
            "_date_published_rfc2822": "Wed, 24 Jul 2019 02:16:34 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "17",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/Screenshot-2019-07-24-at-02.14.58.png",
                    "https:\/\/repushko.com\/pictures\/Screenshot-2019-07-24-at-02.11.53.png"
                ]
            }
        },
        {
            "id": "8",
            "url": "https:\/\/repushko.com\/all\/moyseverozapad-rf\/",
            "title": "мойсеверозапад.рф",
            "content_html": "<p>UPD: проект <a href=\"https:\/\/repushko.com\/all\/schastlivy-konec-moyseverozapad-rf\/\">успешно закончен<\/a>.<\/p>\n<p>Мы в <a href=\"https:\/\/corgilab.ru\">КоргиЛаб<\/a> закончили наш первый проект: <a href=\"http:\/\/мойсеверозапад.рф\">мойсеверозапад.рф<\/a>.<\/p>\n<p>Это интерактивный портал по сбору идей для формирования комфортных общественных пространств Северо-Западного района города Курска. Пользователь могут кликнуть на глобальной карте в какую-то точку и отметить, что хотел бы там видеть (детская площадка, сцена, спортивная площадка).<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/repushko.com\/pictures\/Screenshot-2019-02-26-at-14.06.06.png\" width=\"2560\" height=\"1357\" alt=\"\" \/>\n<\/div>\n<p>Этот проект — часть магистерского диплома студентки архитектурного вуза:<\/p>\n<blockquote>\n<p>Моё диссертационное исследование посвящено формированию общественных пространств в жилых районах с использованием методов открытого проектирования.<br \/>\nОткрытость подразумевает возможность рядовых жителей принимать участие в формировании среды, которая их непосредственно окружает.<br \/>\nТакже открытое проектирование можно рассматривать с точки зрения «open architecture», понятия, используемого в программировании, когда созданный продукт, будь то сайт или приложение, постоянно улучшается за счет взаимодействия с пользователями, их мнениями, и другими специалистами.<br \/>\nИнформационно-компьютерные технологии позволяют сегодня не только провести различные виды архитектурного анализа. Они позволяют дистанционно взаимодействовать с теми людьми, среду для которых мы хотим создать.<br \/>\nТак и зародилась идея создания платформы мойсеверозапад.рф, где жители и те люди, которые часто посещают этот район, могут выбрать из предложенного перечня объектов тот, который они хотят видеть в своем районе, или же предложить что-то свое.<\/p>\n<\/blockquote>\n<p>Весь сервис — React-приложение и <a href=\"https:\/\/firebase.google.com\">Firebase<\/a> в качестве БД.<\/p>\n",
            "date_published": "2019-02-26T14:09:08+03:00",
            "date_modified": "2020-04-01T22:54:48+03:00",
            "image": "https:\/\/repushko.com\/pictures\/Screenshot-2019-02-26-at-14.06.06.png",
            "_date_published_rfc2822": "Tue, 26 Feb 2019 14:09:08 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "8",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": [
                    "https:\/\/repushko.com\/pictures\/Screenshot-2019-02-26-at-14.06.06.png"
                ]
            }
        },
        {
            "id": "4",
            "url": "https:\/\/repushko.com\/all\/dtp-stat-helpers\/",
            "title": "Скрипты для очистки данных со stat.gibdd.ru",
            "content_html": "<p>Написал <a href=\"https:\/\/github.com\/repushko\/dtp_stat_helpers\">пару скриптов<\/a> для исправления координат ДТП.<\/p>\n<p>Процесс состоит из двух шагов:<\/p>\n<ul>\n<li>привязка координат ДТП к адресу (он обычно заполняется правильно),<\/li>\n<li>проекция координат адреса на ближайшую улицу. Скрипт может не работать в России без VPN.<\/li>\n<\/ul>\n<p>Не вынес отдельно конфигурацию, поэтому лучше всё запускать по шагам у себя в тетрадках и настраивать под себя.<\/p>\n",
            "date_published": "2019-02-04T15:16:09+03:00",
            "date_modified": "2019-02-14T01:07:07+03:00",
            "_date_published_rfc2822": "Mon, 04 Feb 2019 15:16:09 +0300",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "4",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3565,
    "_e2_ua_string": "E2 (v3565; Aegea)"
}