GeoPick is an open source online companion tool to the Georeferencing Best Practices (Chapman A.D. and Wieczorek J.R.) that follows its recommendations and practices. Its idea started within work done in the Museu de Ciències Naturals de Barcelona (MCNB) and the MOBILISE Cost Action. It is meant to provide georeferencers with a simple, easy-to-use yet powerful tool that helps them to follow best georeferencing practices and data standards (i.e., Darwin Core). The guiding principle behind its design is to remain as simple and user-friendly as possible.
The tool implements both the point-radius and shape georeferencing methods.
Point-radius method. Once the polygon or line/path have been digitised, the tool automatically calculates and displays the centroid and the uncertainty. In the case that the centroid does not fall on or within the polygon boundaries or on top of the line path, i.e., a concave geometry, the tool automatically calculates the corrected centre and places it to the nearest point on the georeferenced line or polygon. It then calculates the smallest enclosing circle to obtain the coordinates uncertainty. A detailed explanation of this process can be found in this Jupyter notebook.
Shape method. The tool partially implements the shape method. The digitised polygon or line/path are kept and exported in the Darwin Core dwc:footprintWKT format. To run:
Geometries can be imported via Well-Known Text (WKT) format; used by the Darwin Core dwc:footprintWKT term. Please note that MULTIPOINT and GEOMETRYCOLLECTION types are not supported.
Data is exported in the Darwin Core format for location data, including the coordinate uncertainty in metres and the digitised shape in the Text format defined by ISO 2016. Data can be easily copied and pasted into a spreadsheet.
The tool allows the user to digitise polygons, lines and points, at any zoom level, to respresent descriptions of polygonal and lineal localities. Once done, the vertices of both graphical objects can be edited and moved around. In the case of a point, it can be moved around and the radius of uncertainty can be modified.
Georeferencing can be done using OpenStreetMap, or any of the following Google views: Default, Terrain, Satellite, or Hybrid.
The tool uses the OpenStreetMap Nominatim API to help do a first approximation to the location of the site to be georeferenced. The polygon returned by the OpenStreetMap Nominatim API can be easily imported and used.
The map coordinates are shown when moving the cursor around, and the scale is also shown when zooming in and out. Coordinates are in decimal degrees and the scale is shown in either kilometres and miles, or metres and feet, depending on the zoom level.
Each georeferenced location is assigned a unique locationID (http://rs.tdwg.org/dwc/terms/locationID) and can be used to share georeferences among GeoPick users. GeoPick provides with a share link in the form of:
https://geopick.gbif.org/?locationid=<locationID>
GeoPick gives coordinates with seven decimal places following Georeferencing Best Practices (Chapman and Wieczorek, 2022) and Georeferencing Quick Reference Guide (Zermoglio et al., 2022). This allows preservation of the correct coordinates in all formats regardless of how many transformations are done (Bloom et al., 2020; Wiezorek et al., 2010). Accordingly, GeoPick sets coordinate precision to a fixed value of 0.0000001, which is a decimal representation of the number of decimals given with the coordinates (Darwin Core Maintenance Group, 2021). Please also note that as in this version of GeoPick, coordinate uncertainty refers only to the radius of the enclosing circle of the geometry and does not take into account other sources of uncertainty such as those derived from measurement accuracy and the accuracy of the underlying maps. To add this extra source of uncertainty please access the Georeferencing Calculator (Wieczorek C and Wieczorek J.R., 2021) and its manual (Bloom et al., 2020).
Marcer A., Escobar A., Uribe F., Chapman A.D. and Wieczorek J.R. (2023). GeoPick: Enhancing georeferencing efficiency through best practices [web application, version 1.0.0], URL: https://geopick.gbif.org
GeoPick is provided "as is" without warranty or liability for any purpose. Though developed with all the good intentions to make it correct and fit-for-purpose, that does not mean it is completely error-free. The authors are committed to do their best to correct errors, but can not guarantee their quick resolution.
You may give us feedback on bugs or desired enhancements by sending an email to geopick [at] creaf [dot] uab [dot] cat. We will do our best to solve any existing bugs. Please understand, though, that we will not respond to all emails and will not be able to satisfy all suggested enhancements. However, your input will be of much value when considering future developments.
For those acquainted with GitHub, you may use GitHub's interface to raise issues. Please set the label to Feedback from user
NOTE: The 'Dockerfile' file is used to configure and run the API in GeoPick's public host. It is not needed for deploying your own instance.
To download, install, and run the application, please follow these steps:
Requirements: git
git clone https://github.com/rtdeb/GeoPick.git
GeoPick uses a PostgreSQL database to store georeference data. Download and install an instance of the database.
We recommend creating a dedicated database and user for GeoPick. First, we create a user called 'geopick' (you can choose any name you like):
CREATE ROLE geopick LOGIN PASSWORD 'mypassword' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
This user will be the owner of the database and GeoPick will use it to open connections. Now, create the database. From the shell, as the postgresql administrative user (usually postgres) do:
createdb geopick -O geopick
We created a database called geopick (again, use any name you like) and assigned its ownership to the previously created 'geopick' user.
Create a .env file using the provided .env_example file. Change the key values to suit your installation.
Look for an entry called 'SQLALCHEMY_DATABASE_URI' in your .env file. This key contains the connection details for the postgresql database. The string has the following structure:
'postgres://geopick_username:geopick_password@database_address:database_port/database_name'
Assuming that we take the values from the example, and PostgreSQL is running on localhost at the usual port (5432), our string would look like this:
'postgres://geopick:mypassword@localhost:5432/geopick'
Requirements: Python version 3.11
You can configure some API parameters by setting an .env file at the GeoPick's root directory. You can see an example of it in this repo's .env_example
From the root project folder, run:
python -m venv venv
This will create a folder named venv containing an empty python virtual environment folder.
To activate the virtual environment, do
source venv/bin/activate
pip install -r requirements.txt
The database we created in step 2 is completely empty. We need to create the basic tables, to do this, activate the virtual environment from the root folder of the project:
source venv/bin/activate
Then go to the flask_api folder:
cd flask_api
And run the command:
flask db upgrade
This will apply migrations and create the necessary tables. Lastly, we need to create the admin user. To do this, execute the command:
flask create_superuser
This will create a user in the database using as username the key USERNAME and the key PASSWORD present in your .env file.
From the root directory, and with the recently created virtual environment active, do
cd flask_api
flask run
Requirements: node v16.16.0
You can change the port by modifying the webpack.dev.js file before executing the command npm run start. The default port is set at 8085.
cd GeoPick
npm install
npm run start
Once done, you can access the application at http://localhost:8085
, or at the web server address where you deployed the application.
- Front-end code refactoring
- API Documentation
- Added new compulsory Darwin Core field locality.
- Added new automatically assigned Darwin Core field locationID.
- Replaced the toastr javascript library for notifications for the jquery-confirm JQuery plugin.
- Added new button Validate for validation of georeferences before sharing or exporting.
- Added georeference sharing functionality.
- Added PostgreSQL back-end database, which can store georeferences in GeoJSON format for sharing via the applications API.
- Added fields locationID and locality to the exported Darwin Core format.
- Restored progress wheel.
- API converted to Python, performance improved.
- Corrected misplacement of warning message box when copying data if the WKT text is too large.
- Changed github address in about.html.
- Documented new shortcuts in Help.
- Solved regression misplacing WKT and Delete dialog boxes.
- Changed language in html file form 'es' to 'en' to prevent browsers from prompting to translate from spanish.
- Search box now keeps the latest search and this can be copied to the clipboard.
Bing Maps layers
First released version
Point-radius and shape georeferencing methods
On-screen digitizing and editing of points, lines and polygons
Search and capture geometries from Nominatim (OpenStreetMap Data API)
Calculation of smallest enclosing circle (uncertainty) and corrected center
Well-Known Text import
Data export in Darwin Core format via clipboard
Screen responsiveness to different resolutions