Python package for manipulating gpx files and easily convert gpx to other different formats.
Project description
GPX manipulation for humans
Python package for manipulating gpx files and easily convert gpx to other different formats.
Free software: MIT license
Documentation: https://gpx-converter.readthedocs.io.
When & Why
You need to convert GPX to other formats
You need to convert other formats like csv to GPX
You want to interpolate the GPX coordinates
High level of abstraction
Stable API
easy to use and to extend
Motivation
I decided to create this project because I had gpx data that I needed to manipulate. I searched for a python package for this but I did not find what I was looking for, therefore I created the gpx-converter package to make gpx files manipulation very easy. Furthermore, the package contains methods for applying interpolation on the gpx data. This feature was very helpful for me since I also needed to interpolate the gpx data and convert it to csv. Feel free to contribute or to give me feedback anytime :)
Features
Convert gpx files to other formats such as csv, numpy arrays, dataframes, excel and json
Convert csv files to gpx
Apply interpolation on the gpx data
Installation
$ pip install -U gpx-converter
Quick Usage
from gpx_converter import Converter
Just read the gpx to dictionary
dic = Converter(input_file='your_input.gpx').gpx_to_dictionary(latitude_key='latitude', longitude_key='longitude')
# now you have a dictionary and can access the longitudes and latitudes values from the keys
latitudes = dic['latitude']
longitudes = dic['longitude']
Convert GPX to other formats
Convert from gpx to csv:
Converter(input_file='your_input.gpx').gpx_to_csv(output_file='your_output.csv')
Convert from gpx to excel sheets:
Converter(input_file='your_input.gpx').gpx_to_excel(output_file='your_output.xlsx')
Convert from gpx to json:
Converter(input_file='your_input.gpx').gpx_to_json(output_file='your_output.json)
Convert gpx file to dataframe:
df = Converter(input_file='your_input.gpx').gpx_to_dataframe()
Convert gpx file to numpy array:
np_array = Converter(input_file='your_input.gpx').gpx_to_numpy_array()
Now convert other formats to GPX
csv to gpx
Converter(input_file='your_input.csv').csv_to_gpx(lats_colname='column_name_of_latitudes',
longs_colname='column_name_of_longitudes',
output_file='your_output.gpx')
excel to gpx
Converter(input_file='your_input.xlsx').excel_to_gpx(lats_colname='column_name_of_latitudes',
longs_colname='column_name_of_longitudes',
output_file='your_output.gpx')
dataframe to gpx (notice that the method is static)
Converter.dataframe_to_gpx(input_df=your_df,
lats_colname='column_name_of_latitudes',
longs_colname='column_name_of_longitudes',
output_file='your_output.gpx')
json to gpx
Converter(input_file='your_input.json').json_to_gpx(input_df=your_df,
lats_colname='column_name_of_latitudes',
longs_colname='column_name_of_longitudes',
output_file='your_output.gpx')
Automate the conversion of multiple csv file to gpx:
Converter.convert_multi_csv_to_gpx(dirpath='your_directory/')
Apply spline interpolation on gpx file (you need to install scipy for this to work):
interpolated_coordinates = Converter.spline_interpolation(cv=your_array_of_control_vertices)
Usage from terminal
Alternatively you can use the gpx_converter directly from terminal. You just need to pass the function, input file and output file as arguments.
function: the conversion method you want to use. For example “gpx_to_csv”
input file: path to your input file
output file: path to your output file
$ gpx_converter --function "gpx_to_csv" --input_file "home/your_input.gpx" --output_file "home/your_output.csv"
or maybe you prefer the short version
$ gpx_converter -func "gpx_to_csv" -in "home/your_input.gpx" -out "home/your_output.csv"
Links
Check this article to know more about gpx files and how to use the gpx-converter package. https://medium.com/p/57da00bd36fc/edit
Contributions
Contributions are always welcome. Make sure you check the guidlines first https://gpx-converter.readthedocs.io/en/latest/contributing.html