Procedure Descriptions


Introduction

Since version 4.0, the SensorObservationService contains a feature to generate a generic but valid and usable procedure description and to enrich procedure descriptions with information used for sensor discovery.

Back to main SOS page

Description Generation

The generic generation happens if a description is not available in the webapp folder or database for the requested procedure. Spatial and non-spatial procedures are supported and result in different SensorML documents (sml:System for spatial and sml:Process for non-spatial procedures).

For using this feature with an legacy database with non-spatial features, you only have to check the according settings in the administrator procedure description tab (e.g. YOUR_SOS_WEBAPP/admin/settings#procedure_description). Each setting should be clearly describe there (HELP If some settings are unclear to you, get in touch with the community and help us to improve the documentation!). If using with spatial procedures, you need to activate the according entries in the procedure mapping files located in YOUR_SOS_WEBAPP/WEB-INF/classes/mapping/core/Procedure.hbm.xml .
   25	<!-- optional properties, used for automatic sensor description creation if available -->
   26	<!-- remove the comments around the property "geom" if the procedures have a geometry column -->
   27	<!--
   28	<property name="geom" type="org.hibernate.spatial.GeometryType">
   29	    <column name="geom" unique="true" />
   30	</property>
   31	-->
   32	<!-- supports types bigDecimal and string -->
   33	<!-- remove the comments around the next properties as need (leave altitude if only 2d coordinates are required) -->
   34	<!--  
   35	<property name="longitude" type="bigDecimal">
   36	    <column name="longitude" unique="true" />
   37	</property>
   38	<property name="latitude" type="bigDecimal">
   39	    <column name="latitude" unique="true" />
   40	</property>
   41	<property name="srid" type="integer">
   42	    <column name="srid" unique="true" />
   43	</property> 
   44	-->
   45	<!--
   46	<property name="altitude" type="bigDecimal">
   47	    <column name="altitude" unique="true" />
   48	</property>
   49	-->

Now, we are supporting additional columns in the procedure table with three different scenarios:
  • A: one additional column with type org.hibernate.spatial.GeometryType
  • B: three additional column for 2D coordinates (the coordinates as bigDecimal and the SRS id as integer): lat, lon, srid
  • C: four additional columns for 3D coordinates (the coordinates as bigDecimal and the SRS id as integer: lat, lon, alt, srid
HELP: The names of the columns are not fixed but must match the settings in the mapping file.

Back to main SOS page

Enrichment of Procedure Descriptions

Since version 4.0, three different enrichment options are available:
  • With offering information
  • With feature information
  • With discovery information
All there options can be combined with each other. They are applied to all typs of procedure descriptions (e.g. generated, file based, or form database). The idea behind these feature is to support clients with better procedure descriptions and support better procedure discovery.

When enabling the With offering information option, the services adds an sml:capabilities element with all offerings, the procedure is related to. For each offering, an additional swe:field will be added to the swe:SimpleDataRecord.
    1	<sml:capabilities name="offerings">
    2	    <swe:SimpleDataRecord>
    3	        <swe:field name="Offering 1 name">
    4	            <swe:Text definition="http://www.opengis.net/def/offering/identifier">
    5	                <swe:value>http://www.52north.org/test/offering/1</swe:value>
    6	            </swe:Text>
    7	        </swe:field>
    8	    </swe:SimpleDataRecord>
    9	</sml:capabilities>

When enabling the With feature information option, the service adds an sml:capabilities element with all features, the procedure has performed observations on.
    1	<sml:capabilities name="featuresOfInterest">
    2	    <swe:SimpleDataRecord>
    3	        <swe:field name="featureOfInterestID">
    4	            <swe:Text definition="http://www.opengis.net/def/featureOfInterest/identifier">
    5	                <swe:value>http://www.52north.org/test/featureOfInterest/1</swe:value>
    6	            </swe:Text>
    7	        </swe:field>
    8	    </swe:SimpleDataRecord>
    9	</sml:capabilities>

When enabling the With discovery option, the service adds several elements like keywords, additional identifications and classifications, an optional procedure contact and the observed spatial bounding box for the procedure (not only of one offering but of all). The type of information and its encoding is implemented according to OGC#09-033 'SensorML Profile for Discovery' (HELP: Now, it is an engineering report.).
    1	<sml:keywords>
    2	    <sml:KeywordList>
    3	        <sml:keyword>http://www.52north.org/test/offering/1</sml:keyword>
    4	        <sml:keyword>http://www.52north.org/test/featureOfInterest/1</sml:keyword>
    5	        <sml:keyword>SHORT_NAME_EXAMPLE</sml:keyword>
    6	        <sml:keyword>LONG_NAME_EXAMPLE</sml:keyword>
    7	        <sml:keyword>Optional: PROCEDURE_TYPE</sml:keyword>
    8	        <sml:keyword>Optional: weather</sml:keyword>
    9	        <sml:keyword>http://www.52north.org/test/procedure/1</sml:keyword>
   10	        <sml:keyword>http://www.52north.org/test/observableProperty/1</sml:keyword>
   11	    </sml:KeywordList>
   12	</sml:keywords>
   13	<sml:identification>
   14	    <sml:IdentifierList>
   15	        [...]
   16	        <sml:identifier name="longName">
   17	            <sml:Term definition="urn:ogc:def:identifier:OGC:1.0:longName">
   18	                <sml:value>LONG_NAME_EXAMPLE</sml:value>
   19	            </sml:Term>
   20	        </sml:identifier>
   21	        <sml:identifier name="shortName">
   22	            <sml:Term definition="urn:ogc:def:identifier:OGC:1.0:shortName">
   23	                <sml:value>SHORT_NAME_EXAMPLE</sml:value>
   24	            </sml:Term>
   25	        </sml:identifier>
   26	    </sml:IdentifierList>
   27	</sml:identification>
   28	<sml:classification>
   29	    <sml:ClassifierList>
   30	        <sml:classifier name="intendedApplication">
   31	            <sml:Term definition="urn:ogc:def:classifier:OGC:1.0:application">
   32	                <sml:value>weather</sml:value>
   33	            </sml:Term>
   34	        </sml:classifier>
   35	        <sml:classifier name="procedureType">
   36	            <sml:Term definition="urn:ogc:def:classifier:OGC:1.0:procedureType">
   37	                <sml:value>PROCEDURE_TYPE</sml:value>
   38	            </sml:Term>
   39	        </sml:classifier>
   40	    </sml:ClassifierList>
   41	</sml:classification>
   42	[...]
   43	<sml:capabilities name="observedBBOX">
   44	    <swe:DataRecord>
   45	        <swe:field name="observedBBOX">
   46	            <swe:Envelope referenceFrame="4326">
   47	                <swe:lowerCorner>
   48	                    <swe:Vector>
   49	                        <swe:coordinate name="easting">
   50	                            <swe:Quantity axisID="x">
   51	                                <swe:value>51.883906</swe:value>
   52	                                <swe:uom code="degree"/>
   53	                            </swe:Quantity>
   54	                        </swe:coordinate>
   55	                        <swe:coordinate name="northing">
   56	                            <swe:Quantity axisID="y">
   57	                                <swe:value>7.727958</swe:value>
   58	                                <swe:uom code="degree"/>
   59	                            </swe:Quantity>
   60	                        </swe:coordinate>
   61	                    </swe:Vector>
   62	                </swe:lowerCorner>
   63	                <swe:upperCorner>
   64	                    <swe:Vector>
   65	                        <swe:coordinate name="easting">
   66	                            <swe:Quantity>
   67	                                <swe:value>51.883906</swe:value>
   68	                                <swe:uom code="degree"/>
   69	                            </swe:Quantity>
   70	                        </swe:coordinate>
   71	                        <swe:coordinate name="northing">
   72	                            <swe:Quantity axisID="y">
   73	                                <swe:value>7.727958</swe:value>
   74	                                <swe:uom code="degree"/>
   75	                            </swe:Quantity>
   76	                        </swe:coordinate>
   77	                    </swe:Vector>
   78	                </swe:upperCorner>
   79	            </swe:Envelope>
   80	        </swe:field>
   81	    </swe:DataRecord>
   82	</sml:capabilities>
   83	[...]
   84	<sml:contact>
   85	    <sml:ContactList>
   86	        <sml:member>
   87	            <sml:ResponsibleParty>
   88	                <sml:individualName>TBA</sml:individualName>
   89	                <sml:organizationName>52North</sml:organizationName>
   90	                <sml:positionName>TBA</sml:positionName>
   91	                <sml:contactInfo>
   92	                    <sml:phone>
   93	                        <sml:voice>+49(0)251/396 371-0</sml:voice>
   94	                    </sml:phone>
   95	                    <sml:address>
   96	                        <sml:deliveryPoint>Martin-Luther-King-Weg 24</sml:deliveryPoint>
   97	                        <sml:city>Münster</sml:city>
   98	                        <sml:postalCode>48155</sml:postalCode>
   99	                        <sml:country>Germany</sml:country>
  100	                    </sml:address>
  101	                    <sml:onlineResource xlink:href="http://52north.org/swe"/>
  102	                </sml:contactInfo>
  103	            </sml:ResponsibleParty>
  104	        </sml:member>
  105	    </sml:ContactList>
  106	</sml:contact>

The contact information is generated from the service provider information and can be en- or disabled. In addition, the classification element in general and the both entries intendedApplication and procedureType can be en- or disabled.

Back to main SOS page
Topic revision: r1 - 15 Jul 2015, CarstenHollmann
Legal Notice | Privacy Statement


This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Wiki? Send feedback