SpatialDefs.xid.xml 5.43 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 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.0.0/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="Producer" value="4"></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.</comment>
      <elem name="latmin" type="Tensor.int32" multiplicity="1" >
        <comment>Minimum value of the latitude.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="latmax" type="Tensor.int32" multiplicity="1" >
        <comment>Maximum value of the latitude.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="lonmin" type="Tensor.int32" multiplicity="1" >
        <comment>Minimum value of the longitude.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="lonmax" type="Tensor.int32" multiplicity="1" >
        <comment>Maximum value of the longitude.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>

      <elem name="altmin" type="Tensor.int32" multiplicity="1" >
        <comment>Minimum value of the altitude.</comment>
        <tag name="unit" value="microdegrees"/>
      </elem>
      <elem name="altmax" type="Tensor.int32" multiplicity="1" >
        <comment>Maximum value of the altitude.</comment>
        <tag name="unit" value="microdegrees"/>
      </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>

    <!-- 
    *************************************
    * 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" ord="1">
        <comment>Element indicates the type of the Object</comment>
      </elem>

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

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

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

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

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

      <elem name="data" type="Tensor.json" multiplicity="0..1" ord="7">
        <comment>Optional JSON data associated with this object.</comment>
      </elem>
    </struct>

  </namespace>
</specification>