{"id":22944095,"url":"https://github.com/52north/sensorweb-server-helgoland","last_synced_at":"2025-08-12T22:31:06.515Z","repository":{"id":10402284,"uuid":"12555873","full_name":"52North/sensorweb-server-helgoland","owner":"52North","description":"Thin Web binding API to access series data.","archived":false,"fork":false,"pushed_at":"2023-04-07T05:00:46.000Z","size":15665,"stargazers_count":22,"open_issues_count":47,"forks_count":22,"subscribers_count":10,"default_branch":"develop","last_synced_at":"2024-05-01T23:00:56.380Z","etag":null,"topics":["52north","java","observation","rest-api","sensor","sensorweb","series-data","spi"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/52North.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2013-09-03T05:36:08.000Z","updated_at":"2024-03-31T14:14:01.000Z","dependencies_parsed_at":"2023-02-17T01:50:27.475Z","dependency_job_id":"6a6d1b41-242d-4c53-bcbd-7daca4215f62","html_url":"https://github.com/52North/sensorweb-server-helgoland","commit_stats":{"total_commits":2569,"total_committers":15,"mean_commits":"171.26666666666668","dds":0.576099649669132,"last_synced_commit":"5735eed25c72bf6a537a2f87c1cc492bb65cf0c0"},"previous_names":["52north/series-rest-api"],"tags_count":90,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/52North%2Fsensorweb-server-helgoland","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/52North%2Fsensorweb-server-helgoland/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/52North%2Fsensorweb-server-helgoland/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/52North%2Fsensorweb-server-helgoland/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/52North","download_url":"https://codeload.github.com/52North/sensorweb-server-helgoland/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229711045,"owners_count":18112066,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["52north","java","observation","rest-api","sensor","sensorweb","series-data","spi"],"created_at":"2024-12-14T14:16:08.613Z","updated_at":"2025-08-12T22:31:06.459Z","avatar_url":"https://github.com/52North.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 52n Sensor Web Server Helgoland \n[![Build Status](https://travis-ci.org/52North/sensorweb-server-helgoland.svg)](https://travis-ci.org/52North/sensorweb-server-helgoland) [![Java CI](https://github.com/52North/sensorweb-server-helgoland/actions/workflows/maven.yml/badge.svg)](https://github.com/52North/sensorweb-server-helgoland/actions/workflows/maven.yml) [![Maven Central](https://img.shields.io/maven-central/v/org.n52.sensorweb-server.helgoland/helgoland-parent.svg)](https://search.maven.org/search?q=g:org.n52.sensorweb-server.helgoland) [![Total alerts](https://img.shields.io/lgtm/alerts/g/52North/sensorweb-server-helgoland.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/52North/sensorweb-server-helgoland/alerts/) [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/52North/sensorweb-server-helgoland.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/52North/sensorweb-server-helgoland/context:javascript) [![Language grade: Java](https://img.shields.io/lgtm/grade/java/g/52North/sensorweb-server-helgoland.svg?logo=lgtm\u0026logoWidth=18)](https://lgtm.com/projects/g/52North/sensorweb-server-helgoland/context:java)\n\n\u003cimg style=\"width: 60%; height: 60%\" alt=\"series-rest-api architecture overview\" src=\"https://52north.github.io/sensorweb-server-helgoland/develop/assets/images/big-picture.png\"\u003e\n\n## Description\n\n**Thin Web binding API to access timeseries data.**\n\n_The Sensor Web Server Helgoland is a REST API provides an access layer to sensor data via RESTful Web binding with different output formats like json, pdf or png. It provides a well defined Sevice Provider Interface (SPI) which can be implemented by arbitrary backend services to make data available via the API_\n\nThe Sensor Web Server Helgoland provides a thin access layer to sensor and observation data via RESTful Web binding. In addition, it offers several IO functionalities e.g. \n  * prerendering of series data, \n  * generalization, \n  * overlaying of data from multiple series\n  * conversion of raw data to other formats like pdf and png\n\nOutput formats for *stationary*, *mobile*, *insitu* and *remote* sensors are available, each filterable by metadata parameters. This enables clients to access the data via different approaches, e.g. to filter all series by phenomena first or by a special procedure.\n\nNext to the Web API, a Service Provider Interface (SPI) defines the underlying interface for data providing backends. With this, the API is flexible enough to be put ontop of arbitrary data stores. Its modular design enables a seamless integration into existing Web applications.\n\nThe following main frameworks are used to provide this API:\n\n- [Spring MVC](https://spring.org/) \n- [JFreeChart](http://www.jfree.org/jfreechart/) \n\n\n### Existing SPI implementations:\n\n- [Sensor Web Server Adapters](https://github.com/52North/sensorweb-server-helgoland-adapters): Allows to aggregate multiple OGC SOS instances under one API\n- [Direct database access](https://github.com/52North/sensorweb-server-dao-impl): Allows to define Hibernate mappings to serve data directly from a database\n- [Fotoquest database access](https://github.com/52North/fotoquest-series-api): tbd\n- [DWD Weather Alerts](https://github.com/52North/dwd-series-api): tbd\n\n## References\n* The [SOS proxy demo](http://sensorweb.demo.52north.org/sensorwebclient-webapp-stable/api/v1/) provides an SPI implementation which accesses data from multiple Sensor Observation Services [(OGC SOS)](http://opengeospatial.org/standards/sos).\n* The [Web application integration demo](sensorweb.demo.52north.org/52n-sos-webapp/api/v1/) gives an integration demo which directly accesses the data from a database.\n* The [52°North Helgoland Web Client](https://githum.com/52North/helgoland) consumes one or multiple instances of the Sensor Web Server Helgoland API. A demo can be found under the http://sensorweb.demo.52north.org/client/#/\n\n## License\n\nThe client is published under the [GNU General Public License v2 (GPLv2)](http://www.gnu.org/licenses/gpl-2.0.html).\n\n## Changelog\n- https://github.com/52North/sensorweb-server-helgoland/blob/develop/CHANGELOG.md\n- for detailed infos check https://github.com/52North/sensorweb-server-helgoland/pulls?q=is%3Apr+is%3Aclosed\n\n## Contributing\nWe try to follow [the GitFlow model](http://nvie.com/posts/a-successful-git-branching-model/), \nalthough we do not see it that strict. \n\nHowever, make sure to do pull requests for features, hotfixes, etc. by\nmaking use of GitFlow. Altlassian provides [a good overview]\n(https://www.atlassian.com/de/git/workflows#!workflow-gitflow). of the \nmost common workflows.\n\n## Contact\nHenning Bredel (h.bredel@52north.org)\n\n## Quick Start\n\n### Client development\nThe [Web API documentation](http://52north.github.io/sensorweb-server-helgoland) gives a detailed overview on how to access the data provided by the API. Available I/O functions are described there, too, like generelization, chart rendering/overlay, etc.\n\n~~The API documentation is in the 52°North wiki:\nhttps://wiki.52north.org/bin/view/SensorWeb/SensorWebClientRESTInterface~~\n\n### API Configuration\nHow to provide a custom SPI implementation is beyond this section. See (...TBD...) to get detailed \ninformation on this.\n\n#### Logging\n\n#### Generalizer\nIn file `WEB-INF/classes/config-general.json` add \n\n```\n\"generalizer\": {\n    \"defaultGeneralizer\": \"lttb\",\n    \"noDataGapThreshold\": 5\n}\n```\n\nThe parameters are described on the official [Web API documentation](http://52north.github.io/sensorweb-server-helgoland).\n\n#### Prerendering\nPrerendering is supported for measurement data.\n\nPrerendering configuration is a task which can be run regularly by a scheduler. Configuration is done as a \n`PreRenderingJob` bean. Checkout `WEB-INF/spring/spi-impl-dao_tasks.xml` how to set up a prerendering\njob. The actual rendering configuration for each dataset/phenomenon can be referenced within the job bean.\n\nRendering configuration tells how to render the actual dataset information. It comprises a `phenomenonStyles`\nsection (valid for a set of dataset for a given phenomenon) and a `datasetStyles` section (which actually \noverrides a phenomenon style of a specific dataset) Each section can override parameters made in the `generalConfig`.\n\nOnly those datasets are prerendered having a match either in `phenomenonStyles` or `datasetStyles`. \n\n#### Date formatting\nIn file `WEB-INF/spring/config-general.json` you can set `timeformat` Parameter. Please checkout the \n[Java SimpleDateFormat rules](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html) how the \nformat has to look like.\n\n#### Rendering Hints\nTBD\n\n#### Status Intervals\nTBD\n\n#### Metadata from a Database\nTBD\n\n## Credits\n\nThe development of the 52°North Sensor Web Server Helgoland REST-API implementation was supported by several organizations and projects. Among other we would like to thank the following organisations and projects.\n\n| Project/Logo | Description |\n| :-------------: | :------------- |\n| \u003ca target=\"_blank\" href=\"https://cos4cloud-eosc.eu/\"\u003e\u003cimg alt=\"Cos4Cloud - Co-designed citizen observatories for the EOS-Cloud\" align=\"middle\" width=\"172\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/cos4cloud.png\" /\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"https://ec.europa.eu/programmes/horizon2020/\"\u003eEuropean Union’s Horizon 2020\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"https://cos4cloud-eosc.eu/\"\u003eCos4Cloud\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;863463) |\n| \u003ca target=\"_blank\" href=\"https://bmbf.de/\"\u003e\u003cimg alt=\"BMBF\" align=\"middle\" width=\"172\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/bmbf_logo_en.png\"/\u003e\u003c/a\u003e\u003ca target=\"_blank\" href=\"http://tamis.kn.e-technik.tu-dortmund.de/\"\u003e\u003cimg alt=\"TaMIS - Das Talsperren-Mess-Informations-System\" align=\"middle\"  src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/TaMIS_Logo_small.png\"/\u003e\u003c/a\u003e |  The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"https://www.bmbf.de/\"\u003e German Federal Ministry of Education and Research\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"http://tamis.kn.e-technik.tu-dortmund.de/\"\u003eTaMIS\u003c/a\u003e (co-funded by the German Federal Ministry of Education and Research, programme Geotechnologien, under grant agreement no. 03G0854[A-D]) |\n| \u003ca target=\"_blank\" href=\"https://www.jerico-ri.eu/\"\u003e\u003cimg alt=\"JERICO-S3 - Science - Services- Sustainability\" align=\"middle\" width=\"172\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/jerico_s3.png\" /\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"https://ec.europa.eu/programmes/horizon2020/\"\u003eEuropean Union’s Horizon 2020\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"https://www.jerico-ri.eu/\"\u003eJERICO-S3\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;871153) |\n| \u003ca target=\"_blank\" href=\"https://bmbf.de/\"\u003e\u003cimg alt=\"BMBF\" align=\"middle\"  src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/bmbf_logo_en.png\"/\u003e\u003c/a\u003e\u003ca target=\"_blank\" href=\"https://colabis.de/\"\u003e\u003cimg alt=\"COLABIS - Collaborative Early Warning Information Systems for Urban Infrastructures\" align=\"middle\"  src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/colabis.png\"/\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"https://www.bmbf.de\"\u003e German Federal Ministry of Education and Research\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"https://colabis.de/\"\u003eCOLABIS\u003c/a\u003e (co-funded by the German Federal Ministry of Education and Research, programme Geotechnologien, under grant agreement no. 03G0852A) |\n| \u003ca target=\"_blank\" href=\"http://www.nexosproject.eu/\"\u003e\u003cimg alt=\"NeXOS - Next generation, Cost-effective, Compact, Multifunctional Web Enabled Ocean Sensor Systems Empowering Marine, Maritime and Fisheries Management\" align=\"middle\" width=\"172\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/logo_nexos.png\" /\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"http://cordis.europa.eu/fp7/home_en.html\"\u003eEuropean FP7\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"http://www.nexosproject.eu/\"\u003eNeXOS\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;614102) |\n| \u003ca target=\"_blank\" href=\"http://www.fixo3.eu/\"\u003e\u003cimg alt=\"FixO3 - Fixed-Point Open Ocean Observatories\" align=\"middle\" width=\"172\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/logo_fixo3.png\" /\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"http://cordis.europa.eu/fp7/home_en.html\"\u003eEuropean FP7\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"http://www.fixo3.eu/\"\u003eFixO3\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;312463) |\n| \u003ca target=\"_blank\" href=\"http://www.odip.org\"\u003e\u003cimg alt=\"ODIP II - Ocean Data Interoperability Platform\" align=\"middle\" width=\"100\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/odip-logo.png\"/\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"https://ec.europa.eu/programmes/horizon2020/\"\u003eHorizon 2020\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"http://www.odip.org/\"\u003eODIP II\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;654310) |\n| \u003ca target=\"_blank\" href=\"https://www.seadatanet.org/About-us/SeaDataCloud/\"\u003e\u003cimg alt=\"SeaDataCloud\" align=\"middle\" width=\"156\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/logo_seadatanet.png\"/\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"https://ec.europa.eu/programmes/horizon2020/\"\u003eHorizon 2020\u003c/a\u003e research project \u003ca target=\"_blank\" href=\"https://www.seadatanet.org/About-us/SeaDataCloud/\"\u003eSeaDataCloud\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;730960) |\n| \u003ca target=\"_blank\" href=\"http://www.wupperverband.de\"\u003e\u003cimg alt=\"Wupperverband\" align=\"middle\" width=\"196\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/logo_wv.jpg\"/\u003e\u003c/a\u003e | The \u003ca target=\"_blank\" href=\"http://www.wupperverband.de/\"\u003eWupperverband\u003c/a\u003e for water, humans and the environment (Germany) |\n| \u003ca target=\"_blank\" href=\"http://www.irceline.be/en\"\u003e\u003cimg alt=\"Belgian Interregional Environment Agency (IRCEL - CELINE)\" align=\"middle\" width=\"130\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/logo_irceline_no_text.png\"/\u003e\u003c/a\u003e | The \u003ca href=\"http://www.irceline.be/en\" target=\"_blank\" title=\"Belgian Interregional Environment Agency (IRCEL - CELINE)\"\u003eBelgian Interregional Environment Agency (IRCEL - CELINE)\u003c/a\u003e is active in the domain of air quality (modelling, forecasts, informing the public on the state of their air quality, e-reporting to the EU under the air quality directives, participating in scientific research on air quality, etc.). IRCEL \u0026mdash; CELINE is a permanent cooperation between three regional environment agencies: \u003ca href=\"http://www.awac.be/\" title=\"Agence wallonne de l\u0026#39Air et du Climat (AWAC)\"\u003eAgence wallonne de l'Air et du Climat (AWAC)\u003c/a\u003e, \u003ca href=\"http://www.ibgebim.be/\" title=\"Bruxelles Environnement - Leefmilieu Brussel\"\u003eBruxelles Environnement - Leefmilieu Brussel\u003c/a\u003e and \u003ca href=\"http://www.vmm.be/\" title=\"Vlaamse Milieumaatschappij (VMM)\"\u003eVlaamse Milieumaatschappij (VMM)\u003c/a\u003e. |\n| \u003ca target=\"_blank\" href=\"https://cordis.europa.eu/project/id/282915\"\u003e\u003cimg alt=\"GEOWOW - GEOSS interoperability for Weather, Ocean and Water\" align=\"middle\" width=\"172\" src=\"https://raw.githubusercontent.com/52North/sos/develop/spring/views/src/main/webapp/static/images/funding/logo_geowow.png\"/\u003e\u003c/a\u003e | The development of this version of the 52\u0026deg;North Sensor Web Server Helgoland API was supported by the \u003ca target=\"_blank\" href=\"http://cordis.europa.eu/fp7/home_en.html\"\u003eEuropean FP7\u003c/a\u003e research project \u003ca href=\"https://cordis.europa.eu/project/id/282915\" title=\"GEOWOW\"\u003eGEOWOW\u003c/a\u003e (co-funded by the European Commission under the grant agreement n\u0026deg;282915) |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F52north%2Fsensorweb-server-helgoland","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F52north%2Fsensorweb-server-helgoland","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F52north%2Fsensorweb-server-helgoland/lists"}