Дмитрий Лебедев — магистр экономики, программист и урбанист, который уже более 10 лет работает с OpenStreetMap. Он не только рисует домики, но и делает много исследований на основе его данных. По какому пути пошел OSM, есть ли у него будущее и зачем программистам гуманитарные науки — обо всем этом он рассказал в интервью.
— Как и когда вы познакомились с OpenStreetMap?
— Точно не смогу сказать, это было более 10 лет назад. Мне был интересен проект, я слышал о нем, что это «как Википедия, но только про карты». Однако зарегистрировался не сразу, не хотел заводить очередной аккаунт на еще одном сервисе. Но в какой-то момент любопытство взяло верх и я начал редактировать карту. Сначала отрисовал территорию вокруг своего дома, а потом затянуло так, что я несколько лет был первым в рейтинге картографов по Новосибирской области.
— Чем именно вас заинтересовал проект?
— Тем, что почти сразу видишь результат своей работы: ты только нарисовал, а оно уже отобразилось на карте. Это невероятно цепляет. К тому же, помните какими 10 лет назад были Яндекс и Google? Чего уж говорить, даже 2ГИС в то время еще не был таким детализированным. А в OSM уже тогда можно было рисовать все что хочешь: внутриквартальные дороги, деревья, детские площадки и многое другое. В силу того, что я много ездил на велосипеде, быстро оценил потенциал OSM: отрисовал нужные мне дороги, залил в навигатор и поехал кататься. Поэтому какое-то время я очень много картировал.
— Сейчас продолжаете картографировать?
— Нет. Изредка нарисую с десяток домиков и на этом всё, на большее уже не хватает терпения. В какой-то момент всё надоедает, меняются интересы и приоритеты, лично у меня так и случилось с OSM.
— Каким тогда был проект? Чем жил и дышал? Что изменилось за это время?
— Если в 2010 году еще можно было зайти на российский форум и получить адекватный ответ на свой вопрос, то в 2016 — уже нет, так как он постепенно превратился в помойку, где «заседали» лишь агрессивные тролли. Я не знаю, как с этим дела обстоят сейчас, но тогда, если появлялся новичок, нередко его тут же «заклевывали» более опытные участники, которые почему-то считали, что этот человек задает глупые вопросы и сознательно хочет навредить проекту своей активностью. Поэтому обсуждать что-либо в таком сообществе стало бессмысленно.
Знаете, что еще изменилось? Десять лет назад в OSM можно было чего-то добиться и продвинуть какие-то инициативы на энтузиазме. Сейчас я такого не вижу и, думаю, что это вовсе маловероятно. Чтобы в данный момент что-то изменить в проекте — надо быть штатным специалистом по взаимодействию с сообществом OSM в какой-нибудь IT-компании. Ничего страшного в этом нет. Это естественный процесс развития проекта. Он вырос и на него обратили внимание крупные игроки рынка, вместе с которыми пришли не только деньги и политика, но, прежде всего, будущее.
Наверное, не я один несколько лет назад явно понимал, что еще чуть-чуть и OSM пойдет ко дну. Тогда казалось, что если ничего не изменится в проекте, то не за горами его похороны. Но в него пришел бизнес и отменил их. Так что лет 10, а может быть даже и 20, проект еще поживет. Как мне кажется, он сейчас пошел по модели развития ОС Android, в разработке которой есть два сегмента. Первый — ядро Linux, его делают энтузиасты-профессионалы для самих себя. Второй — коммерческая составляющая, нацеленная на массового пользователя.
Проект "Трамвайные системы России"
Проект "Выделенные полосы"
— Насколько знаю, вы, как аналитик, нередко используете данные OSM в своих исследованиях. Сложно ли вам было начать с ними работать?
— Нет, так как я был участником проекта и сам рисовал карту. Я видел его изнутри и понимал, из чего он состоит. Поэтому у меня не было никаких сложностей. Вообще, OSM устроен достаточно просто. Другое дело, что в нем не существует единой схемы тегирования — кто во что горазд. Но и даже к этому со временем привыкаешь.
Я обычно как делаю? Начинаю свои эксперименты с небольших райцентров. Чаще всего на этом уровне трудностей не возникает. Если модель работает, то я пытаюсь ее применить к городам-миллионникам. И вот уже здесь иногда в данных бывают ошибки, которые не дают работать алгоритму. Их приходится закрывать в ручном режиме. Например, как-то я решил посчитать плотность населения по кварталам на основе данных OSM, а именно по тегу, которым обозначают жилые зоны: landuse=residential. Все было прекрасно, но в одном месте у меня оказалась запредельная плотность, потому что кто-то жилой многоквартирный дом обвел по отмостке еще и полигоном с этим тегом.
Приблизительно такого характера чаще всего и бывают проблемы при работе с данными OSM. Но, как мне кажется, я нашел некоторые типы данных в OSM, которые можно смело брать, например, дорожный граф. За его связностью и качеством следит достаточно много людей, а потому с ним редко когда бывают проблемы.
Дмитрий Лебедев на Вечере оживших карт. Фото: Андрей Дремов. Презентация в PDF
— Какими инструментами вы пользуетесь для работы с геоданными?
— Использую GeoPandas, Osmium, GDAL, QGIS, какое-то время работал с PostgreSQL, но после от него отказался. Он хорош тем, что с ним можно быстро начать работать, но если много экспериментируешь, то он начинает мешать. Еще есть ряд своих собственных скриптов и наработок, но пока я ими не могу поделиться.
— Что бы посоветовали тем, кто только собирается заниматься анализом данных?
— Думаю, чтобы научиться этому, надо иметь перед собой не лекцию, а реальную задачу или набор данных. А чтобы знать, что с этим делать, пригодится любой обзорный курс матстатистики, эконометрики (регрессионного анализа), а также какие-то презентации исследований — узнать, что люди делают с данными. Материалов таких полным полно, и трудно что-то конкретное даже вспомнить.
Несколько интересных авторов говорят о принципах разработки в целом: например, Дуглас Крокфорд, автор формата JSON дал 7 интересных лекций ещё в 2009, но те, что касаются истории (1, 2), интересно слушать и сейчас. Джек Дидрих, один из разработчиков Питона, делает доклад «Перестаньте писать классы» (это я его переводил), а также замечательная статья Мэтта Линдермана о скорости проектирования.
Пожалуйста, обратите внимание на последний текст. Если коротко, то в нем на примере конкретной истории рассказывается о том, почему стоит делать много маленьких итераций, а не тратить месяцы на разработку громоздких моделей, которые в итоге ломаются за минуту. Достигайте результата путем быстрых проб и ошибок, а не великих провалов. Это очень важно помнить, когда работаешь программистом. Хотя, как мне кажется, этот принцип может пригодиться и в целом по жизни.
Проект Дмитрия Лебедева "Пиво против кофе"
— Что вам нравится в OSM? Не нравится? Что бы сделали лучше?
— Первым делом переделал бы модель данных. Какой именно она должна быть? Не знаю, но точно не такой, какая она сейчас. Отчего-то мне кажется, что разработчикам стоит посмотреть в сторону хранения данных в виде версий. Скажем так, некий аналог патчей в git с возможностью версионирования и выделения чистых веток. Возможно ли это реализовать с географической базой данных, где невероятное множество изменений? Вопрос. Но если в OSM пришли IT-гиганты, то я бы на их месте выделил грант на разработку прототипа такой БД, причем важно, чтобы в ней были топологические структуры, потому что, для работы с данными как в БД или Shape/GeoJSON/GPKG, проблем нет.
Еще бы я обратил внимание на существующую «заплатку» — мультиполигоны, которые сейчас делаются как наборы линий. Потому что сейчас можно разомкнуть мультиполигон какого-нибудь моря и всю карту «зальет» водой. И попробуй найди место, где его разомкнули… На ШТОСМ я читал идеи насчёт этого уж не помню сколько лет назад.
Также я бы на месте Фонда OSM, который последнее время озаботился разнообразием, рассматривал разнообразие не только, как создание условий для того, чтобы в проекте стало больше женщин, жителей Африки, Южной Америки или иного континента на планете. В данный момент любой здоровый человек в мире имеет гипотетическую возможность стать участником OSM. Но вот кто действительно выключен из проекта, так это люди с ограниченными возможностями.
Например, у нас нет версии сайта для слабовидящих людей — для них карта плохо адаптирована. Или маломобильных — для них там мало данных. Как мне кажется, OSM имеет возможность открыть двери для таких людей уже завтра, так как вся технологическая основа для этого имеется.
Можно начать с того, что сделать отдельную карту или картостиль для слабовидящих, потом адаптировать для них инструменты, с помощью которых создается карта. И сам по себе это очень важный момент — ориентирование в пространстве людей, у которых проблемы со зрением. Может ли OSM помочь в этой ситуации? Можем ли мы нарисовать такую карту, которая бы учитывала их пожелания и помогала им каждый день? Вот это реальная задача, а не дань моде.
Поэтому считаю, что любой разговор за инклюзивность должен начинаться с поиска тех, помощь которым даст осязаемый результат. Если же разнообразие рассматривается только как процесс — бесконечная борьба за него, — тогда эта борьба лишь дискредитирует того, кто ее ведёт.
— Что бы вы сказали человеку, который размышляет: использовать данные OSM или нет? Принимать участие в проекте или нет?
— Обязательно стоит пробовать. Почему нет? Это интернет. Если вы посмотрите, поизучаете, нарисуете пару домиков, что-то новое узнаете, с вас не убудет. Новых знаний и опыта бояться не стоит, как и новых данных. Мне нравится, как делают в американских стартапах: смело берут и пробуют применить для своих нужд, тратят день-два на эксперименты и прототипы. Если в процессе понимают, что не получается — то оставляют.
К сожалению, в российских нестартапах, особенно в различных окологосударственных трудновыговариваемых учреждения, а порою и в аутсорсинге, стараются избегать любых экспериментов. Там боятся испортить работающий процесс и любят послушность. Если их позиция вам близка, то что я могу сказать? Ну, тогда не пробуйте работать с данными OSM, не смотрите в их сторону, не подходите к ним.
Люди зачастую — пленники того, с чем они выросли. Как говорит Крокфорд, чтобы инновация в ИТ вошла в обиход, нужно порядка двадцати лет — чтобы от дел отошло поколение специалистов, мыслящих по-старому. Например, объектно-ориентированное программирование было придумано в 60-е года прошлого века, а входить в оборот оно начало только в 80-е. И так со многим. Крокфорд говорит, что многие в спорах о разных новшествах встают в позицию “попробуй убеди меня, что твоя технология нужна, но я её не пробовал и не хочу узнавать нового”. Если не рефлексировать над собственными взглядами, то можно так же застрять в развитии.
OSM — 15 лет. Проект продолжает развиваться. И я думаю, что его время еще придет и он будет всюду. Не так давно в него пришли крупные игроки. Если даже они оценили его потенциал, то какой еще нужен сигнал?
— Чему вы научились благодаря OSM? Что нового открыли для себя?
— Я неплохо узнал географию и топонимику, в том числе и своей малой родины — Сибири. Оказывается, у нас треть названий тюркские. Также OSM — хороший пример некоммерческого IT-проекта, на котором можно разбирать некоторые положения теории игр. Одно дело, что я изучал ее в университете, а другое — увидел все это своими глазами вживую и изнутри.
— Что скажете в завершении беседы? Пожелаете нашим читателям?
— Так сложилось, что большинство из них — это программисты или люди, связанные с IT, и гораздо реже гуманитарии. Это накладывает свой отпечаток на то, как развивается проект, куда он движется и что с ним происходит внутри.
К примеру, в ИТ любят апеллировать к тому, как всё задумано и как должно быть в идеальном мире. В градостроительстве и архитектуре давно стало очевидным, что всё живое развивается не так, как было в замыслах организаторов: люди во всём мире не ходят по перпендикулярным тротуарам; люди почему-то не хотят отдавать детей в садик или школу внутри именно их микрорайона; наукограды даже в советские годы не выдавали массовых научных прорывов. Общественные и гуманитарные науки давно изучают, почему так происходит. Нужно не знать про них вообще, чтобы наивно придумывать, как организовать, например, сообщество, и ждать, что оно так и должно будет работать.
Есть крайний пример — исследователи террористических сетей, например, Марк Сейджман, или Диего Гамбетта отмечают, что их составляют не дремучие фанатики, а хорошо образованные идеалисты с техническим образованием и утопическими мечтами. Видимо, гуманитарии, зная историю и прежние подобные учения, способны распознать догматизм и манипуляции.
Поэтому нужно обязательно расширять познания в гуманитарной сфере. Например, ознакомиться хотя бы с теорией науки Поппера. Ведь все те программы и данные, которыми мы так увлекаемся, ради которых готовы ругаться сутками на форумах — это все невероятно маленькая часть реальной жизни.
P.S. Доклад Дмитрия Лебедева «Исследования с открытыми данными и ГИС» (видео, презентация) («День открытых данных», Москва, 2018 год).
Общение российских участников OpenStreetMap идёт в чатике Telegram и на форуме.
Также есть группы в социальных сетях ВКонтакте, Facebook, но в них, в основном, публикуются новости.
> Присоединяйтесь к OSM!
Предыдущие интервью:
Мария Попова, Николай Петров, Александр Зейналов, Алексей Клянин, Максим Дубинин, Александр Павлюк, Сергей Зайченко, Георгий Потапов, Владимир Маршинин, Евгений Усвицкий, wowik, SviMik, Кирилл Бондаренко, Артем Светлов, Сергей Синицын, Наталья Козловская, Виктор Вяличкин, Иван aka BANO.notIT, Антон Беличков, Елена Балашова, Илья Зверев, Тимофей Субботин, Сергей Голубев.
JediPhilosopher
С мультиполигонами и водой кстати реально проблема. Может кто-то знает, как ее обойти?
Вот делаю я экспорт области с куском береговой линии. И берег в итоге я получаю просто как незамкнутую линию, которая была куском мультиполигона моря, состоящую из частей, попавших в мою область.
Как мне замкнуть эту линию, чтобы получить область воды в пределах моей области в виде простого полигона?
Нельзя просто соединить начало и конец линии, замкнув полигон. Это будет работать для выпуклых водоемов, но не сработает со всякими островами. На картинке под катом изобразил примеры.
Не выйдет добавить в полигон границы участка — так как просто непонятно, с какой стороны от линии берега собственно вода находится.
dvserg
Если замыкать по границе внешнего прямоугольника — по ее точкам пересечения с линиями полигонов? Тип заливки несет в себе сама граница, от нее и распространять заливку в полигоне?
JediPhilosopher
Так непонятно, в какую сторону. Вправо или влево? Линия границы не несет никакой информации о том, по какую сторону от нее находится внешняя и внутренняя части полигона. И нет общепринятого порядка задания вершин в полигонах, могут быть как по, так и против часовой и вообще как угодно.
pfg21
замыкание прямой линией упрощенный вариант, со своими косяками упрощения.
полноценный алгоритм: докачать неполный мультиполигон и правильно его нашинковать.
ксати отношение-мультиполигон может с несколькими оутерами и кучей иннеров, вот где будет красота.
SergeyAstakhov
В случае coastline всё просто — «land is on the left side and water on the right side of the way (when viewing in the direction of the way arrows)»
В случе просто водяных объектов (озёр/рек) сложнее — нужно при обрезке оставлять граничные объекты целиком (параметр completeWays/completeRelations у osmosis) и затем при конвертации делать геометрическую обрезку (intersection) объекта полигона с прямоугольником обрезки.
JediPhilosopher
О, спасибо, про тему с coastline как-то не знал.