Example #1
0
        public void GetDatastreamsTest()
        {
            // act
            var response    = client.GetDatastreamCollection().Result;
            var datastreams = response.Result;

            // assert
            Assert.IsTrue(datastreams.Count > 0);
            Assert.IsTrue(datastreams.NextLink == "http://scratchpad.sensorup.com/OGCSensorThings/v1.0/Datastreams?$top=100&$skip=100");
            Assert.IsTrue(datastreams.Items.Count == 100);
        }
        /// <summary>
        /// Get Datastreams where name contains temperature including Sensor and ObservedProperty
        /// and the 5 latest observations with a result of 15 or higher
        /// select only id and name for datastreams and id, result and phenomenonTime for the observations
        /// </summary>
        public static async void GetDatastreamsOdataExample()
        {
            var odataQueryObservations = new OdataQuery
            {
                QuerySelect  = new QuerySelect(new[] { "id", "result", "phenomenonTime" }),
                QueryTop     = new QueryTop(5),
                QueryFilter  = new QueryFilter("result ge 15"),
                QueryOrderBy = new QueryOrderBy(new Dictionary <string, OrderType> {
                    { "phenomenonTime", OrderType.Descending }
                })
            };

            var odataQuery = new OdataQuery
            {
                QuerySelect = new QuerySelect(new[] { "id", "name" }),
                QueryFilter = new QueryFilter("contains(name,'temperature')"),
                QueryExpand = new QueryExpand(new[] {
                    new Expand(new[] { "Sensor" }),
                    new Expand(new[] { "ObservedProperty" }),
                    new Expand(new[] { "Observations" }, odataQueryObservations)
                })
            };

            var datastreamsResponse = await Client.GetDatastreamCollection(odataQuery);

            if (datastreamsResponse.Success)
            {
                var datastreams = datastreamsResponse.Result;
                foreach (var datastream in datastreams.Items)
                {
                    Console.WriteLine("------------------------------");
                    Console.WriteLine($"Datastream: {datastream.Name}");
                    Console.WriteLine("------------------------------");
                    Console.WriteLine($"Sensor: {datastream.Sensor.Name}");
                    Console.WriteLine($"ObservedProperty: {datastream.ObservedProperty.Name}");

                    foreach (var obs in datastream.Observations)
                    {
                        Console.WriteLine($"{obs.PhenomenonTime.Start} - {obs.Result}");
                    }

                    Console.WriteLine("");
                }
            }
        }
Example #3
0
        static void Main()
        {
            Console.WriteLine("Sample console app for SensorThings API client");
            var server = "http://scratchpad.sensorup.com/OGCSensorThings/v1.0/";

            var client = new SensorThingsClient(server);

            Console.WriteLine("Create observation for datastream 18");
            var datastream = new Datastream {
                Id = "263"
            };
            var observation = new Observation
            {
                Datastream     = datastream,
                PhenomenonTime = new DateTimeRange(DateTime.UtcNow),
                Result         = 100
            };

            // do not create observations for now
            _ = client.CreateObservation(observation).Result;

            Console.WriteLine("Retrieve all paged datastreams...");
            var response = client.GetDatastreamCollection().Result;
            var page     = response.Result;

            var pagenumber = 1;

            while (page != null)
            {
                Console.WriteLine("---------------------------------------");
                WritePage(response.Result);
                var pageResponse = page.GetNextPage().Result;
                page = pageResponse?.Result;

                pagenumber++;
            }
            Console.WriteLine("End retrieving datastreams...");
            Console.WriteLine("Number of pages: " + pagenumber);

            var datastreamResponse = client.GetDatastream("263").Result;

            datastream = datastreamResponse.Result;
            var observationsResponse = datastream.GetObservations(client).Result;
            var observations         = observationsResponse.Result;

            Console.WriteLine("Number if observations: " + observations.Count);

            Console.WriteLine("Sample with locations");
            var locationsResponse = client.GetLocationCollection().Result;
            var locations         = locationsResponse.Result;

            // Get location without using GeoJSON.NET (works only for points)
            var firstlocation = locations.Items[0];
            var feature       = (JObject)firstlocation.Feature;
            var lon           = feature.First.First.First.Value <double>();
            var lat           = feature.First.First.Last.Value <double>();

            Console.WriteLine($"Location: {lon},{lat}");

            // if using GeoJSON.NET use something like:
            // var p = JsonConvert.DeserializeObject<Point>(feature.ToString());
            //  var ipoint = (GeographicPosition)p.Coordinates;
            // Console.WriteLine("Location: " + ipoint.Longitude + ", " + ipoint.Latitude);

            Console.WriteLine("Program ends... Press a key to continue.");
            Console.ReadKey();
        }