As a data scientist, I’m always looking for ways to simplify and streamline the analysis process. One tool that I’ve found particularly useful when working with geographic data is the python standardising GPS library. In this blog post, I’ll provide an overview of what standardising GPS is, why it’s important, and how it can be applied to an historical unsolved cases in Australia
What is Standardising GPS?
GPS (Global Positioning System) is a technology that uses satellite signals to determine the precise location of a receiver. While GPS has revolutionized the way we navigate and map the world, it’s important to note that not all GPS measurements are created equal. In fact, GPS measurements can vary significantly depending on a number of factors, such as the quality of the receiver, atmospheric conditions, and the location of the satellites.
Standardising GPS involves correcting these variations to ensure that measurements are consistent and accurate. This is achieved by comparing GPS measurements to a known, reference measurement and adjusting the GPS data accordingly. The end result is a set of GPS measurements that have been standardised to a common reference frame.
Why is Standardising GPS Important?
Standardising GPS is critical for any analysis that involves comparing or combining GPS data from different sources. Without standardisation, GPS measurements may be biased, leading to errors and inaccuracies in the analysis.
For example, imagine that you’re working on a project that involves mapping the movement of a person or object over time. If you’re using GPS data from multiple sources, such as different devices or satellites, you may find that the measurements are inconsistent and don’t line up properly. This can make it difficult to accurately map the movement and draw meaningful conclusions from the data.
By standardising GPS, you can ensure that all measurements are consistent and accurate, making it easier to combine and compare data from different sources.
Applying Standardising GPS to an Unsolved Case in Australia
To illustrate the importance of standardising GPS, let’s consider an hypothetical unsolved case in Australia. For the purposes of this post, I’ll refer to this case as the “Mystery of the Missing Hiker.”
The Mystery of the Missing Hiker involves a hiker who went missing while on a solo trip in the Australian bush. Despite extensive search efforts, the hiker was never found, and the case remains unsolved to this day. One of the key pieces of evidence in the case is a GPS track that was recovered from the hiker’s device.
To analyze the GPS data and potentially shed light on the hiker’s whereabouts, we first need to standardize the GPS measurements. To do this, we’ll use the python standardising GPS library.
Using the Python Standardising GPS Library
To demonstrate how to use the python standardising GPS library, let’s consider a sample dataset. The dataset consists of GPS measurements collected from three different devices over a period of one hour. The devices include a smartphone, a handheld GPS device, and a drone-mounted GPS receiver. The data is stored in a CSV file, which we can load into python using the pandas library.
Here’s what the first few rows of the dataset look like:
Timestamp | Device | Latitude | Longitude | Altitude |
---|---|---|---|---|
12:00:00 | Smartphone | -37.8136 | 144.9631 | 10 |
12:00:05 | Handheld GPS | -37.8142 | 144.9615 | 15 |
12:00:10 | Drone GPS | -37.8129 | 144.9657 | 20 |
To standardise the GPS measurements, we’ll first need to choose a reference frame. In this case, we’ll use the International Terrestrial Reference Frame 2014 (ITRF2014), which is a commonly used reference frame for GPS analysis.
Next, we’ll use the pyproj library to create a coordinate transformation object that will allow us to convert our GPS measurements to the ITRF2014 reference frame. Here’s the code:
import pyproj
# Define the source and destination coordinate reference systems
src_crs = pyproj.CRS('EPSG:4326') # WGS84
dest_crs = pyproj.CRS('EPSG:ITRF2014')
# Create a coordinate transformation object
transformer = pyproj.Transformer.from_crs(src_crs, dest_crs)
With our coordinate transformation object in hand, we can now use it to transform our GPS measurements. Here’s the code to transform the latitude and longitude columns of our dataset:
import pandas as pd
# Load the dataset into a pandas DataFrame
df = pd.read_csv('gps_data.csv')
# Apply the coordinate transformation to the latitude and longitude columns
transformed_coords = transformer.transform(df['Longitude'].values, df['Latitude'].values)
# Update the DataFrame with the transformed coordinates
df['Latitude'] = transformed_coords[1]
df['Longitude'] = transformed_coords[0]
Note that we’re using the longitude and latitude columns in the reverse order to what we might expect. This is because the pyproj library expects longitude to come before latitude.
Finally, we’ll need to adjust our altitude measurements to account for variations in atmospheric conditions. To do this, we’ll use the geoidheight library, which provides access to the Earth Gravitational Model (EGM) to calculate the geoid height at a given point on the Earth’s surface. We can then subtract the geoid height from our altitude measurements to obtain orthometric heights, which are more consistent and accurate than raw altitude measurements.
Here’s the code to adjust our altitude measurements:
import geoidheight
# Loop over each row in the DataFrame and adjust the altitude measurement
for index, row in df.iterrows():
altitude = row['Altitude']
latitude = row['Latitude']
longitude = row['Longitude']
# Calculate the geoid height at the given latitude and longitude
geoid_height = geoidheight.get(height='geoid', latitude=latitude, longitude=longitude, model='egm2008')
# Subtract the geoid height from the altitude measurement to obtain an orthometric height
orthometric_height = altitude - geoid_height
# Update the altitude measurement in the DataFrame
df.at[index, 'Altitude'] = orthometric_height
With our GPS data standardised, we can now begin the analysis process. We can use the standardised GPS data to create maps, calculate distances and velocities, and perform other analyses to potentially shed light on the Mystery of the Missing Hiker.
Conclusion
In this blog post, we’ve discussed the importance of standardising GPS measurements for accurate and meaningful analysis. We’ve also demonstrated how to use the python standardising GPS library to standardise GPS measurements and adjust altitude measurements for atmospheric variations.
While we used a hypothetical unsolved case in Australia to illustrate the application of standardising GPS, the technique