This repository contains the source code for the Open Water Foundation (OWF) GeoProcessor software. The GeoProcessor is Python software that leverages QGIS Python packages to provide features to automate processing geospatial data.
See the following online user and developer documentation:
The following sections provide a summary of the project repository and getting started:
The following folder structure is recommended for GeoProcessor development.
Top-level folders should be created as necessary.
The following folder structure clearly separates user files,
development area (owf-dev/
),
product (GeoProcessor/
), repositories for the product (git-repos/
),
and specific repositories for the product (owf-dev-geoprocessor-*/
).
C:\Users\user\ User's home folder for Windows.
/c/Users/user/ User's home folder for Git Bash.
/cygdrive/C/Users/user/ User's home folder for Cygwin.
/home/user/ User's home folder for Linux.
owf-dev/ Work done on Open Water Foundation products.
GeoProcessor/ GeoProcessor product.
git-repos/ Git repositories for the GeoProcessor.
owf-app-geoprocessor-python/ GeoProcessor code repository.
owf-app-geoprocessor-python-doc-dev/ GeoProcessor user documentation repository.
owf-app-geoprocessor-python-doc-user/ GeoProcessor developer documentation repository.
owf-app-geoprocessor-python-test/ Functional test repository (GeoProcessor command files).
Separate repositories have been created for documentation and functional tests to
limit each repository's size and complexity and to facilitate contributions by different people.
The owf-util-git utilities are being developed
to facilitate use of Git and useful scripts are copied into build-util/git-util
(see below).
The following summarizes the folder structure for this (owf-app-geoprocessor-python
) repository.
OWF uses PyCharm Community Edition IDE for development
and configures the repository to ignore PyCharm files, which can be configured for a new developer.
Other developers can use a different Python development environment tool;
however, OWF may not have resources to troubleshoot.
Folders and files in repositories will be automatically created when the repository is cloned
or when PyCharm is used.
Folders that do not contain source files are marked by right-clicking on folders and using
Mark Director as / Excluded.
Only the top-level src
folder should be treated as code.
owf-app-geoprocessor-python/ The GeoProcessor code and documentation repository.
.git/ Standard Git folder for repository files (DO NOT TOUCH!).
.gitattributes/ Standard Git configuration file for repository (for portability).
.gitignore/ Standard Git configuration file to ignore dynamic working files.
.idea/ PyCharm project files (ignored using .gitignore).
build-util/ Scripts to help in the GeoProcessor development environment.
LICENSE.md GeoProcessor license (GPL v3).
README.md This README file.
requirements/ Python package requirements lists for GeoProcessor virtual environment.
requirements-qgis-N.N.txt Pytyon package requiremetns lsit for GeoProcessor virtual environment,
QGIS version N.N.
scripts/ Scripts to run GeoProcessor in the development and deployed environments.
src/ Source Python files (root folder for code).
geoprocessor/ Main module folder for GeoProcessor software.
app/ Main GeoProcessor application module.
commands/ Modules containing GeoProcessor commands.
core/ Core GeoProcessor module, containing the processor.
resources/ Resources that support the software.
images/ Images including icons that should be distributed at runtime.
notices/ License notices to be inserted into code files.
qt-stylesheets/ Qt stylesheets that customize the UI, to be distributed.
ui/ User interface modules, using Qt.
util/ Utility modules.
venv/ Virtual environments used by PyCharm (ignored using .gitignore).
venv-qgis-3.10-python37/ Example virtual environment used for development.
x-venv/ Old virtual environments, will be deleted at some point (ignored using .gitignore).
venv-qgis-python37/ Virtual environment used by PyCharm (ignored using .gitignore),
old convention that is being phased out.
z-local-notes/ Use for local files that won't be committed to the repository.
The following are resources related to the GeoProcessor project, listed by repository, with links to source and deployed versions.
Repository | Description | Deployed Copy |
---|---|---|
owf-app-geoprocessor-python (this repository) |
GeoProcessor code. | GeoProcessor Downloads |
owf-app-geoprocessor-python-doc-dev |
GeoProcessor developer documentation. | GeoProcessor Developer Documentation |
owf-app-geoprocessor-python-doc-user |
GeoProcessor user documentation. | GeoProcessor User Documentation |
owf-app-geoprocessor-python-test |
GeoProcessor automated tests. | Download from repository using clone or download zip file from GitHub website. |
The development environment consists of the following. OWF has developed the GeoProcessor on Windows using Cygwin but other development environments will be supported as resources allow.
See the published GeoProcessor Developer Documentation.
OWF uses a "feature branching Git workflow" for this project, as illustrated in the following resources.
The master
branch contains the most current commits, with functionality tested before committing,
but should not be considered bulletproof.
Periodic releases are made and are indicated by tags on the master branch.
A small number of committers are responsible for maintaining the integrity of the master branch.
A more complex workflow with development branch may be implemented in the future. However, the focus at OWF is not on supporting a large open source development effort but instead to provide a useful product to software users.
Unit testing of module functions has not been a major focus yet but will be implemented using pytest, consistent with normal Python conventions.
The GeoProcessor contains an internal functional testing framework described in the following resources:
Contributions to this project can be submitted using the following options.
The GeoProcessor is licensed under the GPL v3+ license. See the GPL v3 license.
OWF staff are the lead developers/maintainers for the GeoProcessor.
See the User Documentation Release Notes.