Odysseus has built-in features in the spatial package with which spatio-temporal and especially moving objects data can be processed. Here we describe how to use these features and give a few example scenarios.
Starting Odysseus Spatial
Accessing Example Data
For this example, we use the data from the San Francisco bay, which is provided by ais.exploratorium.edu (you can open this in a browser and see the raw AIS data). You use this query to access the data. Just create a new Odysseus Script file within Odysseus Studio and run this query (with the "green arrow down"-button). When you right click on the query in the "Queries" view and choose "Show Stream Elements" and then "List ...", you can see the key-value objects with readable AIS data.
#PARSER PQL #RUNQUERY /// Access the data from San Francisco input = ACCESS({ source='SanFranciscoAIS', wrapper='GenericPush', transport='TCPClient', protocol='NMEA', datahandler='keyValueObject', options=[ ['host', 'ais.exploratorium.edu'], ['port', '80'] ] } )
A message you receive could look similar to the following:
{"rateOfTurn":0,"navigationStatus":"UnderwayUsingEngine","maneuverIndicator":"NotAvailable","trueHeading":274,"positionAccurate":false,"latitude":37.56334666666667,"courseOverGround":272.3,"speedOverGround":13.4,"sourceMmsi":367134000,"longitude":-123.107605,"second":18,"raimFlag":false};1488537437230|oo
Filling a Spatio-Temporal Index
Moving Object Index
Running a Range-Query on the Index
Example code
Future Work
The work on this topic is not finished. Here list of things that we want to add in future releases.
- Providing a web-based map view to visualize the queries, e.g. with Spring Boot + Leaflet (or OpenLayers). Can be a bit inspired by the demonstration visualization by Tile38 (e.g. http://tile38.com/ or https://roam.sh/)
- Adding interpolation functionality to calculate in-between-measurements locations and near-future locations