Ad-hoc telcos

Ad-hoc Telco#1: Street photography

When:

  • WED 06 May 2020 -

Attendants:

  • Joan Masó, Steffen Fritz, Valantis, Andy, Clay, Metis

Summary:

Ad-hoc Telco#2: CitSci Interop Engineering Report

When:

  • THU 07 May 2020 - 11.00 AM CEST

Attendants:

  • Joan Masó, Lukas (Sensor Community), Sven Schade, Ester Prat

Summary:

  • The @sensorCommunity platform is focossedalso in comunities. There are 32 pins in the map of local organizations in local languages
  • We should focus on easy to do things with high impcat
  • The ideas for chagnes project analyzed succesful CitSci projects concluding that they should have infrastruture but freedom to adapt and support different communties.
  • Move away of monolitic solutions to fit all.
  • Move form the Amazon model to a more opon alibaba model.
  • WE should analize what is good from current standards and forget about unnecessary complexities: sensor descirption and time dimension are two examples
  • https://api.sensor.community/v1/
  • https://maps.sensor.community/#2/0.0/0.0

Ad-hoc Telco#3: Earth Challenge 2020 Sensor Things API implementation

When:

  • WED 13 May 2020 - 15.00 PM CEST

Attendants:

  • Joan Masó, Clay Herbaugh, Anne Bowser, Metis Meloche, Ester Prat

Discussion:

  • OGC standards for sensors:
    • Data model: Observations and measurements: This is an standards that tells you what you should capture and how the fields are organized in classes. The Sensor Things API modifies the model a bit but the essence is the same.
    • Encodings: There is an encoding for O&M in XML used in SOS and a JSON encoding used in SensorThings API.
    • Protocols:
      • Clasical OGC web services: Sensor Observing Service that provide a set of requests and recommended anwsers
      • API approach: Sensor Things API: that provide a set of resources, standard URLs and HTTP verbs to be used.

  • So far what we have seen in the Earth Challange 2020 endpoint: https://api.citizenscience.host/get/records
    • Data model:
      • DONE The observations and measurements is carefully followed
    • Encoding:
      • DONE The encoding of the response is a JSON file
      • ALERT! It is composed by some some objects and properties but some properties are actually long strings that contains a stringyficaion of a json object
        • DONE "status":"OK","message":"",...
        • ALERT! "data_str":"{\"table_name\":\"OGC_Data\" ..."
        • ALERT! Some properties of the strigyfied JSON as other stringyfied objects: \"type_schema\":\"{\\\"type\\\":\\\"record\\\",... \" and so on
        • ALERT! There ar places with "\\\\\\"" is used!!.
        • IDEA! There is no apparent need for all this (a part from allowing for a partial parsing). It is possible to clean it by search and replace. The original size of the file is 35Mb and the final pretty print version 27Mb.
      • IDEA! Responding a JSON file in not enough: The JSON responses are expected to happen in the "organization" of classes suggested by the SensorThings API.
    • Protocol:
      • IDEA! The Sensor Things API provides a set of URLs to resourcs that the client cna use to access de diferent parts of the database. So the API exposes several endpoints that requests parts of the data. Can yo implement this (at least partially?)

Minutes

  • So far Earth Challange 2020 has implemented
    • Kinetica with a semistructured data
    • ArcGIS showinf falt tables
    • Some JSON schemas describing a STA dta structure
  • Landon is preparing a "system to system API with nested arrays that will support paht paramenters and quer parameters with STA style. (Available next Friday
  • Next steps
    • All to decide on the subset of fields to present to the general public. A mapping could be preprared and eventully become a best practice for presentation
    • EC2020 will take the https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0 SCENT endpoint and will try to import it
    • All to thing more on the aggregation forms: Observe property is a challange. How to create a form to get the right information to aggregate data consistently
    • Joan and Valantis to review the JSON schemas created
    • Joan and Valantis to test the new EC2020 system to system API to see how close to the STA is.

Examples:

