Building models
The Yanzi GeoJSON format is an extension to the common GeoJSON format in order to support indoor mapping and topology deduction.
Indoor mapping: The strict typing and metadata additions enable users to render the maps clearly with the information needed by users to fully understand the maps.
Topology information: The strict typing and metadata enables systems to deduce the topology of buildings, floors, areas, rooms, furniture and more. This topological information can later be used to automatically create digital twins in both Yanzi's and partners' clouds.
Format Requirements
The Yanzi format specifies three requirements.
1: Stable ID requirement
1.1 All features representing a room, area, chair, table, conference room etc. MUST have the top level "id" key set to a globally (within location) unique string. 1.2 The id must be stable when the model is updated.
2. Known type requirement
2.1 All features with an ID and all features supposed to be rendered (walls, etc) must have a property named "type" with one of the known types in the table below.
3. Floor polygon
3.1 There must exist a feature that is a polygon or multipolygon and has the floor type.
Fields defined by the Yanzi standard:
The Yanzi standard defines four special keys in the GeoJSON Feature properties object: "type", "name", "address" and "parent". Example of a Feature in the GeoJSON file:
...
{
"type":"Feature",
"id":"181a32b8-1fb0-402e-9d96-5011e4bdc6a7", // Example unique id
"geometry": ...
"properties":{
"type": "area.room.conference", // Required (see 2.1)
"name": "Conference Room Saturnus", // Optional, recommended
"address": "1R13", // Optional
"parent": "261a12b8-1fb0-404e-9d06-5011e4bd11f9" // Optional
}
}
Supported types:
area Abstract topclass for any type of area
area.floor The background polygon.
area.group A group of areas.
area.room A generic room
area.room.bathroom A bathroom
area.room.conference A conference room
area.hallway A hallway
area.section Open area, rendered with different color. If exist, render this section in this color with no border.
area.inaccessible An inaccessible area
fixture.door A door
fixture.elevator An elevator
fixture.stairs Stairs
fixture.step A single step polygon
fixture.wall A wall
fixture.wall.partition A partition (rendered as line)
fixture.tv A tv
furniture.chair A chair
furniture.desk A desk
furniture.counter A countertop
furniture.table A table
# A poi(point of interest) is a single point that will be rendered with an icon.
poi.printer A printer
poi.entrance A building/floor entrance
poi.device.sensor A placed or planned sensor
Parent reference ("parent")
A polygon might optionally indicate a hierarical parent through the parent property. The value of the property must be the ID of another feature in this GeoJSON file.
The parent should be the immidiate parent. For instance, the hierarical parent of a "furniture.chair" might be a specific "area.room.conference".
If the parent is not specified, implementations might calculate hierarchies from the geometries in the file.
Extended properties for poi.device.sensor
The poi.device.sensor type is used by Yanzi to indicate positions of planned or placed sensors. The following additional properties is understood by the format parser.
All poi.* types MUST be a point geometry.
...
{
"type":"Feature",
"id":"181a32b8-1fb0-402e-9d96-5011e4bdc6a7", // Example unique id
"geometry": ... // Must be a point
"properties":{
"type": "poi.device.sensor", // Required (see 2.1)
"name": "Presidential bedroom moisture sensor 4",
"parent": "181a32b8-1fb0-402e-9d96-5011e4bdc6a5",
... // More general properties
}
}
Example File
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "ea0f7ddb-3bcc-4c9b-9e9d-5997d80a42a2",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949288753551997,
59.405571706516376
],
[
17.94936877889863,
59.405571706516376
],
[
17.94936877889863,
59.405608600325095
],
[
17.949322906407254,
59.405608600325095
],
[
17.949288753551997,
59.405608600325095
],
[
17.949288753551997,
59.405571706516376
]
]
]
},
"properties": {
"type": "area.room",
"name": "Kitchen 4",
"address": "R304"
}
},
{
"type": "Feature",
"id": "5f70e2dc-4260-464c-a1eb-e3c61338a2b8",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949326436418133,
59.405610396955666
],
[
17.94936877889863,
59.405610396955666
],
[
17.94936877889863,
59.405644541919614
],
[
17.949326436418133,
59.405644541919614
],
[
17.949326436418133,
59.405610396955666
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "f6e5debe-46ac-4d58-998e-e5ad32caca37",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94942554147357,
59.40563676250925
],
[
17.949424517770417,
59.405636744542946
],
[
17.94942441187009,
59.405638541173516
],
[
17.949431048290542,
59.40563864897135
],
[
17.94943401349968,
59.40563899931431
],
[
17.94943697870882,
59.40563955626979
],
[
17.94943978506747,
59.40564030187147
],
[
17.949442379625467,
59.405641218153065
],
[
17.949444709432644,
59.405642305114554
],
[
17.94944677448901,
59.40564352682334
],
[
17.949448486544288,
59.40564487429627
],
[
17.949449863248528,
59.40564632058388
],
[
17.949450851651576,
59.40564784771986
],
[
17.949451469403478,
59.40564942875476
],
[
17.949451769454406,
59.40565184522288
],
[
17.949450851651576,
59.405654216775226
],
[
17.949449863248528,
59.405655743911204
],
[
17.949448486544288,
59.405657190198816
],
[
17.94944677448901,
59.40565853767174
],
[
17.949444709432644,
59.40565976836368
],
[
17.949442379625467,
59.40566084634202
],
[
17.94943978506747,
59.405661771606766
],
[
17.94943697870882,
59.4056625082253
],
[
17.94943401349968,
59.405663065180775
],
[
17.949430942390215,
59.40566342450688
],
[
17.949427800680535,
59.40566357722049
],
[
17.949424641320796,
59.40566353230472
],
[
17.949421517261168,
59.40566327179329
],
[
17.94941848145181,
59.40566281365249
],
[
17.949415586842893,
59.40566216686549
],
[
17.949412886384568,
59.40566133143228
],
[
17.949410415376953,
59.405660325319154
],
[
17.949408226770206,
59.40565916649244
],
[
17.949406338214388,
59.40565788190158
],
[
17.9494047850096,
59.40565648052974
],
[
17.949403602455956,
59.405654989326365
],
[
17.949402790553453,
59.40565343524093
],
[
17.9494023846022,
59.40565183623972
],
[
17.9494023846022,
59.40565022825536
],
[
17.949402790553453,
59.40564863823731
],
[
17.94940362010601,
59.4056470212698
],
[
17.94940021364551,
59.405646563129004
],
[
17.949399313492737,
59.40564835077642
],
[
17.949398854591323,
59.405650174356445
],
[
17.94937230890951,
59.405650174356445
],
[
17.94937230890951,
59.405608600325095
],
[
17.94942554147357,
59.405608600325095
],
[
17.94942554147357,
59.40563676250925
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "8be48a29-be19-424b-a5bb-bcbaf2b76861",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94937230890951,
59.405606803694525
],
[
17.94937230890951,
59.405571706516376
],
[
17.94942554147357,
59.405571706516376
],
[
17.94942554147357,
59.405606803694525
],
[
17.94937230890951,
59.405606803694525
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "7a970a7e-190e-42ca-a083-15cde6a436ca",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949322906407254,
59.40565189912179
],
[
17.949322906407254,
59.40566651471146
],
[
17.94929237181315,
59.40566651471146
],
[
17.94929237181315,
59.40565119843587
],
[
17.94929237181315,
59.40564048153453
],
[
17.949322906407254,
59.40564048153453
],
[
17.949322906407254,
59.405646338550184
],
[
17.949322906407254,
59.40565189912179
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "ccfafba4-f6c8-4a74-bb95-984c9ddf9a3d",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949255377299135,
59.40565119843587
],
[
17.949255377299135,
59.40566088227463
],
[
17.949249676331565,
59.40566088227463
],
[
17.949240551253443,
59.40566088227463
],
[
17.949240551253443,
59.40566558046357
],
[
17.949240551253443,
59.40566741302675
],
[
17.949324671412693,
59.40566741302675
],
[
17.949324671412693,
59.40565189912179
],
[
17.94936876124858,
59.40565189912179
],
[
17.949398854591323,
59.40565189912179
],
[
17.949398872241378,
59.405652006919624
],
[
17.949399313492737,
59.40565372270182
],
[
17.949399348792845,
59.40565383049965
],
[
17.94940021364551,
59.40565550136608
],
[
17.94940028424573,
59.405655609163915
],
[
17.949401555049647,
59.40565720816512
],
[
17.949401643299918,
59.405657315962955
],
[
17.949403320055087,
59.405658816149476
],
[
17.949403443605465,
59.40565890598101
],
[
17.949405455711666,
59.405660289386546
],
[
17.949405614562156,
59.40566037921808
],
[
17.949407962019393,
59.40566161889316
],
[
17.949408138519935,
59.405661690758386
],
[
17.949410786028096,
59.40566276873673
],
[
17.94941096252864,
59.4056628316188
],
[
17.94941385713756,
59.40566372993408
],
[
17.949414068938214,
59.405663783833
],
[
17.94941715769773,
59.40566448451892
],
[
17.949417369498384,
59.40566452045153
],
[
17.949420617108395,
59.40566501452494
],
[
17.9494208465591,
59.40566503249124
],
[
17.94942418241938,
59.405665310968985
],
[
17.94942441187009,
59.405665319952135
],
[
17.949427800680535,
59.40566537385105
],
[
17.949428012481185,
59.40566537385105
],
[
17.949431383641578,
59.405665212154304
],
[
17.949431613092283,
59.405665194187996
],
[
17.949434913652457,
59.40566480791242
],
[
17.949435125453107,
59.405664771979815
],
[
17.949438302462898,
59.40566417909172
],
[
17.94943851426355,
59.405664134175964
],
[
17.949437755311212,
59.405664331805326
],
[
17.949547856350538,
59.40566428688956
],
[
17.949547856350538,
59.40566558046357
],
[
17.949551103960548,
59.40566558046357
],
[
17.949551103960548,
59.40569007752136
],
[
17.949198014622347,
59.40569007752136
],
[
17.949198014622347,
59.40560948067407
],
[
17.949322906407254,
59.40560949864038
],
[
17.949322906407254,
59.40563958321925
],
[
17.949255377299135,
59.40563958321925
],
[
17.949255377299135,
59.40565119843587
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "b9b2d5f3-a12f-478a-bbc7-5b86ebcc824b",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94929060680771,
59.405652096751155
],
[
17.94929060680771,
59.40566651471146
],
[
17.94926880899053,
59.40566651471146
],
[
17.94926880899053,
59.405652096751155
],
[
17.94929060680771,
59.405652096751155
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "a764b07c-af8e-478e-a3b8-3ec6e20d69c1",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94929060680771,
59.40565119843587
],
[
17.94926880899053,
59.40565119843587
],
[
17.949257142304575,
59.40565119843587
],
[
17.949257142304575,
59.40564048153453
],
[
17.94929060680771,
59.40564048153453
],
[
17.94929060680771,
59.40565119843587
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "7d149070-f2b7-4b39-a679-7e80506604e9",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94972462164532,
59.40566558046357
],
[
17.949731981718003,
59.40566558046357
],
[
17.94974228934977,
59.40566558046357
],
[
17.94974228934977,
59.40572762710024
],
[
17.94972462164532,
59.40572762710024
],
[
17.94972462164532,
59.40566558046357
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "0bfbc16f-2c11-40fe-8547-d55abba3a2b2",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949118801178216,
59.405571706516376
],
[
17.949201632883497,
59.405571706516376
],
[
17.949201632883497,
59.40560858235879
],
[
17.949196249616907,
59.40560858235879
],
[
17.949196249616907,
59.40567733941064
],
[
17.949118801178216,
59.40567733941064
],
[
17.949118801178216,
59.405571706516376
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "d159e2b4-6a62-4ff8-878d-363562ca1efd",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949551103960548,
59.40572762710024
],
[
17.94951109128723,
59.40572762710024
],
[
17.94951109128723,
59.40569097583665
],
[
17.949551103960548,
59.40569097583665
],
[
17.949551103960548,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "c1a02e43-7c51-45e4-9d8d-9cd3b79466cc",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949201950584477,
59.40572762710024
],
[
17.949118801178216,
59.40572762710024
],
[
17.949118801178216,
59.40567823772592
],
[
17.949196249616907,
59.40567823772592
],
[
17.949196249616907,
59.40569097583665
],
[
17.949201950584477,
59.40569097583665
],
[
17.949201950584477,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "2a0edf3f-6a00-4edb-8ceb-4989977dc8e3",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949244098914374,
59.40572762710024
],
[
17.949203715589917,
59.40572762710024
],
[
17.949203715589917,
59.40569097583665
],
[
17.949244098914374,
59.40569097583665
],
[
17.949244098914374,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "3ac4638a-10da-4569-bf8b-2646f9d59d1e",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949245863919813,
59.40572762710024
],
[
17.949245863919813,
59.40569097583665
],
[
17.949329278076892,
59.40569097583665
],
[
17.949329278076892,
59.40572762710024
],
[
17.949245863919813,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "d72e39c1-1506-473f-bcac-7986a0457164",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94942208206291,
59.40572762710024
],
[
17.94933104308233,
59.40572762710024
],
[
17.94933104308233,
59.40569097583665
],
[
17.94942208206291,
59.40569097583665
],
[
17.94942208206291,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "f53499eb-6a92-4573-8fbe-82fdbded0c09",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949466736700533,
59.40572762710024
],
[
17.94942384706835,
59.40572762710024
],
[
17.94942384706835,
59.40569097583665
],
[
17.949466736700533,
59.40569097583665
],
[
17.949466736700533,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "181a32b8-1fb0-402e-9d96-5011e4bdc6a7",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94950932628179,
59.40572762710024
],
[
17.949468501705972,
59.40572762710024
],
[
17.949468501705972,
59.40569097583665
],
[
17.94950932628179,
59.40569097583665
],
[
17.94950932628179,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "7bff1564-e89d-4b91-baf2-a45959ed7976",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.949203397888937,
59.405571706516376
],
[
17.949286988546557,
59.405571706516376
],
[
17.949286988546557,
59.405608600325095
],
[
17.949203397888937,
59.40560858235879
],
[
17.949203397888937,
59.405571706516376
]
]
]
},
"properties": {
"type": "area.room"
}
},
{
"type": "Feature",
"id": "aa952b68-f7e2-4683-ac7e-65692833c5ef",
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
17.94972285663988,
59.40572762710024
],
[
17.949552868965988,
59.40572762710024
],
[
17.949552868965988,
59.40569007752136
],
[
17.949552868965988,
59.40566558046357
],
[
17.94955698142866,
59.40566558046357
],
[
17.94955698142866,
59.405664250956946
],
[
17.94972285663988,
59.405664250956946
],
[
17.94972285663988,
59.40566558046357
],
[
17.94972285663988,
59.40572762710024
]
]
]
},
"properties": {
"type": "area.room"
}
}
]
}