A new module for storing and publishing VGI was implemented to SensLog. Common type of VGI are Points of Interest (POI). The concept of POI is very similar to general observation concept. Implemented scenario suppose that collected POI is spatially and temporally localized observation with several attributes and connected multimedia files. POI is classified into one of predefined categories and can be assigned to some dataset.
The SensLog data model was extended. New tables are shown on Fig. 1 below.
Added tables are following:
- observations_vgi – table storing POI with all attributes
- observations_vgi_media – table storing media file connected to POI
- observations_vgi_category – table storing categories of POI, master table of categories
- observations_vgi_category_hilucs – inherited table with Land Use categories
- vgi_datasets – table storing metadata of dataset
Each POI has information about the device and the user that had created it. Categories of POIs are stored in tables inherited from the master table observations_vgi_category. This way allows storing of different kinds of hierarchical categories. Expandable schema of POI attributes is used. Only mandatory attributes are stored in separate columns, like timestamp, geometry, category, dataset etc. Optional attributes are stored in JSON format in separate column. Geometry of POIs and device metadata are stored in core part of SensLog data model.
Implemented service are described below. More services and functions will be added during next steps.
VGI Service
VGI service alllows to insert new POI and update stored POIs, to select POIs by several filters and to select categories and datasets.
InsertVgiObservation
URL |
rest/vgi/insobs |
Method |
Functionality |
Format |
POST |
Provides insertion or update of POI into database. Returns id of inserted or updated POI. |
plain-text |
Parameter |
Format |
Role |
timestamp |
Textual value |
Timestamp when was POI observed (ISO 8601 compatible), mandatory |
category |
Numerical value |
Identifier of category, mandatory |
description |
Textual value |
Free text description of POI, optional |
attributes |
Textual value |
JSON formated additional attributes, optional |
dataset |
Numerical value |
Identifier of dataset, optional |
unitId |
Numerical value |
Identifier of device producing POI, mandatory |
lon |
Numerical value |
Longitude of POI, mandatory |
lat |
Numerical value |
Latitude of POI, mandatory |
media |
File |
Connected media file, optional |
obs_vgi_id |
Numerical value |
ID of POI, if present method updates existing POI, optional |
ObservationService
Select observations
URL |
rest/vgi/observations/select |
Method |
Functionality |
Format |
GET |
Provides stored POIs in JSON or GeoJSON format by selected filters. |
JSON, GeoJSON |
Parameter |
Format |
Role |
user_name |
Textual value |
Name of user that collects POIs, only own user_name or user_name from same group allowed, mandatory |
format |
Textual value |
Name of output format (geojson, json allowed), optional |
fromTime |
Textual value |
Begin timestamp of frame, optional |
toTime |
Textual value |
End timestamp of frame, optional |
Media service
Select media
URL |
rest/vgi/media/select |
Method |
Functionality |
Format |
GET |
Provides stored POI media |
depends on stored media format |
Parameter |
Format |
Role |
obs_id |
Numerical value |
ID of POI |
Category service
Select category
URL |
rest/vgi/category/select |
Method |
Functionality |
Format |
GET |
Provides stored categories of POIS |
JSON |
Dataset service
Select dataset
URL |
rest/vgi/dataset/select |
Method |
Functionality |
Format |
GET |
Provides stored datasets of POIs |
JSON |