Current "monolithic" enconding of an observation

         {
            "datastreamName": "ec4aacd7f3abff4904affa5b5a7a1a1481",
            "datastreamDescription": "All air quality data from app user",
            "observationType": "Truth Observation",
            "unitOfMeasurement": " ",
            "unitOfMeasurementName": " ",
            "unitOfMeasurementSymbol": " ",
            "unitOfMeasurementDescription": " ",
            "unitOfCount": " ",
            "unitOfCountName": " ",
            "unitOfTruth": " ",
            "unitOfTruthName": "Presence of air quality",
            "unitOfTruthDescription": " ",
            "unitOfCategory": " ",
            "unitOfCategoryName": " ",
            "unitOfCategoryDescription": "unitOfCategoryDescription",
            "unitOfObservation": " ",
            "unitOfObservationName": " ",
            "unitOfObservationDescription": " ",
            "resultMeasurement": " ",
            "resultCountObservation": " ",
            "resultTruthObservation": "TRUE",
            "resultCategoryObservation": " ",
            "resultObservation": " ",
            "phenomenonTime": 1587233545787,
            "resultTime": 1587233545787,
            "submitTime": 1587233545787,
            "projectObservationUID": "4aacd7f3abff4904affa5b5a7a1a1481_1587233573965",
            "license": " ",
            "licenseName": "CC0",
            "licenseURI": "https:\\\\/\\\\/creativecommons.org\\\\/share-your-work\\\\/public-domain\\\\/cc0",
            "licenseAttributionSource": " ",
            "licenseAttributionAggregator": " ",
            "imageStatus": "TRUE",
            "imageResult": "Link to image URI",
            "parameters":
            {
               "userAirQualityIndex": "72",
               "userSkyRating": "5",
               "airNowObj":
               {
                  "DateObserved": "2020-04-18 ",
                  "HourObserved": 10,
                  "LocalTimeZone": "MST",
                  "ReportingArea": "Denver\\\\/Boulder",
                  "StateCode": "CO",
                  "Latitude": 39.768,
                  "Longitude": -104.873,
                  "ParameterName": "PM2.5",
                  "AQI": 72,
                  "Category":
                  {
                     "Number": 2,
                     "Name": "Moderate"
                  }
               },
               "closestAqiSensor": "5.552894690041804"
            },
            "processType": "sensor",
            "processReference": " ",
            "resultQuality":
            {
               "IsImageAdultClassified": "true",
               "IsImageRacyClassified": "true"
            },
            "validationStatus": "some",
            "validationMethod": "Photos flagged for adult or racy content",
            "validationResult": "TRUE",
            "qualityGrade": "Consumer",
            "qualityDescription": " ",
            "observedPropertyName": "Particulate matter (PM)",
            "observedPropertyDescription": "https:\\\\/\\\\/www.epa.gov\\\\/pm-pollution\\\\/particulate-matter-pm-basics",
            "observedPropertyDefinition": "Particulate matter or PM, also called particle pollution, a type of air pollution, is a mixture of solids and liquid droplets floating in the air.",
            "sensorName": "4aacd7f3abff4904affa5b5a7a1a1481",
            "sensorDescription": "Anonymous user cell phone",
            "sensorEncodingType": "JSON object",
            "sensorMetadata": " ",
            "locationName": "User location",
            "locationDescription": "Anonymous user location",
            "locationEncodingType": "GeoJSON",
            "location":
            {
               "verify_location_long": "-104.93252436341642",
               "verify_location_lat": "39.70193707060548",
               "user_location_lat": "0",
               "user_location_long": "0"
            },
            "historicLocationTime": " ",
            "thingName": "4aacd7f3abff4904affa5b5a7a1a1481",
            "thingDescription": "Anonymous user cell phone",
            "featureOfInterestName": "User location",
            "featureOfInterestDescription": " ",
            "featureOfInterestEncodingType": "GeoJSON",
            "featureOfInterestFeature":
            {
               "verify_location_long": "-104.93252436341642",
               "verify_location_lat": "39.70193707060548",
               "user_location_lat": "0",
               "user_location_long": "0"
            },
            "properties": null
         },

Common encoding for an observation (only the observation part):

                {
         "result": "19.1",
         "resultTime": "2018-11-16T11:27:01.000Z",
         "@iot.selfLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Observations(289)",
         "@iot.id": 289,
         "phenomenonTime": "2018-11-16T11:27:01.000Z",
         "FeatureOfInterest@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Observations(289)/FeatureOfInterest",
         "Datastream@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Observations(289)/Datastream",
         "resultQuality": "0"
      },

Common encoding for an thing (only the thing part with the datastream expanded):

