Our projectWhy get involvedHow it worksPrizes for First CampaignPrizes for Autumn CampaignDashboardTerms of UsePrivacy PolicyMapScientific OutputsFAQsContact UsLeaderboard

Privacy Policy

Thank you for your willingness to contribute to CAMALIOT. This document aims to provide you with adequate information on the data we receive from you, how we process it, and what we make available to the public in order to comply with the requirements of the EU General Data Protection Regulation (GDPR).

1. Our platform

The app you are using, and the CAMALIOT website (www.camaliot.org), have been developed by the International Institute for Applied Systems Analysis (IIASA), Schlossplatz 1, 2361 Laxenburg, Austria as a part of the CAMALIOT project funded by the European Space Agency (ESA). The data collected from the app in the form of GNSS data log files, see Sec. 6, shall be stored on the resources of Exoscale , Switzerland. The data processing is carried out by ETH Zurich (ETHZ), Rämistrasse 101, 8092 Zürich, Switzerland.

2. What is personal data?

“Personal data” means any information relating to an identified or identifiable natural person, such as their name, contact information, their location at a certain time or IP address.

3. Data processed by us

We are scientific institutes and process personal data only for scientific purposes related to environmental monitoring. We process personal data:

  • for which you have given us consent for a specific purpose (Art. 6 para 1 lit a GDPR), namely for carrying out this scientific study. This concerns the location information contained in the GNSS data log files, namely referred to as GPS-Fixes in Sec.6. In addition, the raw GNSS observations may be utilized to derive positional time series of the mobile phone at the post-processing stage, where coordinates of the smartphone are treated as estimable parameters. This is necessary in order conduct the scientific study in a proper manner.
  • that are necessary for the performance of a task carried out in the public interest (Art. 6 para 1 lit e GDPR), namely for the conduction of this scientific study; that is necessary for the purpose of the legitimate interests pursued by us or by a third party (Art. 6 para 1 lit f GDPR), e.g., avoiding legal disputes about rights in the contributions. If possible, we seek the explicit consent to the processing of data, in particular the disclosure to third parties (Art. 6 para. 1 lit. a GDPR). Below is a list of types of the data the app collects. Please note that a copy of the data might be briefly stored in the server's memory for a short period. These data are temporarily stored apart from the database, managed and deleted automatically by the server's operating system and will not be accessed by us for processing, archiving, or any other reason. It is also possible through logging errors or general requests that submitted data be stored in one of the server's log files. These files are not publicly accessible and are not used for any processing, storage or data publication other than for resolving a possible software problem. These are technical necessities over which we have no control.

4. Registration/Login/Profile Update

We process the following data for registration, login and profile updates for a given user, all of which are stored in the CAMALIOT database (see Sec. 7):

  • Username
  • User password (encrypted)
  • Email address
  • Number of measurements the user has conducted

None of this information will be part of any publication (e.g., data products, scientific publications, etc.).

5. Log Data

Whenever you use our service, we collect Log Data, or data and information (also through third party products) on your phone to identify errors in the app. Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing our Service, the time and date of your use of the service, and other statistics. These data are used for identifying problems with our software and will not be published as a part of the resulting data product.

6. Submitting a GNSS data log file

When you upload a GNSS (Global Navigation Satellite System) log file via the mobile app, no personal information is stored on the server together with the log file, so it is impossible to identify a person. However, we employ a universally unique identifier (UUID) in order to associate the collected GNSS data to the specific instance of the app. This identifier is not related to the device as the re-installation of our app generates a new UUID. This section describes what is sent to the server and stored in a single log file.

The following data is sent for the Header of the log-files:

