iNaturalist observations along hiking trails

Overview

iNaturalist observations along hiking trails

This tool reads the route of a hike and generates a table of iNaturalist observations along the trails. It also shows the observations and the route of the hike on a map. Moreover, it saves waypoints of the iNaturalist observations for offline navigation with a GPS device or smartphone.

Usage

This is a command-line tool. It is called with a .gpx file that describes the route. This .gpx file can be either after a hike downloaded from a gps device or smartphone or created before a hike by a mapping tool or website. The gpx files in the examples directory have been created with the free website caltopo.com.

Here is an example. This is the command for Linux and macOS

./inat_trails.py examples/Rancho_Canada_del_Oro.gpx

On Windows the command is:

python.exe .\inat_trails.py examples\Rancho_Canada_del_Oro.gpx

The output looks like this:

Reading 'examples/Rancho_Canada_del_Oro.gpx'...
Loaded 13 named roads and trails: Bald Peaks Trail, Canada Del Oro Cut-Off Trail, Canada Del Oro Trail, Casa Loma Road,
    Catamount Trail, Chisnantuk Peak Trail, Little Llagas Creek Trail, Llagas Creek Loop Trail, Longwall Canyon Trail,
    Mayfair Ranch Trail, Needlegrass Trail, Serpentine Loop Trail.
Loaded 2,708 iNaturalist observations of quality-grade 'research' within bounding box.
Excluded 1,694 observations not along route and 13 with low accuracy.
Loaded 829 taxa.
Waypoints written to './Rancho_Canada_del_Oro_Open_Space_Preserve_all_research_waypoints.gpx'.
Table written to './Rancho_Canada_del_Oro_Open_Space_Preserve_all_research_observations.html'.
Map written to './Rancho_Canada_del_Oro_Open_Space_Preserve_all_research_mapped_observations.html'.

This tools finds named trails along this route. It loads iNaturalist observations from the area of the hike and discards those that are not along the trails. It writes three output files, a waypoints file, a table of observations, and an interactive map. Both the table and the map will pop up in a browser.

The waypoint file can be loaded into the free offline navigation app OsmAnd. This will allow this offline navigation app to display the iNaturalist observations along the hiking trails.

The table of observations lists all the organisms that have been observed along the trails along with the trail names they are on. The table for the mammals seen in this park looks like this:

Scientific Name Common Name Observations
Canidae Canids
Canis latrans Coyote Mayfair Ranch Trail: 38860133, 38860889
Urocyon cinereoargenteus Gray Fox Mayfair Ranch Trail: 39391329
Cervidae Deer
Odocoileus hemionus ssp. columbianus Columbian Black-Tailed Deer Casa Loma Road: 80058758; Little Llagas Creek Trail: 68891936; Mayfair Ranch Trail: 19113219, 21319391, 44158629
Cricetidae Hamsters, Voles, Lemmings, and Allies
Neotoma fuscipes Dusky-Footed Woodrat Mayfair Ranch Trail: 52963985
Felidae Felids
Lynx rufus Bobcat Mayfair Ranch Trail: 15630740, 15689757, 38861135
Geomyidae Pocket Gophers
Thomomys bottae Botta's Pocket Gopher Mayfair Ranch Trail: 38869384, 38875049
Leporidae Hares and Rabbits
Sylvilagus bachmani Brush Rabbit Mayfair Ranch Trail: 73152597, 74462983
Sciuridae Squirrels
Neotamias merriami Merriam's Chipmunk Longwall Canyon Trail: 42605223; Mayfair Ranch Trail: 132863, 46538314
Otospermophilus beecheyi California Ground Squirrel Casa Loma Road: 47200360; Mayfair Ranch Trail: 2328803, 15629491, 53667091
Sciurus griseus Western Gray Squirrel Mayfair Ranch Trail: 73152599

The numbers are the observation ids; a click opens them on the iNaturalist website.

The interactive map shows the route and the iNaturalist observations along the hike. Like the iNaturalist website, the markers on the interactive map have different colors for different iconic taxa, e.g. markers for plants are green. Hoovering the mouse over a marker shows the identification, a click on a marker shows a thumbnail picture, the identification, the observer, the date and a special status like invasive or introduced. A further click on that thumbnail opens the observation in the iNaturalist website in another browser window.

Command-line options

This script is a command-line tool. It is called with options and file names as arguments. These options are supported:

usage: inat_trails.py [-h] [--quality_grade QUALITY_GRADE] [--iconic_taxon ICONIC_TAXON] gpx_file [gpx_file ...]

positional arguments:
  gpx_file              Import GPS track from .gpx file.

optional arguments:
  -h, --help            show this help message and exit
  --quality_grade QUALITY_GRADE
                        Observation quality-grade, values: all, casual, needs_id, research; default research.
  --iconic_taxon ICONIC_TAXON
                        Iconic taxon, values: all, Actinopterygii, Amphibia, Animalia, Arachnida, Aves, Chromista,
                        Fungi, Insecta, Mammalia, Mollusca, Plantae, Protozoa, Reptilia; default all.

Option --quality_grade spcifies the desired quality-grade of the observations to show. By default, only research-grade observations are shown. Alternatively, all quality grades, or only casual and needs_id can be requested.

Option --iconic_taxon allows to restrict the observations to an iconic taxon. This can be used to display observations of e.g. only birds or only plants.

