Speed issue in GetObservation interpretation

Hi,

I'm trying to visualize 8607 points of a four campaigns of the Meet Mee Mechelen in a map browser. I'm indexing the visualization by an attribute of the observations so I need to get the full description for each observation. to do that, I create this request:

http://www.ogc3.uab.cat/cgi-bin/CitSci/MiraMon.cgi??VERSION=2.0.0&SERVICE=SOS&REQUEST=GetObservation&featureOfInterest=http://www.opengis.uab.cat/meet-mee-mechelen/featureOfInterest/&SRSNAME=EPSG:4326&BBOX=50.84927863623046,4.0856201982421965,51.20427436376952,4.8340638017578215

The result is a 35Mbyte long file due to the lengthy description of each observation: this is a simple of the first observation response
    <om:OM_Observation gml:id="meet-mee-mechelen_1_13">
      <om:type xlink:href="http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_ComplexObservation"/>
      <om:phenomenonTime>
        <gml:TimeInstant gml:id="phenomenonTime_meet-mee-mechelen_1_1">
          <gml:timePosition>2017-11-19 17:20:00+01</gml:timePosition>
        </gml:TimeInstant>
      </om:phenomenonTime>
      <om:resultTime xlink:href="#phenomenonTime_meet-mee-mechelen_1_1"/>
      <om:procedure xlink:href="http://www.opengis.uab.cat/meet-mee-mechelen/procedure/5"/>
      <om:observedProperty xlink:href="http://www.opengis.uab.cat/meet-mee-mechelen/observedProperty"/>
      <om:featureOfInterest xlink:href="http://www.opengis.uab.cat/meet-mee-mechelen/featureOfInterest/1"/>
      <om:result xsi:type="swe:DataRecordPropertyType">
        <swe:DataRecord>
          <swe:field name="CAMPAIGN">
            <swe:Text definition="http://www.opengis.uab.cat/meet-mee-mechelen/field/">
              <swe:value>Oct-Nov2017</swe:value>
            </swe:Text>
          </swe:field>
          <swe:field name="time_first">
            <swe:Text definition="http://www.opengis.uab.cat/meet-mee-mechelen/field/">
              <swe:value>2017-11-06 08:00:10+01</swe:value>
            </swe:Text>
          </swe:field>
          <swe:field name="bc_aggr">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/bc_aggr">
              <swe:uom code="?"/>
              <swe:value> 3155</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="bc_aggr_mi">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/bc_aggr_mi">
              <swe:uom code="?"/>
              <swe:value>   80</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="bc_aggr_ma">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/bc_aggr_ma">
              <swe:uom code="?"/>
              <swe:value>16413</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="bc_aggr_st">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/bc_aggr_st">
              <swe:uom code="?"/>
              <swe:value> 3398</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="number_of_">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/number_of_">
              <swe:uom code="?"/>
              <swe:value>25</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="number_o_1">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/number_o_1">
              <swe:uom code="?"/>
              <swe:value>13</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="mean_numbe">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/mean_numbe">
              <swe:uom code="?"/>
              <swe:value> 8</swe:value>
            </swe:Quantity>
          </swe:field>
          <swe:field name="uncertaint">
            <swe:Quantity definition="http://www.opengis.uab.cat/meet-mee-mechelen/variable/uncertaint">
              <swe:uom code="?"/>
              <swe:value>0.50</swe:value>
            </swe:Quantity>
          </swe:field>
        </swe:DataRecord>
      </om:result>
    </om:OM_Observation>
  </sos:observationData>

My surprise is that requesting and interpreting this "file" takes an incredibly long amount of time. We have analyzed and this is our preliiminary conclusion:
  • 2190 ms the creating the file and the client receives it
  • 15000ms are spend by the AJAX library to transform it into and XML DOM
  • 200000ms are invested by the JavaScript code to explore he DOM and create a JavaScript data structure that is identical to a GeoJSON file.

We are know trying to optimize the code to make it faster but I doubt we are able to make it much more efficient.

This lives us with the following alternatives:
  • Force GetObservation include a JSON representation of the properties in the <om:result >
  • Force a full JSON encoding for the GetObservation. I have not found a parameter in the KVP syntax to do so
  • Move to WFS and GeoJSON response.
  • Move processing to server side (Andy Cobley's suggestion)

What I should do?

-- JoanMaso - 21 Feb 2019
Topic revision: r2 - 21 Feb 2019, AndyCobley
This site is powered by FoswikiThe information you supply is used for OGC purposes only. We will never pass your contact details to any third party without your prior consent.
If you enter content here you are agreeing to the OGC privacy policy.

Copyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding OGC Public Wiki? Send feedback