Values from Android Build class (https://developer.android.com/reference/android/os/Build):

Name of DataUsed MethodMeaning
Manufacturer
String Build.MANUFACTURERThe manufacturer of the product/hardware
Model
String Build.MODELThe end-user-visible name for the end product

The following data is sent for the GNSS-Raw-Measurements:

Values from Java SystemClock class (https://developer.android.com/reference/android/os/SystemClock):

Name of DataUsed MethodMeaning
ElapsedRealtimeMillislong SystemClock.elapsedRealtime()Elapsed milliseconds since boot.

Values from Android GnssClock class (https://developer.android.com/reference/android/location/GnssClock):

Name of DataUsed MethodMeaning
TimeNanoslong GnssClock.getTimeNanos()GNSS receiver internal hardware clock value in nanoseconds
LeapSecondint GnssClock.getLeapSecond()The leap second associated with the clock's time
TimeUncertaintyNanosdouble GnssClock.getTimeUncertaintyNanos()The clock's time Uncertainty (1-Sigma) in nanoseconds
FullBiasNanoslong GnssClock.getFullBiasNanos()The difference between TimeNanos and the true GPS time in nanoseconds
BiasNanosdouble GnssClock.getBiasNanos()The clock's sub-nanosecond bias
BiasUncertaintyNanosdouble GnssClock.getBiasUncertaintyNanos()The clock's Bias Uncertainty (1-Sigma) in nanoseconds
DriftNanosPerSeconddouble GnssClock.getDriftNanosPerSecond()The clock's Drift in nanoseconds per second
DriftUncertaintyNanosPerSeconddouble GnssClock.getDriftUncertaintyNanosPerSecond()The clock's Drift Uncertainty (1-Sigma) in nanoseconds per second
HardwareClockDiscontinuityCountint GnssClock.getHardwareClockDiscontinuityCount()Count of hardware clock discontinuities

Values from Android GnssMeasurement class (https://developer.android.com/reference/android/location/GnssMeasurement):

Name of DataUsed MethodMeaning
SvidSvid int GnssMeasurement.getSvid()The satellite ID
TimeOffsetNanosTimeOffsetNanos double GnssMeasurement.getTimeOffsetNanos()The time offset at which the measurement was taken in nanoseconds
StateReceivedSvTimeNanos long GnssMeasurement.getReceivedSvTimeNanos()The received GNSS satellite time, at the measurement time, in nanoseconds
ReceivedSvTimeNanosReceivedSvTimeUncertaintyNanos long GnssMeasurement.getReceivedSvTimeUncertaintyNanos()The error estimate (1-sigma) for the received GNSS time, in nanoseconds
ReceivedSvTimeUncertaintyNanosCn0DbHz double GnssMeasurement.getCn0DbHz()The Carrier-to-noise density in dB-Hz
Cn0DbHzPseudorangeRateMetersPerSecond double GnssMeasurement.getPseudorangeRateMetersPerSecond() The Pseudorange rate at the timestamp in m/s
PseudorangeRateMetersPerSecondPseudorangeRateUncertaintyMetersPerSecond double GnssMeasurement.getPseudorangeRateUncertaintyMetersPerSecond()The pseudorange's rate uncertainty (1-Sigma) in m/s
PseudorangeRateUncertaintyMetersPerSecondAccumulatedDeltaRangeState int GnssMeasurement.getAccumulatedDeltaRangeState()This indicates the state of the AccumulatedDeltaRangeMeters measurement
AccumulatedDeltaRangeStateAccumulatedDeltaRangeMeters double GnssMeasurement.getAccumulatedDeltaRangeMeters()The accumulated delta range since the last channel reset, in meters
AccumulatedDeltaRangeMetersAccumulatedDeltaRangeUncertaintyMeters double GnssMeasurement.getAccumulatedDeltaRangeUncertaintyMeters() The accumulated delta range's uncertainty (1-Sigma) in meters
AccumulatedDeltaRangeUncertaintyMetersCarrierFrequencyHz float GnssMeasurement.getCarrierFrequencyHz()The carrier frequency of the tracked signal
CarrierFrequencyHzCarrierCycles long GnssMeasurement.getCarrierCycles()The number of full carrier cycles between the satellite and the receiver
CarrierCyclesCarrierPhase double GnssMeasurement.getCarrierPhase() The RF phase detected by the receiver
CarrierPhaseCarrierPhaseUncertainty double GnssMeasurement.getCarrierPhaseUncertainty()The carrier-phase's uncertainty (1-Sigma)
CarrierPhaseUncertaintyCarrierPhaseUncertainty double GnssMeasurement.getCarrierPhaseUncertainty()The carrier-phase's uncertainty (1-Sigma)
MultipathIndicatorMultipathIndicator int GnssMeasurement.getMultipathIndicator()A value indicating the 'multipath' state of the event
SnrInDbdouble GnssMeasurement.getSnrInDb()The (post-correlation & integration) Signal-to-Noise ratio (SNR) in dB
ConstellationTypeConstellationType int GnssMeasurement.getConstellationType() The constellation type
AgcDbdouble GnssMeasurement.getAutomaticGainControlLevelDb()The Automatic Gain Control level in dB

The following data is sent for the GPS-Fixes:

Values from Android Location class (https://developer.android.com/reference/android/location/Location):

Name of DataUsed MethodMeaning
ProviderProvider String Location.getProvider()The name of the provider that generated this fix
LatitudeLatitude double Location.getLatitude()The latitude, in degrees
LongitudeLongitude double Location.getLongitude()The longitude, in degrees
AltitudeAltitude double Location.getAltitude()The altitude if available, in meters above the WGS 84 reference ellipsoid
SpeedSpeed float Location.getSpeed()The speed if it is available, in meters/second over ground
AccuracyAccuracy float Location.getAccuracy()The estimated horizontal accuracy of this location, radial, in meters
(UTC)TimeInMs(UTC)TimeInMs long Location.getTime()The UTC time of this location fix, in milliseconds since epoch (January 1, 1970)

In addition, these sensor data get collected and sent if the user checks the “Log Sensor Data” checkbox on the Logging page (https://developer.android.com/reference/android/hardware/Sensor):

Sensor DataMeaning
TYPE_ROTATION_VECTORRotation vector using the geomagnetic field
TYPE_LINEAR_ACCELERATIONAcceleration vector using the acceleration sensor
TYPE_GYROSCOPE_UNCALIBRATEDThe uncalibrated gyroscope sensor data
TYPE_ACCELEROMETER_UNCALIBRATEDMeasures the acceleration force in m/s2
TYPE_AMBIENT_TEMPERATUREMeasures the ambient room temperature in degrees Celsius (°C)
TYPE_LIGHTMeasures the ambient light level (illumination) in lx.
TYPE_PRESSUREMeasures the ambient air pressure in hPa or mbar.
TYPE_RELATIVE_HUMIDITYMeasures the relative ambient humidity in percent (%).

7. Data storage

The user data, see Sec. 4, from the CAMALIOT application are stored and maintained on state-of-the-art web service environments hosted on rented servers at Hetzner Online GmbH, Industriestrasse 25, 91710 Gunzenhausen, Germany. Concerning the acquired GNSS observations, see Sec. 6, information retrieved from the app (and data processing with the use of dedicated software present on the Kubernetes cluster) will be stored using the Exoscale European cloud service, with company headquarters in Switzerland. This solution is necessary in order to assure proper means for data storage as well as the possibility to restore critical data. This implies that parts of the collected information from the app shall be also stored there on a temporary basis. We do not provide any means to access data for the hosting company other than the ways intended for every user. The environment is set up such that we restrict the access to the database and data strictly to our trusted network and through APIs that let us choose exactly which data are accessible to which users.

8. Data contributions

By contributing data, you provide us with the information requested in the app/website, but we usually also collect additional data that allows us to trace technical problems and verify the quality of the contribution. Please see the details above.

By contributing data, you grant IIASA, ETHZ and ESA a license to use the data. Please see also our Terms and Conditions, which are available from the mobile app and the website.

9. Third parties

Please note that we may employ the following third-party companies to facilitate our service:

  • Hetzner Online GmbH.
  • Exoscale

These companies will have access to your data in order to perform the tasks we assign to them, as described above. However, they are obliged to not disclose or use the information for any other purpose.

We also use the Umami software (https://umami.is/) for the purpose of gathering analytics from the CAMALIOT website. The software is installed at IIASA and the data are stored locally so no data are provided to Umami.

10. Rights of the user

At any time, you have the right

  • to request information as to which of your data we process (Art. 15 GDPR),
  • to request the rectification or erasure of your data (Art. 16 and Art. 17 GDPR),
  • to restrict the processing of your data (Art. 18 GDPR),
  • to request the transmission of your data (Art. 20 GDPR);
  • to file a complaint with a supervisory authority, in particular the Austrian data protection authority (www.dsb.gv.at) or the data protection authority at your place of residence.

You can instruct us to stop processing your data at any time using the contact data below. Even if you have agreed to the processing of data in the past, you can revoke such consent at any time (Art. 21 GDPR).

Should you have questions concerning your personal data, please contact us using the contact information below.

11. Third party apps and websites

Our app and/or website may contain links to other websites. If you click on a third-party link, you will be directed to that site. Please note that these external sites are not operated by us and we do not have any control, nor assume any responsibility for their content, privacy policies or practices.

We therefore strongly advise you to review the Privacy Policy of those websites.

12. Contact Us

If you have any questions about our Privacy Policy, do not hesitate to contact us at: [email protected]

  • International Institute for Applied Systems Analysis
  • Schlossplatz 1
  • A-2361 Laxenburg
  • Austria
  • Tel: + 43 2236 807 328