Осадок Размер файла: 14 487 байт, 8 879 символов. Изменена 11:25:00 16.03.2026. Метки: осадок.

Концепт игры «Осадок»

Места

База данных мест должна быть предельно чистой. Ни клиент, ни сервер не должны ничего преобразовывать и додумывать. Это задача конвертера, который будет периодически скачивать дамп OSM и преобразовывать его в готовую базу точек для игры.

Падежи названий готовятся при конвертации с помощью библиотеки mawo_pymorphy3.

  • Названия улиц и проспектов разбиваются на слова.
    • Парсер вроде бы обучен составным словам (военно-морской) и не должен давиться ими. Но стоит проверить.
  • Несклоняемые топонимы остаются без изменений (проспект Шаумяна).
    • Парсер хорошо воспринимает слова типа "Шаумяна", "Робеспьера", "Ленина" и так далее. Можно определять падеж слова, если это родительный, то мы имеем дело с несклоняемой частью.
  • Остальное пословно склоняется (Большая Конюшенная улица, Летний сад).
  • Из этого потом по простым формулам строятся названия (перекрёсток Заневского проспекта и проспекта Энергетиков — {cross.nom} {str1.gen} и {str2.gen}).

Подводный камень: по умолчанию прилагательное "большая" считается сравнительной степенью и склоняется как "большей", нужная нам вариация находится под индексом 1. Также стоит помнить, что библиотека приводит регистр к нижнему и его следует восстанавливать. Проще всего это делать, запоминая регистр оригинальных названий.
Ещё один: словосочетание "Пять углов" не склоняется как положено, давится на винительном падеже (пять углы). Такое же было замечено с словосочетанием "Чистые пруды". Это особое место, конечно, но хотелось бы полной автоматизации. Подобные топонимы вообще требуют тщательного рассмотрения, я уверен, что в СПб такого много, а в остальной России еще больше.

Все места могут быть как node, так и way. Последнюю стоит приводить к точке (центроид) и вычислять радиус, чтобы приблизительно соответствовать площади оригинального объекта.
Если у заведения нет имени, можно его типировать по адресу (в порядке приоритета: конкретный дом, конкретная улица или описанный полигон).

Некоторые объекты (например, входы на станции метро) не имеют прямой ссылки на родителя. Такие объекты нужно обрабатывать в особом порядке. Самый простой способ — привязывать вход к ближайшей станции (может быть неприятность со Спортивной, у который есть вестибюль на другом берегу Невы).

Чтобы скамейки и урны не перевешивали дворцы по частоте открытия разрывов,нужно использовать взвешенную генерацию случайных чисел по количеству и важности объектов в категории.

Общие полезные теги:

  • addr:street + addr:housenumber — адрес объекта. Пригодится при генерации описаний и иногда имён.
  • opening_hours — часы работы. Может пригодиться как при генерации описаний, так и при генерации разрывов.
  • brand — торговая марка объекта. Обычно уже имеется в имени объекта, однко стоит иметь этот тег в виду, если имя будет NULL.

Удобства

Тег amenity.

Общепит

Разного рода заведения общепита (кафе, рестораны, бары, ресторны быстрого питания и фудкорты).

  • cafe
  • restaurant
  • bar
  • pub
  • fast_food
  • ice_cream
  • food_court

Полезные теги:

  • brand
  • cuisine — указание на кухню заведения. Пригодится для описаний.

Объекты культуры

Культурные и развлекательные места — театры, кинотеатры, библиотеки. Маловероятно появление безымянных объектов, но это стоит иметь в виду.
Также сюда входят университеты. С этими следует обращаться осторожно, им свойственно дробление на множество корпусом, разбросанных по всему городу. Зачастую у таких корпусов никак не обозначена пренадлежность к головному заведению. Также они могут быть обозначены как amenity=university, так и building=university.

  • theatre
  • cinema
  • library
  • arts_centre
  • community_centre

Объекты образования

Детские сады, школы, колледжи и университеты. С последними следует обращаться осторожно, им свойственно дробление на множество корпусом, разбросанных по всему городу. Зачастую у таких корпусов никак не обозначена пренадлежность к головному заведению. Также они могут быть обозначены как amenity=university, так и building=university.

  • school
  • kindergarten
  • university
  • college

Здравоохранение

  • hospital — крупные больницы с несколькими корпусами, скорее всего, будет way или группа объектов.
  • clinic
  • pharmacy
  • dentist
  • veterinary

Религия

