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(""); } } }
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(); }