Skip to main content

Satellie extraction and cutter

Project description

Introduction

This python code is intended to automate/make easier the data extraction and cutting of satellite data from the netherlands space office (NSO). NSO provides free satellite images from the Netherlands, a downside however is that the NSO provides a very large region and as such a very large data file. This leads to a unnecessary large amount of data especially if you only want to study a smaller specific region.

This python code cuts a selected region out of the original satellite image based on a geojson, provided that the selected region is smaller than the original file. And then saves this cutout thus reducing the unnecessary saved data. A option can also be set for calculating the Normalized difference vegetation index (NVDI, used in for example crop analysis) of the cutout region. We are working on extracting more variables on satellite images!

This image gives a illustration: Alt text

Getting Started

  1. Get a NSO account, register at https://satellietdataportaal.nl/register.php
  2. First get a GeoJSON file of the region you want to cut. Geojson.io can you help you with that. Note the coordinates have to be in WGS84! ( Which should be standard for a geojson.)
  3. Make a instance of nso_geojsonregion with instance of the geojson region you have, where you want to store the cropped files and the NSO account based on step 0.
  4. Retrieve download links for the specific region you want to have.
  5. Download the found links.

Example code.

# This the way the import nso.
import satellite_images_nso.api.nso_georegion as nso
path_geojson = "/src/example/example.geojson"
# The first parameter is the path to the geojson, the second the map where the cropped satellite data will be installed
georegion = nso.nso_georegion(path_geojson,"/src/output/",\
                              YOUR_USER_NAME_HERE,\
                             YOUR_PASSWORD_HERE)

# This method fetches all the download links to all the satelliet images which contain the region in the geojson.
# Filter out for which satellite you want to download links from! SV for example stands for the Suoerview satellite
links = georegion.retrieve_download_links()


# Downloads a satelliet image from the NSO, make a crop out of it so it fits the geojson region and calculate the NVDI index.
# The output will stored in the designated output folder.
georegion.execute_link(links[0])
# The parameters are : execute_link(self, link, delete_zip_file = True, delete_source_files = True, check_if_file_exists = True)
# With the parameters you can decide if you want to keep the original satellite files, such  as wether to keep the downloaded zip file or the extracted source files from which the cutout will be made.

# The sat_manipulator gives other handy transmations on satellite data.
import satellite_images_nso.api.sat_manipulator as sat_manipulator

# This function reads a .tif file, which is a format the satellite data is stored in,  and converts it to a pixel based geopandas dataframe.
# For machine learning purposes.
path_to_vector = "path/to/folder/*.tif"
geo_df_pixel = sat_manipulator.tranform_vector_to_pixel_gpdf(path_to_vector)

See also the jupyter notebook in src/nso_notebook_example.ipynb

Installation.

Install this package with: pip install satellite_images_nso

Be sure you've installed GDAL already on your computer. Other python dependencies will install automatically (Fiona>=1.8.13, GDAL>=3.0.4, geopandas>=0.9.0, rasterio>=1.1.3 Shapely>=1.7.0). Or look into the requirements.txt file.

If you don't have gdal installed on your computer or if it doesn't work follow the instruction below.

Install GDAL on Windows

If you are a Windows user you have to install the GDAL dependency yourself via a wheels.

Instead install these wheels with pip install XXX.XX.XX.whl.

Go to https://www.lfd.uci.edu/~gohlke/pythonlibs/ for the wheels of these depencies:

Depencencies are : "Fiona>=1.8.13", "GDAL>=3.0.4", "geopandas>=0.9.0","rasterio>=1.1.3","Shapely>=1.7.0"

Install GDAL on MacOS

Install GDAL by using Brew:
brew install GDAL

Run as a docker container

docker run -it --entrypoint bash dockerhubpzh/satellite_images_nso_docker

See: https://hub.docker.com/r/dockerhubpzh/satellite_images_nso_docker

Local development

Run rebuild.bat to build and install package on local computer.

Author

Michael de Winter

Daniel Overdevest

Yilong Wen

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

satellite_images_nso-1.1.14.tar.gz (13.6 kB view details)

Uploaded Source

Built Distribution

satellite_images_nso-1.1.14-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file satellite_images_nso-1.1.14.tar.gz.

File metadata

  • Download URL: satellite_images_nso-1.1.14.tar.gz
  • Upload date:
  • Size: 13.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for satellite_images_nso-1.1.14.tar.gz
Algorithm Hash digest
SHA256 4ad9972af79e92f3e2f7cb281a167f8c29567fed51706be83625c60aa3ec233d
MD5 b94ffc3796b74722bfc5fae837370a76
BLAKE2b-256 7c464b67c959fafc3d743066a0188c439a3a46c3155f619878ae9a86e44abf4d

See more details on using hashes here.

File details

Details for the file satellite_images_nso-1.1.14-py3-none-any.whl.

File metadata

  • Download URL: satellite_images_nso-1.1.14-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.0 importlib_metadata/3.7.3 packaging/20.9 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2

File hashes

Hashes for satellite_images_nso-1.1.14-py3-none-any.whl
Algorithm Hash digest
SHA256 b2352d81c244b9d4f3398bf748a2cc2e6431fe1ec11f20da743e2426d0a3affe
MD5 30f2d1e7b7943dd3e979910ce6413ecb
BLAKE2b-256 4babfd877d0d0fef761805ea1d7d6149be3a3f31a466e7e50e470c623f749ab5

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page