User:Tordanik/Floor plan mapping
VERY INCOMPLETE PROPOSAL BRAINSTORMING
This is a proposal for mapping the interior of buildings. It's designed to be easy to use - for example, it does not require any relations for the vast majority of buildings, and it never requires nested relations - and compatible with most existing tags (building=*, amenities etc.).
Features inside a building
Unsolved issues: * use highway=* set of tags with add-on tag indoor=yes, highway tags with prefix (indoor_highway=*, indoor:highway=*) or completely new tags (floor=yes?)? * most highway=* tags will be useless for buildings * own tags would prevent building hallways from showing up on general purpose maps: A primitive renderer will not be able to display buildings with multiple levels in an appropriate way. Using a different tag for this constitutes a renderer opt-in. * indoor=yes can be condsidered additional mapper effort (2 tags instead of one) * however, other tags (POIs, furniture (benches, fountains etc.),..) wouldn't get their own tags either... * distinguish between rooms and hallways: is a room simply like a hallway with area=yes or something different? * indoor = rooftop? * ...
POIs are amenities, shops, etc. that are found inside a building. These can be tagged just as you would if the building wasn't mapped in OSM yet. If they cover exactly one room, they can share the polygon, otherwise they get their own.
The level tag
Every feature mentioned above can get a level tag. The values of level are integers. 0 is the ground level, positive numbers are for levels above the ground, negative numbers for levels below the ground. The higher the number, the higher up the level.
Features without level tag do not default to 0 - their level is simply unknown (this will be the case for most existing POIs within building polygons). In situations where no unambiguous ground level exists, it's up to the mapper to decide which one gets the 0 - preferably, it should match the signs or maps that are found in the building.
If a feature belongs to multiple levels (such as stairs), you can add multiple numbers to the value and separate them with semicolons.
Unsolved issues: from-to syntax? "-" clashes with minus (levels below surface) -> a from-to syntax might not be needed for most features inside the building, but it would certainly be useful for level outlines
Additional thoughts: This tag could also be used for things that aren't really "buildings", such as bridges with multiple levels.
The building itself
The established way of mapping a building: A closed way with building=*. Most buildings don't need anything else.
Some buildings don't have the same outline on each level. For these, you can add additional polygons with building:outline=yes and a level=* tag. Again, it's possible to add more than one number to the value.
If the building=yes polygon contains the outline polygon, no relation is necessary.
Optionally, a building relation as described on Relations/Proposed/Buildings can be used. Hallways and rooms as well as POIs should be added as contains members.
TODO: * building:outline cannot be added as "outline" members, as the proposal requires that there is only one. Maybe use "level_outline" role? * most members will have the contains role. Should these simply be members without role instead?
It should not be necessary to use a relation for simple cases - if no relation is present, the building simply contains everything that is completely inside the building=* polygon, and the polygon's nodes are checked for building:entrance tags.
Details and Outlook
Possible extensions / RFC
- Adding refs/names for levels. Two options should be available:
Cases not covered by this proposal
- POIs on multiple levels with different outlines on each level (This problem also exists with POIs that stretch over multiple buildings, or are partly outdoors, etc. Should probably be addressed for the general case rather than as part of this proposal.)
- rooms on multiple levels with different outlines on each level
(does anyone actually have a real-life example for the second case?) ->have a look at the netherlands-embassy in Berlin, some floorplan here. btw.: this has 11 floors on only 27 metres due to the split level structure.--Dieterdreist 00:16, 30 November 2012 (UTC)
Handling in software
Current renderers will not be able to render buildings with multiple levels in a way that isn't a total mess. Solving this will require additional coding - a "level slider" (displaying only the selected level in all buildings) or a dedicated building view accessible after clicking on building would be nice from an user's point of view.
The same applies to editors - however, as no pre-rendered tiles are required, implementing a "level slider" (that might even be used to add the appropriate level tag to new ways automatically) might cause less problems for an editing application than it would for a renderer.
- Relations/Proposed/Level - uses nested relations for each level and the building