-
Notifications
You must be signed in to change notification settings - Fork 16
Introduction
To generate IndoorGML data file, we should use InFactory API correctly. It is possible to generate the data of the attributes and geometry data of each element in IndoorGML by sending that information to InFactory in simple JSON format. For this, you must create the geometry data from the floor plan or coordinates of indoor space. If the data volume is small and simple enough, you can write the JSON data on the text editor or somehow. However if not, it will be difficult work to deal with indoor space information with text format. InEditor help solves these problems. InEditor's primary goal is to provide users with a canvas that can act as a floorplan and communicate with InFactory based on the information on the canvas to generate an IndoorGML file.
Attributes provided by InEditor. Some attributes are set automatically by InEditor and are not editable by the user.
name | desc | editable in InEditor |
---|---|---|
id | the identifier of this feature. Need to be started with the alphabet | X |
name | nickname of this feature | O |
duality | id of dual space of the object | X |
description | additional information about the object | X |
name | desc | editable in InEditor |
---|---|---|
partialBoundedBy | Array of CellSpaceBoundarys’ id which places at the geometric boundary of this CellSpace |
X |
external Reference | An external reference not defined in the current document. | O |
name | desc | editable in InEditor |
---|---|---|
external Reference | An external reference not defined in the current document. | O |
name | desc | editable in InEditor |
---|---|---|
connected | array of Transitions' id connected with this state | O |
name | desc | editable in InEditor |
---|---|---|
connects | array of States’ id connected with this Transition | O |
weight | Weight value on this transition as an edge of network | O |
CellSpace | CellSpaceBoundary | State | Transition | |
---|---|---|---|---|
2D | Polygon | LineString | Point | LineString |
3D | Solid | Polygon | Point | LineString |
Point | LineString | Polygon | Solid |
---|---|---|---|
![]() |
![]() |
![]() |
![]() |
As you can see on the upper table, IndoorGML provides 3D geometry data. However, cause InEditor is a 2D graphics editor, if a user wants to define 3D geometry data for IndoorGML file, the conversion that Polygon to Solid and LineString to Polygon must be needed. Also, canvas coordinates in InEditor might be different from the coordinates the user wants. For these reasons, In Editor provide coordinates transform.
InEditor treats one canvas as one floor, and each floor has
floor height
, wall height
, LLC
, and URC
. LLC
(Lower Left Corner) and URC
(Upper Right Corner) are the corner coordinate values of the floor, respectively. InEditor transforms the coordinates of the canvas using these two values and the size of the canvas. These transformed coordinates are applied to the generated IndoorGML file. How users define LLC
and URC
determines the criteria of geometries at the data they generate. For example, the output coordinates of each input can mean:- Enter the size of canvas → Simple relative coordinates
- Actual latitude and longitude value of each edge → Actual coordinates of WGS 84 standard
- Horizontal / vertical length of the actual building (m) → Relative coordinates based on how far away from the origin
The floor height
is the distance from the ground to the floor, and the wall height
is the height of the wall of the floor, that is, the distance from the bottom of the floor to the ceiling. To define 3D geometry, InEditor simply extrudes 2D geometry that exists in InEditor. Therefore the z value of the coordinate value output to the IndoorGML file is greater than or equal to floor height
, but it is less than or equal to floor height
plus the wall height
.
For example, Suppose that a floor plan like Figure A exists and arbitrary coordinates are set as shown in Figure B.
Figure A is loaded into InEditor and used as the background of 1F, the floor properties of 1F can be set as shown in Figure C. After, you can create CellSapce(C1) like Figure C.
Then, in the gml document created by this situation, the coordinates of each corner in C1 will set like Figure D.
Through the definition of geometry in ISO19107, the normal of the surface must point outwards. A right-handed system is used, ie, when the ordering of the direction of rotation of the curled fingers of the right hand, then the thumb points towards the outside.
The orientation of the geometry is also an important factor when determining the partialBoundedBy and duality values.
- partialBoundedBy of CellSpace: The orientation of the surface of the CellSpace where the CellSpaceBoundary is inserted matches the direction of the CellSpaceBoundary.
- duality of Transition: In case of Transition(T1-1) from S1 to S2 in the situation as above, Duality of Transition is CellSpaceBoundary(CB1-2) which is partialBoundedBy of CellSpace.
✨ If you want some more detail information about IndoorGML, please visit http://indoorgml.net/