GeoJSON Indoor Tools
January 16, 2023 ยท View on GitHub
Quick GeoJSON tools for editing and modifying geojson data, focusing on indoor features.
Available Scripts
Features inside area
Removes any feature that is outside of a polygon. Great for grabbing an area indoor data generated by other services.


python3 features-inside-area.py
Add polygons heights
Adds multiple properties to polygons: level, height, base_height and a random color.
python3 add-polygon-heights.py
Rooms to walls
Create walls for any polygon room. You can adjust the wall thickness with zeta. It also sets height so walls are differentiable from the original room polygon.


python3 rooms-to-walls.py
Add doors to rooms
Cut out rooms doors from their polygons. Doors are geometrically points near their walls.


Important notes:
- For assigning a door to a room, the door should have
door: yestag androom_id:
The room must have an{ "type": "Feature", "properties": { "room_id": "main", "tags": { "door": "yes" } }, "geometry": { "coordinates": [~], "type": "Point" } }idand aroomindoor tag:{ "type": "Feature", "properties": { "id": "main", "tags": { "indoor": "room" } }, "geometry": { "coordinates": [ [~] ], "type": "Polygon" } } - Door points must be near their wall but not necessarily on the wall line. The algorithm will find the nearest wall.
- Multiple doors for a single wall is NOT supported.
- Set
include_linteltoTrueif you want the lintels to be included in the final feature collection. You can adjust their properties withlintel_properties. circle_radius_cmindirectly defines the width of the doors. Setting it to a big number will cause problems in finding the correct wall for a door.
python3 add-doors-to-rooms.py
Contributing
Pull requests are welcome.