Proposed Features/Displacement

From OpenStreetMap Wiki
Jump to: navigation, search

Available languages — Proposed Features/Displacement
Afrikaans Alemannisch aragonés asturianu azərbaycanca Bahasa Indonesia Bahasa Melayu Bân-lâm-gú Basa Jawa Baso Minangkabau bosanski brezhoneg català čeština dansk Deutsch eesti English español Esperanto estremeñu euskara français Frysk Gaeilge Gàidhlig galego Hausa hrvatski Igbo interlingua Interlingue isiXhosa isiZulu íslenska italiano Kiswahili Kreyòl ayisyen kréyòl gwadloupéyen kurdî latviešu Lëtzebuergesch lietuvių magyar Malagasy Malti Nederlands Nedersaksies norsk norsk nynorsk occitan Oromoo oʻzbekcha/ўзбекча Plattdüütsch polski português română shqip slovenčina slovenščina Soomaaliga suomi svenska Tiếng Việt Türkçe Vahcuengh vèneto Wolof Yorùbá Zazaki српски / srpski беларуская български қазақша македонски монгол русский тоҷикӣ українська Ελληνικά Հայերեն ქართული नेपाली मराठी हिन्दी অসমীয়া বাংলা ਪੰਜਾਬੀ ગુજરાતી ଓଡ଼ିଆ தமிழ் తెలుగు ಕನ್ನಡ മലയാളം සිංහල ไทย မြန်မာဘာသာ ລາວ ភាសាខ្មែរ ⵜⴰⵎⴰⵣⵉⵖⵜ አማርኛ 한국어 日本語 中文(简体)‎ 吴语 粵語 中文(繁體)‎ ייִדיש עברית اردو العربية پښتو سنڌي فارسی ދިވެހިބަސް
Status: Draft (under way)
Proposed by: Florio Pal
Applies to: node relation
Definition: Defines a recording of location shift for easier mapping.
Drafted on: 2014-04-01


The demand for indoor mapping is rising, but with limited editor support it is extremely difficult for newbies to map buildings with multiple levels.

This proposal presents a simple and efficient way to editing problems, by dissolving the third dimension into the second; instead of stacking things on top of each other, we draw them next to each other.

New Tags

This proposal introduces a new relation type called "displacement". The relation has no tags (other than type=displacement), and has the following members:

Type Role Recurrence? Discussion
node source one an existing node that serves as the displacement base (e.g. corner of building)
node destination one the displaced copy of the source node; source and destination together form the

displacement vector, the reverse of which must be applied to all members of the relation except the "source" node.

node displaced 0..n all nodes that form the displaced object must be part of the relation so that

software processing the data knows that it must be moved back.

This proposal also introduces a new tag namespace, called "displaced:*", whereby any existing tag can be prefixed with "displaced:" to shield it from applications that do not know about displacement operations.

How to use

This example shows how to create a new floor for an existing building. First, you select an existing building:

Select a building

Then you insert a copy of it and place it into a free space, removing the entrance node:

Create a copy and place it in a free space (remove entrace node)

The copy can be placed in any free space on the map. If you are mapping near the coast, maybe move the copy out to sea where it is not in the way.

Now, prefix existing tags with displaced: to avoid mis-interpretation:

Prefix tags with displaced: to avoid mis-interpretation

Finally, create a displacement relation:

Create the displacement relation

When creating the displacement relation it is important to have one source and one destination node that will allow for the reversal of the displacement by rendering software. Source and destination nodes are illustrated by the green arrow in the picture.

Of course the above is just the beginning, you would then continue with indoor-mapping the ground and first floor. More floors can be created in the same way as long as there is space.


In order to more efficiently use the available space, an extended type of relation could be defined that not only allows displacement but also scaling. Then, several floors of one building could be drawn at 1:10 scale or so inside the building, and software would scale things back to normal. I am planning to submit a proposal for that around the same time next year.