Места распространения опиума народа.

  • place_of_worship — единственный тег.

Полезные внутренние теги:

  • religion — собственно религия, которой посвящено место. Варианты: christian, muslim, jewish, buddhist и т.д.
  • denomination — ещё более тонкое деление религий. Варианты: orthodox, catholic, lutheran и т.д.
  • building — указание на конкретный тип здания: church, cathedral, chapel, mosque, synagogue и т.д.

Транспорт

  • bus_station — автовокзалы.
  • bus_stop — остановки.
  • ferry_terminal — паромы. Их тут мало, но пусть будут.
  • fuel — бензоколонки. Следует удостовериться, что электрозарядки тоже попадают в этот раздел.

Коммунальные и государственные услуги

  • bank
  • post_office
  • police
  • fire_station
  • courthouse
  • townhall — разне крупные государственные здания (проверить Смольный)
  • embassy — посольства. (Проверить консульства и визовые центры)
  • prison

Полезные теги:

  • brand для банков.
  • country для посольств.

Мелочь всякая

Малозначимые, но подходящие объекты.

  • bench — скамейка. Имеет смысл фильтровать по наличию спинки либо по материалу, иначе в игре будут одни скамейки.
  • clock — уличные часы.
  • fountain
  • marketplace — рынки.
  • ??? — урны. Ну а что. (Добавить мусорные баки)

Магазины

Их очень много, и упускать такие точки интереса нельзя. Общий тег shop.

  • supermarket
  • mall
  • department_store
  • books
  • antiques — антикварные барахолки.
  • music
  • musical_instrument
  • art
  • photo
  • tattoo
  • florist
  • bakery — булочные (например, булочные Вольчека)
  • butcher — мясной магазин (например, магазины Великолукского мясокомбината)
  • cheese
  • tea
  • coffee
  • wine
  • alcohol
  • hardware
  • electronics
  • jewelry
  • watches
  • second_hand
  • pawnbroker — ломбард.

Туристические места

Тег tourism. Стоит помнить, что объекты могут пересекаться друг с другом по тегам — это должен исправить общий механизм дедупликации.

  • museum — музей.
  • monument — большой памятник
  • memorial — памятники поменьше
  • artwork — скульптуры, мозайки, граффити.
  • attraction — просто интересное место.
  • viewpoint — смотровые площадки. Может быть полезно для активностей, связанных с поиском новых разрывов. Типа синхронизации.
  • gallery
  • hotel — гостиницы.
  • hostel — клоповники-хостелы.
  • information — разнообразные информационные точки, справочные бюро и т.п.
  • theme_park — лунапарки, похоже.
  • zoo
  • aquarium

Полезные теги:

  • museum для музеев — тип. Может быть art, history, science, technology и так далее.
  • inscription — надпись на памятниках.
  • memorial для памятников — тип. Может быть plaque, statue, stone, cross и так далее.
  • artwork_type для artwork — тип. Может быть sculpture, mural, relief, statue и так далее.
  • stars для гостиниц — класс обслуживания.
  • information для information — тип. Может быть board, map, guidepost, office и так далее. Тут требуется внимательная фильтрация!

Дороги и перекрёстки

Из всего этого больше всего нас интересуют перекрёстки, но их в данных OSM нет. Перекрёстки — это три и более way с тегом highway и общими нодами. Совпадающие ноды и есть перекрёстки. Их нужно будет выделять при постобработке карты отдельным алгоритмом.
Имя перекрёсток будет получать по названию улиц, его образующих (должно быть минимум две улицы!). Дублей быть не должно (при текущем алгоритме было найдено множество перекрёстков неизвестных улиц, перекрёстков с одной улицей либо дублей — Заневский проспект дважды пересекает проспект Энергетиков).

Это потому, что левая и правая полосы проспекта Энергетиков считаются разными проезжими частями. Первое, что приходит в голову - брать центроид подобных дублей, если они расположены рядом (размер получившейся площади должен учитываться при расчете радиуса).

Радиус стоит ставить побольше, чтобы игрок мог получить доступ к точке с углов.
Также стоит рассмотреть ситуации дорожных развязок и других особенностей трасс, когда формально перекрёстка нет, но объект есть. Это будет нелегко, этим займёмся в последнюю очередь.

Значения тега highway, подходящие для учёта:

  • primary
  • secondary
  • tertiary
  • residential
  • living_street
  • pedestrian
  • unclassified
  • primary_link
  • secondary_link
  • tertiary_link
Настройки просмотра

Вернуться