{
   "@iot.selfLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Things(14)",
   "Datastreams":
   [
      {
         "unitOfMeasurement":
         {
            "symbol": "%",
            "name": "Soil moisture",
            "definition": ""
         },
         "@iot.selfLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(20)",
         "Sensor@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(20)/Sensor",
         "Thing@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(20)/Thing",
         "observationType": "OM_Measurement",
         "@iot.id": 20,
         "name": "This is a datastream with id 20",
         "description": "This is a datastream for user with id 14 while using sensor with id 4",
         "Observations@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(20)/Observations",
         "ObservedProperty@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(20)/ObservedProperty"
      },
      {
         "unitOfMeasurement":
         {
            "symbol": "oC",
            "name": "Air Temperature",
            "definition": ""
         },
         "@iot.selfLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(25)",
         "Sensor@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(25)/Sensor",
         "Thing@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(25)/Thing",
         "observationType": "OM_Measurement",
         "@iot.id": 25,
         "name": "This is a datastream with id 25",
         "description": "This is a datastream for user with id 14 while using sensor with id 4",
         "Observations@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(25)/Observations",
         "ObservedProperty@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(25)/ObservedProperty"
      },
      {
         "unitOfMeasurement":
         {
            "symbol": "cm",
            "name": "Water Level",
            "definition": ""
         },
         "@iot.selfLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(251)",
         "Sensor@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(251)/Sensor",
         "Thing@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(251)/Thing",
         "observationType": "OM_Measurement",
         "@iot.id": 251,
         "name": "This is a datastream with id 251",
         "description": "This is a datastream for user with id 14 while using sensor with id 110",
         "Observations@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(251)/Observations",
         "ObservedProperty@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(251)/ObservedProperty"
      },
      {
         "unitOfMeasurement":
         {
            "symbol": "",
            "name": "LC/LU",
            "definition": ""
         },
         "@iot.selfLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(252)",
         "Sensor@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(252)/Sensor",
         "Thing@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(252)/Thing",
         "observationType": "OM_Measurement",
         "@iot.id": 252,
         "name": "This is a datastream with id 252",
         "description": "This is a datastream for user with id 14 while using sensor with id 110",
         "Observations@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(252)/Observations",
         "ObservedProperty@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Datastreams(252)/ObservedProperty"
      }
   ],
   "@iot.id": 14,
   "name": "0",
   "description": "Volunteer with id 0",
   "Locations@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Things(14)/Locations",
   "HistoricalLocations@iot.navigationLink": "https://mariaisawsome.iccs.gr:8443/SensorThing/v1.0/Things(14)/HistoricalLocations"
}

Conclusions:

GoToMeeting details


https://global.gotomeeting.com/join/321982654


You can also dial in using your phone.
(For supported devices, tap a one-touch number below to join instantly.)

United States: +1 (909) 259-0010
- One-touch: tel:+19092590010,,321982654#

Access Code: 321-982-654


More phone numbers:
(For supported devices, tap a one-touch number below to join instantly.)

Australia: +61 2 8014 4937
- One-touch: tel:+61280144937,,321982654#

Austria: +43 7 2088 1406
- One-touch: tel:+43720881406,,321982654#

Belgium: +32 28 08 4296
- One-touch: tel:+3228084296,,321982654#

Denmark: +45 69 91 89 33
- One-touch: tel:+4569918933,,321982654#

Finland: +358 942 59 9121
- One-touch: tel:+358942599121,,321982654#

France: +33 182 880 462
- One-touch: tel:+33182880462,,321982654#

Germany: +49 898 7806 6465
- One-touch: tel:+4989878066465,,321982654#

Ireland: +353 14 845 982
- One-touch: tel:+35314845982,,321982654#

Italy: +39 0 247 92 12 41
- One-touch: tel:+390247921241,,321982654#

Netherlands: +31 208 080 384
- One-touch: tel:+31208080384,,321982654#

Norway: +47 21 04 29 12
- One-touch: tel:+4721042912,,321982654#

Spain: +34 911 82 9783
- One-touch: tel:+34911829783,,321982654#

Sweden: +46 852 503 473
- One-touch: tel:+46852503473,,321982654#

Switzerland: +41 225 3314 54
- One-touch: tel:+41225331454,,321982654#

United Kingdom: +44 20 3318 4724
- One-touch: tel:+442033184724,,321982654#

-- EsterPrat - 24 Apr 2020
Topic revision: r4 - 13 May 2020, JoanMaso
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