Dependencies

A handful of dependencies need to be installed in order for inat_trails.py to run. Besides Python 3.7 or later, a few packages are needed. On Ubuntu or other Debian-based Linux distributions the dependencies can be installed with:

sudo apt install --yes python3-pip python3-aiohttp python3-fiona python3-shapely
pip3 install folium

On other operating systems, Python 3.7 or later and pip need to be installed first and then the dependencies can be installed with:

pip install aiohttp folium shapely
pip install fiona

Note that pip fails to install fiona on Windows. This blogpost has a workaround.

When appropriate pip3 should be called instead of pip to avoid accidentally installing packages for Python 2.

WebGL2 powered geospatial visualization layers

deck.gl | Website WebGL2-powered, highly performant large-scale data visualization deck.gl is designed to simplify high-performance, WebGL-based visua

Vis.gl 10.5k Jan 08, 2023
python toolbox for visualizing geographical data and making maps

geoplotlib is a python toolbox for visualizing geographical data and making maps data = read_csv('data/bus.csv') geoplotlib.dot(data) geoplotlib.show(

Andrea Cuttone 976 Dec 11, 2022
Solving the Traveling Salesman Problem using Self-Organizing Maps

Solving the Traveling Salesman Problem using Self-Organizing Maps This repository contains an implementation of a Self Organizing Map that can be used

Diego Vicente 3.1k Dec 31, 2022
Extract GoPro highlights and GPMF data.

Python script that parses the gpmd stream for GOPRO moov track (MP4) and extract the GPS info into a GPX (and kml) file.

Chris Auron 2 May 13, 2022
Centroids as a Service

Centroids! This application reads a valid geojson FeatureCollection and returns a valid geojson FeatureColleciton of centroids. In the output: All pro

Lyzi Diamond 20 Aug 29, 2021
Using SQLAlchemy with spatial databases

GeoAlchemy GIS Support for SQLAlchemy. Introduction GeoAlchemy is an extension of SQLAlchemy. It provides support for Geospatial data types at the ORM

109 Dec 01, 2022
Helping data scientists better understand their datasets and models in text classification. With love from ServiceNow.

Azimuth, an open-source dataset and error analysis tool for text classification, with love from ServiceNow. Overview Azimuth is an open source applica

ServiceNow 145 Dec 23, 2022
When traveling in the backcountry during winter time, updating yourself on current and recent weather data is important to understand likely avalanche danger.

Weather Data When traveling in the backcountry during winter time, updating yourself on current and recent weather data is important to understand lik

Trevor Allen 0 Jan 02, 2022
Geocode rows in a SQLite database table

Geocode rows in a SQLite database table

Chris Amico 225 Dec 08, 2022
Python interface to PROJ (cartographic projections and coordinate transformations library)

pyproj Python interface to PROJ (cartographic projections and coordinate transformations library). Documentation Stable: http://pyproj4.github.io/pypr

832 Dec 31, 2022
Geospatial web application developed uisng earthengine, geemap, and streamlit.

geospatial-streamlit Geospatial web applications developed uisng earthengine, geemap, and streamlit. App 1 - Land Surface Temperature A simple, code-f

13 Nov 27, 2022
Daily social mapping project in November 2021. Maps made using PyGMT whenever possible.

Daily social mapping project in November 2021. Maps made using PyGMT whenever possible.

Wei Ji 20 Nov 24, 2022
A Django application that provides country choices for use with forms, flag icons static files, and a country field for models.

Django Countries A Django application that provides country choices for use with forms, flag icons static files, and a country field for models. Insta

Chris Beaven 1.2k Jan 03, 2023
Wraps GEOS geometry functions in numpy ufuncs.

PyGEOS PyGEOS is a C/Python library with vectorized geometry functions. The geometry operations are done in the open-source geometry library GEOS. PyG

362 Dec 23, 2022
Imports VZD (Latvian State Land Service) open data into postgis enabled database

Python script main.py downloads and imports Latvian addresses into PostgreSQL database. Data contains parishes, counties, cities, towns, and streets.

Kaspars Foigts 7 Oct 26, 2022
This app displays interesting statistical weather records and trends which can be used in climate related research including study of global warming.

This app displays interesting statistical weather records and trends which can be used in climate related research including study of global warming.

0 Dec 27, 2021
Get Landsat surface reflectance time-series from google earth engine

geextract Google Earth Engine data extraction tool. Quickly obtain Landsat multispectral time-series for exploratory analysis and algorithm testing On

Loïc Dutrieux 50 Dec 15, 2022
Open Data Cube analyses continental scale Earth Observation data through time

Open Data Cube Core Overview The Open Data Cube Core provides an integrated gridded data analysis environment for decades of analysis ready earth obse

Open Data Cube 410 Dec 13, 2022
Obtain a GNSS position fix from an 11-millisecond raw GNSS signal snapshot

Obtain a GNSS position fix from an 11-millisecond raw GNSS signal snapshot without any prior knowledge about the position of the receiver and only coarse knowledge about the time.

Jonas Beuchert 2 Nov 17, 2022
WhiteboxTools Python Frontend

whitebox-python Important Note This repository is related to the WhiteboxTools Python Frontend only. You can report issues to this repo if you have pr

Qiusheng Wu 304 Dec 15, 2022