GPX/GIS Python Program

GPX CONVERTER

Tkinter Choose GPX Program Window





Gpx Converter uses Tkinter to open a file browser to select files for processing. You can:
* Convert a GPX file into a text(csv) and shape file
* Convert a shape file into a GPX file
* Convert a CSV file into a GPX file
* Convert a multitrack GPX file into a file with one track having multiple segments
* Break up a single line GPX file into multiple lines
* Round off GPX lat/lon coordinates

Gpx_converter.py was tested on Linux OS with Python 3.4.2 and Tkinter 8.5.

Button icons can be displayed by unzipping the image file (near bottom of this page) and placing the files in the image folder (created the first time you run the program).

Tkinter
GPX Choose Arguments Window



GPX_Converter v51e6 utilizes modules from osgeo. You will need to install the python3-gdal package (python2-gdal package will not work). GPX_Converter v51+ has done away with all of the subprocess.call() code. Version 51 allows the user to choose configuration files in a popup, letting the user choosedifferent option formats as needed.

An additional checkbox has been added. Now, if converting a track GPX file into a shape file, you can choose whether to create a track point shapefile in addition to a linestring shapefile.

GPX_Converter will set up the necessary folder (gpx_converter_51) and subfolders in your home directory and will create argument and option configuration files from default values. Simply download and start to use it. You can customize various user preferences in the program USER_SETTINGS and in the config files (in the config subfolder).




CSV to GPX Option Window


Left: Select option window for CSV2GPX


You can use a large range of EPSG Codes but every code may not work. Newer EPSG Codes might not be in the GDAL library. Try yours and find out. If the program fails and you see no error popup then try running the program from a terminal to see what is reported there.

You can run gpx_converter.py by using the command:
python3 gpx_converter-51e6.py

A sample waypoint CSV output is below. You can customize headings and columns.


Below is another data set opened in Libre Office Calc:


Here is a zip file of images for the button display. You can use your own small .gif files for decoration. The images in the zip file are 16px x 16px. Download: images6buttons.tar.gz

If you are trouble shooting it works well to open the program in a terminal instead of using a launcher. The terminal will stay open and give you helpful error messages.

More information on using gpx2csv-shp.py can be found in hints.txt.

I've made a Python time converter function, time_to_time.py, that can be used independently from the gpx_converter.py program. It takes a GPX time string, <time>2016-09-08T19:01:46Z</time>, an input time zone integer, and an output time zone integer. The argument string just needs time units separated by something, not necessarily a GPX time format. The function returns Local Time in a tupel containing ints (NOT strings) of year, month, day, hour, minutes, seconds. You can convert a GPX UTC time string to your local time by using an input zone of 0 (UTC time zone) and an output zone that you want. Making this function was more fun than trying to figure out the Python library or external time libraries! Include the function in your program and call it with: time2time(timestring,zonein,zoneout).
For instance:
x = time2time('',0 ,5)
print(x)
(2017, 5, 22, 1, 17, 59)