SpatialDefs.xid.xml 6.6 KB
<?xml version="1.0" encoding="UTF-8" ?>

<specification xmlns="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
               xmlns:xid="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xsi:schemaLocation="https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd https://xid.location.studio/schema/V1.0.0/XtensibleInterfaceDefinition.xsd"
               identity="SpatialDefs.xid.xml">
  <title>GEO Spatial Definitions</title>
  <comment>Definition defines common geo-spatial types..</comment>

  <!-- Include all known definitions -->
  <import ref="https://xid.location.studio/Tensor/V1.1/Definitions.xid.xml" local="Definitions.xid.xml" />


  <namespace name="GeoSpatial">
    <using namespace="Tensor"/>

    <!-- 
    *************************************
    * Enumerations 
    *************************************
    -->
    <enum name="ReferenceFrame" type="Tensor.int8" default="WGS84">
      <comment>Enumerations defines the supported coordinate reference frames</comment>
      <literal name="undefined" value="0"></literal>
      <literal name="WGS84" value="1"></literal>
      <literal name="ENU" value="2"></literal>
      <literal name="NED" value="3"></literal>
      <literal name="LocalXYZ" value="3" />
    </enum>

    <enum name="ObjectType" type="Tensor.int8" default="Object">
      <comment>Enumeration defines the supported Object types.</comment>
      <literal name="Object" value="0"></literal>
      <literal name="GeoObject" value="1"></literal>
      <literal name="Location" value="2"></literal>
      <literal name="EventInfo" value="3"></literal>
      <literal name="ProducerInfo" value="4"></literal>
      <literal name="MonitorSet" value="5"></literal>
      <literal name="IlpTestDataSet" value="6"></literal>
      <literal name="IlpTestSpecification" value="7"></literal>
      <literal name="IlpTestResults" value="8"></literal>
      <literal name="IlpTestResultSet" value="9"></literal>
    </enum>

    <!-- 
    *************************************
    * BoundingBox Definition. 
    *************************************
    -->
    <struct name="BoundingBox" pack="true">

      <comment>Defines a bounding box in WGS84 reference frame.</comment>
      <comment>
          Units for latitude and longitude are in units of micro degrees (1e-6 degrees) providing for about 11 cm resolution near the equator. Altitude units are in millimeters.
      </comment>
      <elem name="latmin" type="Tensor.int32" multiplicity="1" >
        <comment>Minimum value of the latitude. Valid range is -90,000,000 &#8804; lat &#8804; 90,000,000. </comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="latmax" type="Tensor.int32" multiplicity="1" >
        <comment>Maximum value of the latitude. Valid range is -90,000,000 &#8804; lat &#8804; 90,000,000.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="lonmin" type="Tensor.int32" multiplicity="1" >
        <comment>Minimum value of the longitude. Valid range is -180,000,000 &#8804; lat &#8804; 180,000,000.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="lonmax" type="Tensor.int32" multiplicity="1" >
        <comment>Maximum value of the longitude. Valid range is -180,000,000 &#8804; lat &#8804; 180,000,000.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>

      <elem name="altmin" type="Tensor.int32" multiplicity="1" >
        <comment>Minimum value of the altitude.  Valid range is +- 1,000,000,000 cm.</comment>
        <tag name="unit" value="cm"/>
      </elem>
      <elem name="altmax" type="Tensor.int32" multiplicity="1" >
        <comment>Maximum value of the altitude. Valid range is +- 1,000,000,000 cm.</comment>
        <tag name="unit" value="cm"/>
      </elem>

    </struct>

    <!-- 
    *************************************
    * PositionECEF Definition. 
    *************************************
    -->
    <struct name="PositionECEF" pack="true">
      <comment>A 3D, Earth-centered, Earth-Fixed position in rotational coordinates: latitude (deg.), longitude (deg.), altitude(m)</comment>
      <elem name="lat" type="Tensor.float64" multiplicity="1" >
        <comment>Latitude of the position in degrees.</comment>
      </elem>
      <elem name="lon" type="Tensor.float64" multiplicity="1" >
        <comment>Longitude of the position in degrees.</comment>
      </elem>
      <elem name="alt" type="Tensor.float64" multiplicity="1" >
        <comment>Altitude of the position in meters.</comment>
      </elem>
    </struct>


    <!-- 
    *************************************
    * XYZVector Definition. 
    *************************************
    -->
    <array name="XYZVector"      type="float64"        size="3" >
       <comment>
         Defines 3D Cartesian Vector data array.
       </comment>
    </array>

    <!-- 
    *************************************
    * Object Definition. 
    *************************************
    -->
    <struct name="Object">
      <comment>
        Defines the base Object comprising id, optional name, description, and user data (JSON).
      </comment>
      <elem name="typeObject" type="ObjectType" multiplicity="1" rttd="true">
        <comment>Element indicates the type of the Object</comment>
      </elem>

      <elem name="uuid" type="Tensor.UUID" multiplicity="1">
        <comment>Unique identifier for this object.</comment>
      </elem>

      <elem name="uriExternal" type="Tensor.uri" multiplicity="0..1">
        <comment>Optional external identifier for this object.</comment>
      </elem>

      <elem name="uriClassifier" type="Tensor.uri" multiplicity="0..1">
        <comment>Optional external classifier identifier for this object.</comment>
      </elem>

      <elem name="name" type="Tensor.string" multiplicity="0..1">
        <comment>Optional user friendly name of the GeoObject.</comment>
      </elem>

      <elem name="description" type="Tensor.string" multiplicity="0..1">
        <comment>Optional user friendly description of the GeoObject.</comment>
      </elem>

      <elem name="miscdata" type="Tensor.json" multiplicity="0..1">
        <comment>Optional miscellaneous JSON data associated with this object. This field is
        provided to add additional non-typed data to the object, which can be application specific.
        Should multiple applications share this data, then likely an updated XID definition would be more
        appropriate.
        </comment>
      </elem>
    </struct>

  </namespace>
</specification>