The first beta for the 52°North RESTful GeoServices SenseBox can be downloaded from the SVN. This beta is the continuation of the Google Summer of Code Project “GIS link to the Web of Things“. The GeoServices SenseBox implements the Feature Service of the OGC GeoServices REST API draft in version 0.0.4 on an “open-hardware” microcontroller plattform.
The platform is capable of reading sensors and storing their measurements, as well as providing a simple web server. A RESTful interface provides easy access to the measurements and delivers them as features. When a feature or layer is queried, the platform responds with a JSON object containing that feature or layer.
Features
- Provides OGC Feature Service
- Each Sensor is represented as a Feature Layer
- RESTful as defined in OGC candidate standard
- JSON-Output
- Measurements are stored on the platform
- Each Mesurement can be identified in space and time due to GPS
The concept is illustrated in the figure below.
The microcontroller platform is based upon the open-source electronics prototyping platform Arduino. As the code is pretty large, at least an Arduino Mega2560 is required to run it. To provide internet access and storage capabilities, the platform has to be equipped with an Ethernet chipset and an SD-Card reader. The GeoServices SenseBox depends on a GPS, to provide a source for time and location information. The protype used for demonstration uses a combined temperature and humidity sensor.
Examples:
- Query SenseBox Layers:
http://sensebox.url/geoservices/
Reponse:
{ "serviceDescription": "RESTful GeoServices SenseBox", "layers": [ { "id": "1", "name": "A Test Layer" } ] }
- Query SenseBox Feature Layer:
http://sensebox.url/geoservices/1/
Reponse:
{ "id": "1", "name": "A Test Layer", "type": "Feature Layer", "displayField": "value", "description": "", "copyrightText": "", "capabilities": "Query", "geometryType": "GeometryPoint", "minScale": 0, "maxScale": 0, "spatialReference": { "wkid": 4326 }, "objectIdField": "objectid", "globalIdField": "", "fields": [ { "name": "objectid", "type": "FieldTypeOID", "alias": "Object ID" }, { "name": "Value", "type": "FieldTypeString", "alias": "" }, { "name": "Time", "type": "FieldTypeDate", "alias": "Date and Time" } ] }
- Query the Features of a Feature Layer:
http://sensebox.url/geoservices/1/query
Response:
{ "objectIdFieldName": "objectid", "globalIdFieldName": "", "geometryType": "GeometryPoint", "spatialReference": { "wkid": 4326 }, "fields": [ { "name": "objectid", "type": "FieldTypeOID", "alias": "Object ID" }, { "name": "Value", "type": "FieldTypeString", "alias": "" }, { "name": "Time", "type": "FieldTypeDate", "alias": "Date and Time" } ], "features": [ { "geometry": { "point": { "x": 7.652118, "y": 51.934969 }, "spatialReference": { "wkid": 4326 } }, "attributes": { "ObjectID": "20000101000003", "Time": "2000-01-01T00:00:03Z", "Value": "5" } }, { "geometry": { "point": { "x": 7.652118, "y": 51.934969 }, "spatialReference": { "wkid": 4326 } }, "attributes": { "ObjectID": "20000101000008", "Time": "2000-01-01T00:00:08Z", "Value": "5" } }, { "geometry": { "point": { "x": 7.652118, "y": 51.934969 }, "spatialReference": { "wkid": 4326 } }, "attributes": { "ObjectID": "20000101000018", "Time": "2000-01-01T00:00:18Z", "Value": "5" } } ] }
A WiKi-Page exists for this topic. WiKi
Leave a Reply