SOS Server structural changes
Kralidis,Tom [Burlington]
Tom.Kralidis at EC.GC.CA
Wed Oct 18 13:30:30 PDT 2006
Any responses on this one (see below)?
> -----Original Message-----
> From: UMN MapServer Users List
> [mailto:MAPSERVER-USERS at LISTS.UMN.EDU] On Behalf Of
> Kralidis,Tom [Burlington]
> Sent: 15 October, 2006 7:18 PM
> To: MAPSERVER-USERS at LISTS.UMN.EDU
> Subject: [UMN_MAPSERVER-USERS] SOS Server structural changes
>
>
> Hi,
>
> The following email is a result of meetings between Assefa
> and myself last week (Assefa: please add anything I may have missed).
>
> As of April 2006, OGC:SOS (version 0.0.31) server support has
> been implemented in MapServer, funded by Environment Canada.
>
> One of our project's underlying DB is setup such that sensor
> data is structured as 2 tables (one for the observations and
> measurements, and one for sensor metadata).
>
> When we implemented OGC:SOS, we structured the mapfile SOS
> settings such that one OGC:SOS procedure (i.e. a station) is
> analogous to one LAYER object. Procedure IDs are needed to
> advertise in OGC:SOS GetCapabilities, as well as
> GetObservation Filter statements when filtering by procedure
> ID. This is functional and works as expected.
>
> We have ran into scenarios where we may have networks of
> hundreds of stations, and hence LAYER objects. This has resulted in:
>
> - huge mapfiles: we have a mapfile with 310 LAYER objects and
> 1MB in size, which slows down processing at runtime
> - custom compile of MapServer required (MAXLAYERS is
> defaulted at 50 in map.h), which can be cumbersome in Win32
> environments
>
> Assefa and I discussed these issues last week and thought
> that an alternate approach would be more efficient.
>
> Proposal
> --------
>
> - have one LAYER object, with pointer metadata to a column
> which houses the procedure, i.e.:
>
> LAYER
> ...
> METADATA
> ...
> "sos_procedure_item" "station_id"
> "sos_sensorml_format"
> "http://host/getSensorML?station=%sensorid%" # e.g. 1
> #"sos_sensorml_format" "http://host/stations/%sensorid%.xml
> END
> END
>
> Here's how the operations would be affected:
>
> GetCapabilities: when MapServer processes a GetCapabilities,
> it would generate a distinct list of procedures from
> sos_procedure_item and output them in the Capabilities XML.
>
> DescribeSensor: MapServer would do an HTTP redirect to
> sos_sensorml_format, passing sensorid from the request
> (sensorid is a required keyword of DescribeSensor).
>
> GetObservation: when MapServer processes a GetObservation
> request filtered by a procedure, it would pass this filter to
> query the table/dbf/whatever with sos_procedure_item = procedureid.
>
> This way mapfiles would be much easier to deal with and
> smaller in byte size.
>
> This would affect the way MapServer OGC:SOS works currently
> in terms of existing implementations. With this implemented,
> would we support both ways of dealing with OGC:SOS, or
> eliminate the initial code approach?
> How many folks are affected by doing the latter (I haven't
> seen much use of MapServer OGC:SOS so far on mapserver-users)?
>
> I would be interested in hearing what folks think about this
> before moving ahead any further. Keep in mind this is based
> on my organization's requirements and our underlying sensor
> data, so ideas and thoughts are welcome!
>
> ..Tom
>
More information about the MapServer-users
mailing list