OpenNoiseMap and the NoiseDroid app on Android are discontinued projects.

Introduction

The OpenNoiseMap project started in October 2010 at the Institute for Geoinformatics (ifgi) in Münster as topic for the course Geosoftware II. OpenNoiseMap is an application for Android smartphones and can be used for collecting information about noise pollution. It supports manual, automatic, event-based and series mode measurements and presents all collected measurements in a list or on a map. Details can be shown and the list can be sorted and filtered by a number of criteria. Additionally the users can export measurements to the OpenNoiseMap community and import from community measurements.

Source Code

Server

The OpenNoiseMap web application is accessible as “NoiseServerServlet” from outside the application server. For an example project installation this corresponds to http://server.url/NoiseServerServlets. From here on, several interfaces are provided to serve the mobile application and the OpenNoiseMap website.

Website

The website contains a map client to request measurements with some fitering options. Also it is possible to set up an OpenNoiseMap account and do more account relevant management.

App servlet

The mobile application exchanges measurements with the server using the AppServlet endpoint:http://server.url/NoiseServerServlets/AppServletThe communication is handled via HTTP Post requests sent by the application as defined in the following and underlies access restrictions set by the server.

GetMeasures

A list of measurements found for the given filter contraints is returned. Error nodes are listed seperately (see addMeasures response). An empty "Measures"-node means no results found for the given filters.

AddMeasures

The response lists the successfully added and not successfully added measurements seperately. The measurements are referenced by the ID which was used for them in the request.

UpdateSeries

The response has the same structure like the addMeasures response. In addition the error type "series_not_found" can be returned.

List Servlet

The website requests measurement data for its list view via the ListServlet endpoint: http://server.url/NoiseServerServlets/ListServlet Form based parameters are sent via HTTP Post to get a corresponding JSON encoded set of measurements in return.

Sets the sorting to apply to the measurements before returning the specified set of measurements.

dir

One of ASC, DESC

Sets the sorting direction.

start

Integer value greater than or equal to zero

The index for the beginning of the subset of measurements to return.

limit

Integer value greater than or equal to zero

The length of the subset of measurements to return.

userid

Integer value greater than or equal to zero

Restrict returned measurements to those of the user with that user identification. Only allowed if currently logged in as that user or with an elevated security role.

Simple testing interface

A simple test interface can be found at http://server.url/NoiseServerServlets/test.jsp.

With this minimal testing interface one can request the server by uploading XML files, containing the specified request. See "App Servlet" under the "Client side requests" section for how to build such a request.

The information and images for this side were gathered from the project group documentation.

A “spatially enabled” PostgreSQL database using the PostGIS extension configured to be accessible within the Java EE infrastructure by the JNDI name “jdbc/noiseserver”

It may be necessary to manually add the PostgreSQL Jdbc drivers to the server’s libraries in order to configure these settings

In short: Create a database user with the rights to create tables and an empty database called "noiseserver" (based on the PostGIS template) and note these down for installation in Glassfish.

The following JAAS settings within the Java EE container

JdbcRealm called “noiseuserauth” using the “jdbc/noiseserver” datasource

User table “users”

Username column “username”

Password column “pass”

Group table “usergroups”

Groupname column “groupname”

Digest algorithm “none”

A current GeoServer installation listening on the same host as the NoiseDroid server components to install with the following settings

PostGIS data source called “noiseserver” with the “jdbc/noiseserver” data as connection parameters (JNDI) using its “geoservermeasures” resource

WFS layer called “measures” in the default workspace “cite” publishing all attributes available from the “geoservermeasures” resource

As the GeoServer configuration depends on the successful creation of all tables and views within the supplied “jdbc/noiseserver” database, these settings should be completed after initially publishing the NoiseDroid components in the application server since they will create all relevant tables and data views. The components do not depend on the installation of further libraries as they are completely includ-ed into the EAR.

Deployment

All NoiseDroid components are deployed as a single Enterprise Archive (EAR) to be added as a single new application within a Java EE 6 Application Server. During this process, all necessary database tables and views are created automatically. This includes the tables to persist measurements (see Figure below) as well as the tables to store user and access data for the Java Authentication and Authorization Service (see below) which is also controlled automatically. Furthermore, the registration of the utilized spatial PostGIS type table columns and views in the appropriate tables of the spatially enabled database is also handled by the NoiseDroid application itself to further reduce installation time and effort.

Database schema automatically created during deployment to persist measurements.