## 2 Materials and Methods
### Data Capturing and Processing Software
For comparison purposes, all smartphones used the same version (3.6.4) of the app 'GPStest', and all of the settings of the app were also exactly the same. The app captures the GNSS NMEA (data specification for communication for GNSS/RNSS data by the National Marine Electronics Association) standard data of the mobile phone and prevents the mobile phone from switching off even during long measurements. Furthermore, it is simply structured and has the possibility to display real-time information about the current measurement, especially for the GNSS and SBAS satellites and the different frequencies used. This is essential for a functional check during the capture. Figure 4 shows the Android app 'GPStest' used to capture the GNSS data in this study. The app shows the real-time meta and positioning data. Additionally, real-time data about the different satellite identifications, constellations, receiving frequencies (CF), signal-to-noise ratios (C/N\({}_{0}\)), flags, elevations, and azimuth angles are displayed and stored. The logged data were further processed as follows:  
1. The data from the app 'GPStest' were stored in the GNSSlog in a text file format on the smartphone. In addition to the header's metadata, this also contains the navigation message data, raw GNSS measurements data, location fix data, and NMEA data. 2. The data were subsequently read out asynchronously from the individual smartphones and stored in a file system. 3. NMEA data were used to analyse the measured position and satellite data. The app used, 'GPStest', stores all data in a joint log file containing NMEA data, metadata, navigation data, RAW data, and others. Using a parser, 'GNSS2 NMEA', programmed by the author in Python, the \"correct\" NMEA data were extracted from the GNSS log file, verified, and saved as a pure NMEA text file. This process was performed for each mobile phone and each recording separately with a batch process. 4. The NMEA data were parsed and written into an MYSQL database. For this purpose, a Python program, 'NMEA2 DB', and database schema created by the author [16,21] were adapted and used to extract the relevant positioning and satellite data from the NMEA file. Some challenges were the different NMEA interpretations, the different  
Figure 4: Example smartphone GNSS data from the Android app ‘GPStest’ used for capturing and live control of the GNSS data in this study. NMEA 0183 versions (v2.3; v4.10; v4.11) of the smartphone manufacturers, and the NMEA standard's different dialects. In particular, the handling of the standard with the different satellite systems and the multi-frequency data was very different. The parser was elaborately and explicitly adapted to the different smartphone models and their NMEA characteristics. The following NMEA 0183 datasets were analysed and the data were stored: (a) RMC: Recommended Minimum Sentence C; (b) GGA: Global Positioning System Fix Data; (c) GNS: GNSS fixed data; (d) GST: GNSS Pseudorange Error Statistics; (e) GSV: Satellites in view); and (f) GSA: GPS DOP and active satellites. The parsing process steps were as follows: (a) Automatic identification of the smartphone types/names. If the type/name was identical (i.e., Samsung XCOVER 4s a and b), this step was manually completed. (b) Extraction of all information from the relevant NMEA sentences. (c) Generation of SQL statements of the parsed data. (d) Execution of the SQL statements to transfer the satellite and position information into a MYSQL GNSS database [16]. 5. The position data and the satellite data were separately stored in two different tables ('pos' and'sat') that are clearly linked in a one-to-many relationship using measurement-GUID, a receiver (e.g., smartphone), and a UTC timestamp. The tables were fully indexed and query-optimised. The GNSS data from the Trimble Geo7x were processed separately. Post-processing using the Trimble GPS Pathfinder Office correction service was performed in the office. Afterwards, the corrected position data was loaded into the database.