building != yes

Что значит “ввести”, Совет - это права обычного осмера + обязанности :3

Смотря где. Например здесь: http://www.openstreetbrowser.org/ здания раскрашиваются прежде всего на основе тегов amenity=* и shop=* (и мне кажется это наиболее логичным) А мапник вообще не понимает ни school ни store…

Спасибо, но я пока пас) Всё-таки совет - это прежде всего сообщество людей, которые могут реально повлиять на развитие Osm - авторов рендеров, конверторов, и т.п. а я программировании чуть больше чем полный ноль.

Кстати, а как выводить из совета?

С hut и cabin та еще история…
В альпийских странах есть понятие “общественной” (принадлежат, например, швейцарской альпийской ассоциации SAC) горной хижины для альпинистов, которая *Hütte * по-немецки, *cabane * по-французски, *capanne * по-итальянски, и сами они обычно на английский переводят ее как hut, а не как cabin, тем не менее. И это функциональный признак, а не признак конструкции.
Аналогичная ситуация в Норвегии - там есть понятие hytte, которое тоже “хижина”, при том в равной степени имеющая функционал “дачи выходного дня” или место для ночлега туристов (может быть частной или принадлежащей общественной организации DNT, ее региональному отделению). При этом когда это “дача”, то слово обозначает конструкционный признак (маленький домик с минимумом благ цивилизации, но не из “дерьма и палок”), а вот место ночлега туристов может быть выстроено крайне основательно, хотя удобств также, обычно не имеет.

Никакой дополнительной информации, из тегов типа building=bathhouse извлечь нельзя (кроме то, что возможно, это здание когда-то предназначалось под баню, зачем только нужно такое знание).

Если хочется раскрашивать здания по текущему использованию, что имеет некий смысл, хотя практическая полезность для меня сомнительна, достаточно юзать что-то вроде building:use=public|industrial|residential. А 100500 значений building=*, бессмысленная игра в уточнение.

Поправьте, если я что понял неправильно, но OSM - это картографическая база актуального состояния местности, естественных и рукотворных объектов, так?
Если да, то тэги и стили отображения в рендерерах должны описывать актуальное состояние здания, а его “изначальное назначение” хоть и может быть отражено в описании, но должно носить информационный характер.

Ну и действительно ведь, жуть. Потому как здание может иметь множество групп свойств:

  • конструкционные: этажность, материал стен, высоту, конструктивный тип (ангар, башня и т.п.), тип кровли, наличие фундамента…
  • функциональные: действующее назначение, режим доступа, форма собственности
  • “номенклатурные”: адрес, принадлежность к какому-то оператору или организации, кадастровый номер и т.п.
  • “исторические”: любой из перечисленных признаков, которые могут меняться со временем (при том тут могут гнездиться такие подкатегории признаков, как “изначальные” и “актуальные, но временные”).
    Ну а теперь, глядя на существующие тэги, дружно ужаснемся, пытаясь их с этими свойствами соотнести…

Безусловно так.

Речь шла вот о чем: “изначальное назначение” находится в некой корреляцией с архитектурой (конструкцией) здания, причем даже большей, чем “текущее использование”. Например церковь имеет купола, жилой дом разделен на секции (“подъезды”), спортзал имеет один большой внутренний объем и раздевалки, школа/больница имеет коридорную систему, и.т.д.
И казалось, что это можно было бы использовать для рендеринга.

Но чем больше я смотрю на представленный список значений, тем больше мне эта корреляция кажется мутной.
:frowning:

Суть в том, что по значению тега building можно было составить примерное представление о том, как здание выглядит сейчас. Если построили церковь, а потом сделали там магазин, и здание продолжает выглядеть церковью - то значение тега building должно быть church, а вовсе не store. И это будет именно актуальное его состояние, а вовсе не использование.

