<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блог Антона Репушко: заметки с тегом дтп хелпер</title>
<link>https://repushko.com/tags/dtp-helper/</link>
<description>Блог Антона Репушко</description>
<author>Антон Репушко</author>
<language>ru</language>
<generator>E2 (v3565; Aegea)</generator>

<itunes:owner>
<itunes:name>Антон Репушко</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Блог Антона Репушко</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Как работает очистка данных со stat.gibdd.ru</title>
<guid isPermaLink="false">47</guid>
<link>https://repushko.com/all/data-cleaning-stat-gibdd-ru/</link>
<pubDate>Thu, 25 Jun 2020 23:15:15 +0300</pubDate>
<author>Антон Репушко</author>
<comments>https://repushko.com/all/data-cleaning-stat-gibdd-ru/</comments>
<description>
&lt;p&gt;Год назад &lt;a href="https://repushko.com/all/dtp-stat-helpers/"&gt;написал скрипты&lt;/a&gt; для очистки данных статистики ДТП, потому что изначальные данные (именно GPS-координаты) были очень грязными  и их практически нельзя было визуализировать. Сорцы на Гитхабе &lt;a href="https://github.com/repushko/dtp_stat_helpers"&gt;имеются&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Сейчас скрипты временно неработоспособны, так как Яндексовский геокодер теперь требует ключ для использования API, но скоро я их поправлю.&lt;/p&gt;
&lt;p&gt;Я расскажу про красивый и аккуратный способ, как нам точку с неправильными координатами аккуратно подвинуть прямо на улицу, где произошло ДТП.&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://repushko.com/pictures/graph_explanation.jpg" width="1280" height="960" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Алгоритм очистки данных&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Описаниме по шагам&lt;/h2&gt;
&lt;p&gt;Изначально нам дана синяя точка слева внизу. Это GPS-координаты, которые мы получили из исходных данных. Наша основная зацепка — адрес. Он заполняется вручную и обычно верный.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Шаг 1.&lt;/b&gt; Воспользуемся геокодером. Это такая программа, которая переводит географическое название (город/село/улицу + дом) в географические координаты. Я обычно пользуюсь &lt;a href="https://tech.yandex.com/maps/geocoder/"&gt;геокодером Яндекса&lt;/a&gt;, потому что он точнее для СНГ, но ещё есть &lt;a href="https://nominatim.org/"&gt;бесплатный от OpenStreetMap&lt;/a&gt;. Так мы получаем чистую координату дома по адресу (красная точка на рисунке).&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Шаг 2.&lt;/b&gt; В OSM хранится граф дорог, при этом они привязаны к географическим координатам (у графа есть точное положение на плоскости). И есть классная особенность: мы можем ввести координаты точки на плоскости и получить кусок графа в радиусе n от этой точки. Общая идея такая:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;вводим координаты дома после геокодирования -&gt; получаем круг примерно как на картинке,&lt;/li&gt;
&lt;li&gt;выбираем все дороги, попавшие в радиус (можно считать их просто линиями),&lt;/li&gt;
&lt;li&gt;строим перпендикуляры из точки до каждой из линий (на рисунке x и y),&lt;/li&gt;
&lt;li&gt;выбираем кратчайший (в нашем случае x),&lt;/li&gt;
&lt;li&gt;наша красная точка получает новые координаты (уже на ребре графа из OSM) и становится жёлтой точкой,&lt;/li&gt;
&lt;li&gt;profit.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Так мы кривые координаты ДТП по одному лишь адресу аккуратно перенесли прямо на улицу. Теперь при визуализации всё будет аккуратно и ровно.&lt;/p&gt;
</description>
</item>


</channel>
</rss>