docs/assets/animated-bee-illustration-png-clip-art.png

Nyuki: A Geospatial Toolkit for Humans

https://travis-ci.org/00krishna-tools/nyuki.svg?branch=master https://ci.appveyor.com/api/projects/status/akr8yxfous98dlrl?svg=true https://coveralls.io/repos/github/00krishna-tools/nyuki/badge.svg?branch=master https://codecov.io/gh/00krishna-tools/nyuki/branch/master/graph/badge.svg Documentation Status

“Nyuki” translates to “bee” in Swahili, but is also the word used to refer to aerial drones. While working on a project using aerial drone imagery for flood damage assessment with DataKind and WeRobotics we found that using many common python geospatial libraries had a steep learning curve and were confusing to use. So we developed some simple command line tools and library functions to simplify common tasks and dramatically accelerate our development.

The other challenge with processing large aerial drone images was that most GIS software such as QGIS or ArcGIS often crashed while processing large images. Aerial drones can easily produce 50,000 x 50,000 pixel images or more. Because processing such large images is memory and processor intensive, some common GIS software can often fail during processing. With nyuki we rely on the command line which has a much lighter memory footprint and is easier to kill if something is taking too long.

Nyuki is developed for python 3.6 or greater and runs on Windows, MacOS, and Linux operating systems.

We also wanted to thank all of the developers who built the libraries that we use in nyuki. Writing geospatial libraries is hard work, and the folks developing these core libraries have done a really outstanding job.

🧐 About

Nyuki is a command line tool that simplifies common and easy image processing tasks. The tools implemented so far include:

  • Reprojecting geotiff and vector files

  • Resampling geotiff files to higher or lower resolution

  • Compressing geotiff files to save space

🏁 Getting Started

The “Installing” section below gives a brief sketch of how to install the nyuki package. More detailed instructions are included in the “Installation” second of the package documentation.

Learning to use nyuki assumes that the reader has a beginner level of understand of geospatial data including the difference between raster file and vector files, the basics of coordinate reference systems, and some familiarity with common GIS software such as QGIS or ESRI ArcGIS.

Learning nyuki is as simple as following the tutorial.

Installing

Nyuki relies on the open source Anaconda/Miniconda python distribution for scientific computing. Many of the python and C++ libraries that nyuki depends upon are difficult to install due to complicated dependencies between package or the need to compile C++ files. Hence we chose to use a more robust package manager: conda.

Once conda is installed from the following link , the user can create new virtual environments and install packages like nyuki into those environments. Conda packages are stored in different public or private channels, depending on whether the developer intends a package for public use, or for a limited group of users. Nyuki is currently located in krishnab75 Anaconda channel but will soon be added to the widely conda-forge channel.

Assuming that the user has successfully installed the Anaconda/miniconda python distribution on their computer, the user may install nyuki in a stand-alone environment using

conda create -n nyuki-env -c krishnab75 nyuki

This will create a new environment named nyuki-env into which the nyuki application will be installed. Follow the prompts for the install and answer “yes” at the install prompt. Nyuki will install a number of dependencies, so it may take a few minutes to complete the installation.

Once installation is complete, you can activate the environment and begin to use nyuki

conda activate nyuki-env

The user should now be in the nyuki-env python environment. To access nyuki’s commands and tools, type

nyuki --help

🔧 Running the tests

Explain how to run the automated tests for this system.

Break down into end to end tests

Explain what these tests test and why

Give an example

And coding style tests

Explain what these tests test and why

Give an example

🎈 Usage

Add notes about how to use the system.

⛏️ Built Using

  • Click - Command Line Interface

  • Rasterio - Geospatial Library for Rasters

  • Geopandas Geospatial Library for Vector data

✍️ Authors

See also the list of