Давайте уточним, зачем нужно уточнение тега Building. Прежде всего для облегчения ориентации на местности.
Например, многоквартирные дома обычно имеют отдельные окна, высоту этажей 2.5-4 метра, балконы на фасадах, ширину в пределах 8-14 метров и т.д. А в промышленных часто сплошное остекление, высокие этажи, ширина не ограничена, балконов нет и т.п. Это понятно любому человеку. Если же человек постоянно проживает в каком-то регионе с утоявшимися архитектурными нормами, он может подмечать ещё более мелкие детали, и на их основе ещё эффективнее распознавать тип здания и ориентироваться.
Здание бань - пожалуй, наихудший пример из списка. Действительно, редко взглянув на здание бань можно понять, что это действительно здание бань. Возможно, его стоит вообще исключить. Но во многих других случаях это работает.

Как раскрашивать здания, и раскрашивать ли вообще, думаю, надо решать применительно к конкретному рендеру с его конкретными целями. Для некоторого упрощения ситуации могу предложить:
всегда указывать building:use, если текущая функция здания отличается от дефолтной для данной конструкции.

Вот потому я и написал, что в реальности у здания может быть “конструкционное” свойство и свойство использования.

Очень грубо (я не пытаюсь вписывать в существующую схему и не придерживаюсь синтаксиса), по моему наброску схемы эта самая церковь-магазин будет чем-нибудь в духе:
building-architecture=cathedral
building-use-original=cathedral-christian
building-use=shop

То есть "здание церковной архитектуры, построенное как христианский храм, использующееся (в данный момент, постоянно) как магазин.
Первое описывает инженерно-конструктивное свойство; второе - “историческое”, но имеющее смысл (т.к. из этого понятно, что это бывший храм, а не изначально построенный в виде храма магазин); последнее - использование в настоящее время. Building-architecture - это не “изначальное назначение”, это конструкция, которая остается актуальной. (Добавлю, если какую-нибудь школу до неузнаваемости перестроили под офисное здание, то building-architecture-original=school и отсутствие building-architecture укажут, что здание претерпело полную реконструкцию и сейчас не может быть отнесено к какому-то типу.)

Так что мое отрицание касается смешения конструкции и использования (которое имеет свойство меняться легче, чем конструкция), а не указания изначальных свойств вообще. А сейчас такое смешение есть. Не могу сказать, на сколько проблема неотделимости конструкции и использования масштабна, но она точно существует. Собственно, любая система обозначений или классификация проверяется на вшивость не рядовыми случаями, а тем, на сколько она позволяет описывать случаи, которые в явном виде изначально не предусмотрены. Церковь - склад; школа - временный пункт размещения беженцев; водонапорная башня - частный дом; газометр - жилое здание или центр современного искусства; завод - бизнес-центр; таксопарк - автосалон. В жизни эти свойства зданий друг другу не противоречат, вот и в хорошей классификации, по идее, обязаны уживаться.

Они и не противоречили, пока кому-то в голову не взбрело указывать в building текущее использование вместо типа конструкции.
Текущее использование задаётся другими тегами - shop, amenity, office, craft и т.п. Зачем его тащить ещё в building - для меня загадка.

Лично я на том, чтобы это туда тащить, и не настаиваю ни разу (мой пример тэгов был всего лишь примером), просто набор тэгов building уже несколько вылез за пределы указания их архитектурных свойств (или трактуется местами двояко - и как архитектура, и как функционал), а тэги использования не предоставляют корректной альтернативы.
Скажем, для того же венского газометра, превращенного в жилое здание, можно написать:
building=reservoir_gas (то есть само здание по архитектуре - газгольдер)
building:use=apartments (то есть оно используется, как многоквартирное жилье)
Но ведь в существующей схеме building:use должен соседствовать с building=yes, не несущим никакой полезной информации, или я не прав?

Только архитектура это Baroque, Art Nouveau, Renaissance и т.п. :slight_smile:

Это архитектурные стили :slight_smile:
Привычная мне БСЭ определяет архитектуру, как “искусство создания сооружений” и собственно “систему зданий и сооружений”. Но на тэге building-architecture я совершенно не настаиваю, написал его, чтобы не было пересечения смыслов с имеющимися тэгами, которые многие воспринимают по-своему.

