<?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>ШТОСМ: заметки с тегом api</title>
<link>https://shtosm.ru/tags/api/</link>
<description>ШТОСМ</description>
<author>Илья Зверев</author>
<language>ru</language>
<generator>E2 (v3576; 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>Миллиард</title>
<guid isPermaLink="false">1546</guid>
<link>https://shtosm.ru/all/milliard/</link>
<pubDate>Sun, 07 Nov 2021 15:59:13 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/milliard/</comments>
<description>
&lt;p&gt;Аманда обратила внимание, что в субботу американский картограф залил в базу линию с круглым номером — &lt;a href="https://www.openstreetmap.org/way/1000000000"&gt;1 000 000 000&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Практического смысла в таких событиях нет, зато это повод отметить рост OpenStreetMap. Как в феврале можно было отпраздновать &lt;a href="https://www.openstreetmap.org/changeset/100000000"&gt;стамиллионный пакет правок&lt;/a&gt;, в апреле — &lt;a href="https://www.openstreetmap.org/node/8589934592"&gt;точку 2³³&lt;/a&gt;, а скоро мы увидим десятимиллиардную точку.&lt;/p&gt;
&lt;p&gt;Таких ошибок, как восемь лет назад, когда номера точек перевалили за 32-битный лимит, и &lt;a href="https://habr.com/ru/post/169993/"&gt;многие приложения сломались&lt;/a&gt;, мы уже не допускаем. Или..? Что произойдёт через пару лет, когда номера линий тоже выйдут за 2³², требуя другого типа данных для их хранения? Когда &lt;a href="https://wiki.openstreetmap.org/wiki/64-bit_Identifiers"&gt;чинили&lt;/a&gt; типы для точек, все ли попутно увеличили лимит для линий?&lt;/p&gt;
&lt;p&gt;Некоторые готовятся уже сегодня. Например, Overpass API. В нём есть отдельный тип данных, area (области). Его идентификаторы генерируются из идентификатора линий или отношений, добавлением фиксированного очень большого числа. Но что выглядело большим десять лет назад, теперь пугающе близко к настоящим номерам. Для линий выделено окошко всего в 1,2 миллиарда значений. В следующем году нумерация area на замкнутых линиях в Overpass API начнёт пересекаться с областями на отношениях.&lt;/p&gt;
&lt;p&gt;В версии 0.7.57 Overpass API, вышедшей в октябре, такая нумерация областей больше не поддерживается. Автор &lt;a href="https://dev.overpass-api.de/blog/way_based_areas.html"&gt;переписал обработку замкнутых линий&lt;/a&gt;, и теперь нужно пользоваться либо запросами на поиск области по названию и местоположению, либо кодом &lt;tt&gt;way(1234567); map_to_area;&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Хитрости с числами рано или поздно выходят боком. Вспомним &lt;a href="https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%B0_2000_%D0%B3%D0%BE%D0%B4%D0%B0"&gt;проблему 2000&lt;/a&gt; или &lt;a href="https://shtosm.ru/all/chto-proizoydyot-zavtra-s-gps/"&gt;даты в GPS&lt;/a&gt;. Хочется сказать: не делайте так. Но такие оптимизации помогают сделать алгоритмы быстрее и уменьшить их требования к памяти. Аккуратное отношение к типам данных помогло, например, когда-то запихнуть движок OSRM внутрь мобильного приложения MAPS.ME.&lt;/p&gt;
&lt;p&gt;Так что решение — не мешок побольше, а постоянная поддержка. Заходить раз в пару лет в репозиторий и проверять, что предположения, сделанные годы назад, ещё верны. Жаль, что в мире открытых исходников популярность не означает денег на поддержку, и некоторые инструменты устаревают просто потому, что некому поменять несколько букв в исходном коде.&lt;/p&gt;
</description>
</item>

<item>
<title>Желаем того, что имеем</title>
<guid isPermaLink="false">1503</guid>
<link>https://shtosm.ru/all/zhelaem-togo-chto-imeem/</link>
<pubDate>Fri, 27 Sep 2019 12:29:16 +0400</pubDate>
<author>Илья Зверев</author>
<comments>https://shtosm.ru/all/zhelaem-togo-chto-imeem/</comments>
<description>
&lt;p&gt;Пока готовился к докладу, прослушал много попыток представить API 0.7 другими людьми, особенно &lt;a href="https://2018.stateofthemap.org/2018/T107-Modding_the_OSM_Data_Model/"&gt;Йохеном Топфом&lt;/a&gt; и &lt;a href="https://2015.stateofthemap.us/some-osm-futures"&gt;Энди Алланом&lt;/a&gt;. И прочитал, конечно, &lt;a href="https://wiki.openstreetmap.org/wiki/API_v0.7"&gt;страницу в вики&lt;/a&gt;. Предложений много. Самые радикальные, но с которыми сложно не согласиться, проходят по разряду «наша модель данных сложная, давайте приблизим её к Simple Features». Специальный тип для полигонов, например. Но правильно ли мы хотим?&lt;/p&gt;
&lt;p&gt;У нас же всё есть. Мы уже умеем отличать закрытые линии от периметров, умеем разбирать мультиполигоны. Зачем упрощать, когда незачем упрощать? То же самое в предложении Йохена убрать точки без тегов и добавить линиям координаты — по сути, собственную геометрию. Да, сейчас кэширование координат ест память, собирать объекты неудобно. Но кто сказал, что должно быть удобно потребителям данных? Удобно должно быть редакторам, потому что OpenStreetMap — проект для редакторов. С их позиции всё отлично: тайлы рендерятся, данные в базу загружаются, osmium вообще быстрый стал.&lt;/p&gt;
&lt;p&gt;Технарям, которые пишут софт, право голоса ни к чему. У них есть рычаг, коего лишены большинство участников проекта: они умеют писать софт. А остальным с моделью данных, на которую они пытаются повлиять, придётся жить. И ни разу не очевидно, что жизнь станет проще: мало ли, разрезать окружности напополам станет сложнее, или потребуется указывать, насколько важна каждая точка. Делать лишний клик на перекрёстках. Вся нужная информация уже есть в базе, а память и хранилища дешевеют быстрее, чем мы рисуем новые объекты.&lt;/p&gt;
&lt;p&gt;Разумеется, API всё равно устарел и его нужно менять. Только смотреть не туда, куда показывают натруженные пальцы программистов. А туда, где болит конкретно у вас, картографов. Вандалы замучали? Давайте думать, что нам упростит поиск проблемных правок и их откат. Лень тратить время на исправление тупых ошибок вроде линий из одной точки? Посмотрим, какую валидацию можно встроить в обработчики загрузки данных. Не выбрать между landuse=forest и natural=wood? Давайте запретим один из них на уровне API.&lt;/p&gt;
&lt;p&gt;И ещё пора перестать делать вид, что Overpass API — сторонний проект, никак не связанный с OSM API. На минуточку, в вики более сорока страниц про первый и всего одна про второй. OSM API не находится в вакууме, это интерфейс доступа к данным не лучше и не хуже других. Поскольку OSM децентрализован, то ничего удивительного, что API разбросан не только по нескольким странам, но и по нескольким способам доступа. Overpass API — один из них, и он решает очень много пожеланий к API 0.7. У него одна проблема: в отличие от Taginfo, Nominatim или форума он не установлен на серверах OSMF, и поэтому его сложно воспринимать всерьёз участникам проекта. Даже несмотря на то, что сервисов, написанных на Overpass, больше, чем использующих API. Ваш API 0.7 — это Overpass API, смиритесь с этим и думайте, какие особенности OSM API ограничивают все способы работы с данными.&lt;/p&gt;
&lt;p&gt;Я поставлю на &lt;a href="https://www.youtube.com/watch?v=MKLwLI8fyn0"&gt;отказ от пакетов правок&lt;/a&gt;: как метаданные, они лучше расстановки одинаковых тегов на всех объектах, но не оправдывают никаких ожиданий. Запрос для скачивания содержимого пакета, а не только тегов, должен быть выкорчеван из API, чтобы не подавать странных идей. И поставлю на лучшие связность и версионирование: не могу не согласиться с Йохеном, что когда внутри одной версии у линии может быть несколько разных геометрий, это дезавуирует всю систему версионирования. Нельзя откатить линию или отношение к прошлой версии, потому что это вызывает вопросы, к каким версиям откатывать их члены. Так мы возвращаемся к API 0.5, когда история адресовалась по меткам времени. Поэтому специфику OSM, «всё связано со всем», нужно подчеркнуть указанием ссылок на родительские элементы, и версии делать либо составными, либо увеличивать на каждый чих.&lt;/p&gt;
&lt;p&gt;В докладе на State of the Map, помимо &lt;a href="https://t.me/shtosm/292"&gt;проблем комментариев к правкам&lt;/a&gt;, я упомянул, что неплохо бы добавить способ выкачивания полной истории для любого объекта, включая историю его членов. И получение удалённых объектов для заданной области. Которое у нас уже есть для Potlatch 1, но не для остальных редакторов, несмотря на &lt;a href="https://github.com/openstreetmap/openstreetmap-website/pull/1448"&gt;попытки Фредерика&lt;/a&gt;. Да, это частично умеет Overpass API, но работа с исходной базой данных поможет получить результат быстрее и помочь в выкапывании истории другим инструментам, которые не приняли Overpass как нашего отца и спасителя. Наконец, задумавшись об истории в API, мы сможем сделать ещё один маленький шажок и добавить в него метод /revert. А затем и соответствующие кнопочки на сайт.&lt;/p&gt;
&lt;p&gt;Нам не нужно упрощать данные. Нынешние инструменты отлично справляются с преобразованием их в удобные другим людям форматы. Нам нужно подумать, чего мы лишены. И доделать это: изменить инструменты мониторинга или поправить модель данных, чтобы понять историю нашей карты.&lt;/p&gt;
</description>
</item>


</channel>
</rss>