Skip to content

Date Structure

JungHam edited this page Jul 25, 2018 · 8 revisions

InFactory has own data structure for saving IndoorGML efficiently. "Feature Class" holds the data of the elements of IndoorGML. When InFactory creates a IndoorGML document, InFactory use JAXB. JAXB helps binding process between xml elements and Java instances. We used ogc-schemas(https://github.com/highsource/ogc-schemas).

The feature class of InFactory

umlofIndoorGML

The structure of IndoorGML document is hirarchical because of the association relationship between IndoorGML complex features. Before implemting of InFactory, the hirarchical order of the elements needed to be considered when creating IndoorGML document. But InFactory accepts the data of the IndoorGML document in any order. InFactory only loads the necessary IndoorGML element data in order of the hierarchy when it makes up IndoorGML XML document.

The complex features of IndoorGML are implemented as the feature classes of 'feature' module in InFactory. Those points are for the unordered creation of IndoorGML.

  • The attribute representing the relationship is represented by the object’s Id.

  • The attribute parentId refers the id of parent element in the hirarchical structure. By this, the child elements can find the parent element.

By refering the other feature classes as the identifier, it is possible to create the elements regardless of the order. So the below situations become possible.

  • A CellSpace feature can be created without a State feature which has duality relationship with this feature.
  • A CellSpace can reach to the PrimalSpaceFeatures by parentId.
  • A CellSpace can has a list of CellSpaceBoundary features which are not created yet by List<String>partialboundedBy which holds the list of the CellSpaceBoundary features.
  • InFactory only check whethter the features which are refered as the identifier really exist when InFactory generates the IndoorGML document.

The below code is the part of CellSpace feature class in InFactory.

public class CellSpace{

  String id; // the identifier of this feature

  String parentId;     // the id of the PrimalSpaceFeatures feature
                       // which refers this feature as 'cellspaceMember'
  String name; // the name of this feature

  String description; // the description of this feature

  String geometry; // the id of the geometry feature
                   // (geometry2D or geometry 3D)

  List<String> partialboundedBy; // the list of the id
                                 // of the CellSpaceBoundary features

  String duality; // the id of the State feature
                  // who refers this feature as 'duality' association

  ExternalReference externalReference; // the object of
                                       // the ExternalReference
...

}

Clone this wiki locally