Danidin9, не обижайся, но в этом списке большая часть тегов такие. Ясно различимые внешние признаки можно сопоставить с небольшой частью тегов.

Ты уверен, что на местности? Может быть на слое data c osm.org? :slight_smile:

Ладно, давай попробуем практически.

Вот у меня есть рендерилка (предназначенная для автомобильной навигации). Причем я хочу сделать карту всего мира, а не какого-то одного местечка :slight_smile:

Может она следующее:
В режиме 2d я могу:

  • раскрашивать полиноны зданий, тремя цветами.

в режиме 3d я могу:

  • поднимать параллепипеды из полингонов зданий некой высоты, возможно с разными текстурами.
    или
  • расставлять некие типовые 3d модели.

Какие ты мне можешь дать рекомендации по рендерингу зданий из списка?

А может лучше так:

  • инженерно-конструктивное свойство указывается в теге building.
    Как я упомянул в начале темы, есть уже более 2 млн. объектов с building != yes. Переделать такой массив данных нереально - уже пробовали провести подобное с building=entrance и потерпели неудачу (при кол-ве объектов в 20 раз меньше). Собственно, речь идёт лишь о зданиях, у которых использование не соответствет архитектуре, остальные подходят под любую схему (архитектура/назначение). Таких, на вскидку, пара процентов от общего числа (сужу по тем районам, что знаю), т.е. несколько десятков тыс.

  • изначальный тип использования мы не указываем, так же как и не рисуем исчезнувшие объекты. OSM - карта местности в настоящем времени. Если хочется отмечать - для этого есть такие проекты как викимапия и т.д. В крайнем случае можно указать через description

  • про текущий тип использования уже сказал Sergey Astakhov

Конечно. Например, маленькое квадратное здание. На карте вне зависимости от типа оно будет выглядеть одинаково. Но в реальности это может быть:
гараж, будка охранника, трансформатор, ларёк, пожарная вышка, очень маленький жилой дом, навес и т.д. Полагаю, средний человек в состоянии различить эти здания на местности. Соответственно, это можно указать конкретный тип на карте.
Другой пример. На карте нарисован П-образный дом. Больше информации нет. Человек, живущий в Санкт-Петербурге, примерно представляет, чем этот дом может быть: школой, поликлиникой или жилым домом, вероятнее всего сталинским или на худой конец современным, но не хрущёвкой. Если указать тип, человек сможет быстрее найти здание на местности, т.к. отличить школу он может по большим окнам, а также двум залам (концы буквы П), поликлинику - по одному входу с характерным подъёмом со ступенями или пандусом, жилой сталинский дом - по архитектуре.

Ну, с тремя цветами можно даже и не начинать) По любому, нужен дефолтный цвет для building=yes, цвет для жилых зданий, промышленных, служебных, остальные по умолчанию можно считать общественными (кроме no, construction ит.д., которые не рисуем). Можно приравнять служебные к yes и ужаться до 4 цветов :slight_smile:

Здесь могу посоветовать установить дефолтную высоту этажа в 3 метра для жилых зданий и гаражей, 4 - для общественных и служебных, 5 или больше - для промышленных. Типовые 3D-модели … для этого желательно, чтобы программа понимала design:ref, building:cladding, building:roof:shape, building:facade:colour и т.п. Впрочем, для таких типов , как ларёк, будка охранника, общественный туалет или даже частный дом, пожарная станция, супермаркет можно растягивать шаблонные текстуры… :slight_smile:

Считаю, что замарачиваться с большим количеством типов зданий не стоит, а сделать простую градацию:

  1. билдинг=апартментс - для жилья вообще
  2. билдинг=паблик - для общественных зданий вообще
  3. билдинг=индастриал - для сельхоз и промки
  4. билдинг=фасилити - для спорт и инженерных сооружений
  5. билдинг=темпорари - для временных зданий

Делить более подробно считаю не нужным и излишним. Кому надо, пусть используют note и не загружают основную базу. Таким образом будет проще новичкам и тем, кому до архитектуры по барабану.

Это не так работает. Базе ничего не будет, и рендерам тоже. Во всех можно прописать дефолтное building=*