mirror of
https://github.com/heyarne/earth-observation-for-journalism.git
synced 2026-05-06 19:13:40 +02:00
Initial commit
This commit is contained in:
commit
09680432d2
12 changed files with 46756 additions and 0 deletions
154
.gitignore
vendored
Normal file
154
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,154 @@
|
||||||
|
# ignore any raster files
|
||||||
|
*.tiff
|
||||||
|
*.zip
|
||||||
|
*.SAFE
|
||||||
|
|
||||||
|
# Created by https://www.toptal.com/developers/gitignore/api/python,jupyternotebooks
|
||||||
|
# Edit at https://www.toptal.com/developers/gitignore?templates=python,jupyternotebooks
|
||||||
|
|
||||||
|
### JupyterNotebooks ###
|
||||||
|
# gitignore template for Jupyter Notebooks
|
||||||
|
# website: http://jupyter.org/
|
||||||
|
|
||||||
|
.ipynb_checkpoints
|
||||||
|
*/.ipynb_checkpoints/*
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
profile_default/
|
||||||
|
ipython_config.py
|
||||||
|
|
||||||
|
# Remove previous ipynb_checkpoints
|
||||||
|
# git rm -r .ipynb_checkpoints/
|
||||||
|
|
||||||
|
### Python ###
|
||||||
|
# Byte-compiled / optimized / DLL files
|
||||||
|
__pycache__/
|
||||||
|
*.py[cod]
|
||||||
|
*$py.class
|
||||||
|
|
||||||
|
# C extensions
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Distribution / packaging
|
||||||
|
.Python
|
||||||
|
build/
|
||||||
|
develop-eggs/
|
||||||
|
dist/
|
||||||
|
downloads/
|
||||||
|
eggs/
|
||||||
|
.eggs/
|
||||||
|
lib/
|
||||||
|
lib64/
|
||||||
|
parts/
|
||||||
|
sdist/
|
||||||
|
var/
|
||||||
|
wheels/
|
||||||
|
pip-wheel-metadata/
|
||||||
|
share/python-wheels/
|
||||||
|
*.egg-info/
|
||||||
|
.installed.cfg
|
||||||
|
*.egg
|
||||||
|
MANIFEST
|
||||||
|
|
||||||
|
# PyInstaller
|
||||||
|
# Usually these files are written by a python script from a template
|
||||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||||
|
*.manifest
|
||||||
|
*.spec
|
||||||
|
|
||||||
|
# Installer logs
|
||||||
|
pip-log.txt
|
||||||
|
pip-delete-this-directory.txt
|
||||||
|
|
||||||
|
# Unit test / coverage reports
|
||||||
|
htmlcov/
|
||||||
|
.tox/
|
||||||
|
.nox/
|
||||||
|
.coverage
|
||||||
|
.coverage.*
|
||||||
|
.cache
|
||||||
|
nosetests.xml
|
||||||
|
coverage.xml
|
||||||
|
*.cover
|
||||||
|
*.py,cover
|
||||||
|
.hypothesis/
|
||||||
|
.pytest_cache/
|
||||||
|
|
||||||
|
# Translations
|
||||||
|
*.mo
|
||||||
|
*.pot
|
||||||
|
|
||||||
|
# Django stuff:
|
||||||
|
*.log
|
||||||
|
local_settings.py
|
||||||
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
|
# Flask stuff:
|
||||||
|
instance/
|
||||||
|
.webassets-cache
|
||||||
|
|
||||||
|
# Scrapy stuff:
|
||||||
|
.scrapy
|
||||||
|
|
||||||
|
# Sphinx documentation
|
||||||
|
docs/_build/
|
||||||
|
|
||||||
|
# PyBuilder
|
||||||
|
target/
|
||||||
|
|
||||||
|
# Jupyter Notebook
|
||||||
|
|
||||||
|
# IPython
|
||||||
|
|
||||||
|
# pyenv
|
||||||
|
.python-version
|
||||||
|
|
||||||
|
# pipenv
|
||||||
|
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||||
|
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||||
|
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||||
|
# install all needed dependencies.
|
||||||
|
#Pipfile.lock
|
||||||
|
|
||||||
|
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||||
|
__pypackages__/
|
||||||
|
|
||||||
|
# Celery stuff
|
||||||
|
celerybeat-schedule
|
||||||
|
celerybeat.pid
|
||||||
|
|
||||||
|
# SageMath parsed files
|
||||||
|
*.sage.py
|
||||||
|
|
||||||
|
# Environments
|
||||||
|
.env
|
||||||
|
.venv
|
||||||
|
env/
|
||||||
|
venv/
|
||||||
|
ENV/
|
||||||
|
env.bak/
|
||||||
|
venv.bak/
|
||||||
|
|
||||||
|
# Spyder project settings
|
||||||
|
.spyderproject
|
||||||
|
.spyproject
|
||||||
|
|
||||||
|
# Rope project settings
|
||||||
|
.ropeproject
|
||||||
|
|
||||||
|
# mkdocs documentation
|
||||||
|
/site
|
||||||
|
|
||||||
|
# mypy
|
||||||
|
.mypy_cache/
|
||||||
|
.dmypy.json
|
||||||
|
dmypy.json
|
||||||
|
|
||||||
|
# Pyre type checker
|
||||||
|
.pyre/
|
||||||
|
|
||||||
|
# pytype static type analyzer
|
||||||
|
.pytype/
|
||||||
|
|
||||||
|
# End of https://www.toptal.com/developers/gitignore/api/python,jupyternotebooks
|
||||||
44132
Cotbusser Ostsee/00 Download.ipynb
Normal file
44132
Cotbusser Ostsee/00 Download.ipynb
Normal file
File diff suppressed because it is too large
Load diff
100
Cotbusser Ostsee/01 SNAP via Python.ipynb
Normal file
100
Cotbusser Ostsee/01 SNAP via Python.ipynb
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
{
|
||||||
|
"cells": [
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"In order to configure this, run the following command:\n",
|
||||||
|
"\n",
|
||||||
|
"```\n",
|
||||||
|
"/usr/local/snap/bin/snapp-conf $(wich python2)\n",
|
||||||
|
"```"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 1,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"import sys\n",
|
||||||
|
"sys.path.append('/home/rus/.anaconda/lib/python3.7/lib/site-packages')"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": 2,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": [
|
||||||
|
"from snappy import ProductIO"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"<span color='#fbb'>*Important:*</span> This only works in Pyhton 2 and is therefore not further explored. Trying the above command with `python3` yielded the following error:"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "markdown",
|
||||||
|
"metadata": {},
|
||||||
|
"source": [
|
||||||
|
"```\n",
|
||||||
|
"\tat org.esa.snap.python.PyBridge.configureJpy(PyBridge.java:232)\n",
|
||||||
|
"\tat org.esa.snap.python.PyBridge.installPythonModule(PyBridge.java:149)\n",
|
||||||
|
"\tat org.esa.snap.rcp.cli.SnapArgsProcessor.processPython(SnapArgsProcessor.java:103)\n",
|
||||||
|
"\tat org.esa.snap.rcp.cli.SnapArgsProcessor.process(SnapArgsProcessor.java:49)\n",
|
||||||
|
"\tat org.netbeans.modules.sendopts.DefaultProcessor.process(DefaultProcessor.java:202)\n",
|
||||||
|
"\tat org.netbeans.spi.sendopts.Option$1.process(Option.java:387)\n",
|
||||||
|
"\tat org.netbeans.api.sendopts.CommandLine.process(CommandLine.java:317)\n",
|
||||||
|
"\tat org.netbeans.modules.sendopts.HandlerImpl.execute(HandlerImpl.java:62)\n",
|
||||||
|
"\tat org.netbeans.modules.sendopts.Handler.cli(Handler.java:69)\n",
|
||||||
|
"\tat org.netbeans.CLIHandler.notifyHandlers(CLIHandler.java:234)\n",
|
||||||
|
"\tat org.netbeans.core.startup.CLICoreBridge.cli(CLICoreBridge.java:82)\n",
|
||||||
|
"\tat org.netbeans.CLIHandler.notifyHandlers(CLIHandler.java:234)\n",
|
||||||
|
"\tat org.netbeans.CLIHandler$1.exec(CLIHandler.java:268)\n",
|
||||||
|
"\tat org.netbeans.CLIHandler.finishInitialization(CLIHandler.java:447)\n",
|
||||||
|
"\tat org.netbeans.MainImpl.finishInitialization(MainImpl.java:256)\n",
|
||||||
|
"\tat org.netbeans.Main.finishInitialization(Main.java:92)\n",
|
||||||
|
"\tat org.netbeans.core.startup.Main.start(Main.java:316)\n",
|
||||||
|
"\tat org.netbeans.core.startup.TopThreadGroup.run(TopThreadGroup.java:123)\n",
|
||||||
|
"\tat java.lang.Thread.run(Thread.java:748)\n",
|
||||||
|
"Python configuration error: Python configuration failed.\n",
|
||||||
|
"Command [/home/rus/.anaconda/bin/python3 ./snappyutil.py --snap_home /usr/local/snap --java_module /home/rus/.snap/system/modules/org-esa-snap-snap-python.jar --force --log_file ./snappyutil.log --jvm_max_mem 10G --java_home /usr/local/snap/jre --req_arch amd64]\n",
|
||||||
|
"failed with return code 40.\n",
|
||||||
|
"Please check the log file '/home/rus/.anaconda/lib/python3.7/lib/site-packages/snappy/snappyutil.log'.\n",
|
||||||
|
"```"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"cell_type": "code",
|
||||||
|
"execution_count": null,
|
||||||
|
"metadata": {},
|
||||||
|
"outputs": [],
|
||||||
|
"source": []
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"kernelspec": {
|
||||||
|
"display_name": "Python 2",
|
||||||
|
"language": "python",
|
||||||
|
"name": "python2"
|
||||||
|
},
|
||||||
|
"language_info": {
|
||||||
|
"codemirror_mode": {
|
||||||
|
"name": "ipython",
|
||||||
|
"version": 2
|
||||||
|
},
|
||||||
|
"file_extension": ".py",
|
||||||
|
"mimetype": "text/x-python",
|
||||||
|
"name": "python",
|
||||||
|
"nbconvert_exporter": "python",
|
||||||
|
"pygments_lexer": "ipython2",
|
||||||
|
"version": "2.7.12"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nbformat": 4,
|
||||||
|
"nbformat_minor": 4
|
||||||
|
}
|
||||||
249
Cotbusser Ostsee/01 SNAP via rasterio.ipynb
Normal file
249
Cotbusser Ostsee/01 SNAP via rasterio.ipynb
Normal file
File diff suppressed because one or more lines are too long
207
Cotbusser Ostsee/01 Subsetting.ipynb
Normal file
207
Cotbusser Ostsee/01 Subsetting.ipynb
Normal file
File diff suppressed because one or more lines are too long
29
Cotbusser Ostsee/link_list.txt
Normal file
29
Cotbusser Ostsee/link_list.txt
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('297fbd5d-7aee-4458-bf92-0fabb2390686')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('beba8823-384b-40c4-9a46-f805c93e4c0b')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('0cd55e83-661a-4e6d-9260-090f181dba98')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('0c926d46-b8c3-4389-92c5-d55eeae24d27')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('f0357a27-f2ae-4cae-964a-4a239063e00e')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('94bae100-882b-4879-9803-f80e5836ed03')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('81a0f8d2-8e26-4a11-b237-2d77278a0201')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('a7e88612-b5f7-43f7-aeb9-c3a1f59988a9')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('4720dc74-5dcd-439f-98f6-ccce1f9e91ba')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('d3d8ca59-1ea2-423f-b5ca-0a796189de77')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('cb092920-5135-4d1a-8022-b3b9adeb0c71')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('a76efffe-dee1-4d90-bb0e-fe3ae2fd203e')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('b861e6c9-de3b-4b13-aadb-a5f307977c12')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('a096a190-a148-43ba-bf76-99d009c481c8')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('dbc5195f-e37e-4f7c-a2bc-4f8744875a00')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('2ccd7b68-a9ff-45de-91b2-532f63de58ad')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('b84b8e66-5788-47ad-82ec-43b30b81f648')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('768a8fc7-26f2-4daf-b326-fad0eb373932')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('a13c0d72-b29d-4ce4-95cd-72c6e6a0ef93')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('da264968-83e8-49e8-bd12-d1be4ea11d98')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('14ad7da9-61e3-49df-a093-d122f3d7741b')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('027baf71-82c7-4554-866a-93c939e037a6')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('fc303b98-b4d9-4e6a-a920-0cd5896f4b29')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('2fe656bf-98c1-449c-bb50-a0511f28335d')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('97f38784-462a-4f55-8015-64b700cad233')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('de1eb034-6504-4779-894b-cad441ca47df')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('7c42b169-f1fc-47cc-b853-7e3e529d5242')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('96dc4323-92d5-4e2a-a6c5-177b167431a3')/$value
|
||||||
|
https://scihub.copernicus.eu/apihub/odata/v1/Products('ddb91569-8c5e-4fe0-a227-b0454f56c2b8')/$value
|
||||||
792
True-Color Image/00 Download.ipynb
Normal file
792
True-Color Image/00 Download.ipynb
Normal file
File diff suppressed because one or more lines are too long
355
True-Color Image/01 Band Maths.ipynb
Normal file
355
True-Color Image/01 Band Maths.ipynb
Normal file
File diff suppressed because one or more lines are too long
36
True-Color Image/sentinel_helpers.py
Normal file
36
True-Color Image/sentinel_helpers.py
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
|
||||||
|
def band_paths(p, bands, resolution=None):
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
Given a zip file at `p`, returns the paths inside p to the raster files containing
|
||||||
|
|
||||||
|
information for the given bands. Because some bands are available in more than one
|
||||||
|
|
||||||
|
resolution, this can be filtered by prodiding a third parameter (e.g. resolution='10m').
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The returned paths are formatted in the zip scheme as per Apache Commons VFS and can
|
||||||
|
|
||||||
|
thus be directly opened by rasterio.
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
with zipfile.ZipFile(p) as f:
|
||||||
|
|
||||||
|
files = f.namelist()
|
||||||
|
|
||||||
|
rasters = [f for f in files if f.endswith('.jp2')]
|
||||||
|
rasters = [r for r in rasters for b in bands if b in r]
|
||||||
|
if resolution:
|
||||||
|
rasters = [r for r in rasters if resolution in r]
|
||||||
|
|
||||||
|
rasters = ['zip+file://' + p + '!/' + r for r in rasters]
|
||||||
|
return rasters
|
||||||
|
|
||||||
|
|
||||||
|
def rgb_paths(zip_file, resolution='10m'):
|
||||||
|
return band_paths(zip_file, ['B02', 'B03', 'B04'], resolution)
|
||||||
311
Waldbraende/00 Download.ipynb
Normal file
311
Waldbraende/00 Download.ipynb
Normal file
File diff suppressed because one or more lines are too long
355
Waldbraende/02 Band Maths and Indices.ipynb
Normal file
355
Waldbraende/02 Band Maths and Indices.ipynb
Normal file
File diff suppressed because one or more lines are too long
36
Waldbraende/sentinel_helpers.py
Normal file
36
Waldbraende/sentinel_helpers.py
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
import zipfile
|
||||||
|
|
||||||
|
|
||||||
|
def band_paths(p, bands, resolution=None):
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
Given a zip file at `p`, returns the paths inside p to the raster files containing
|
||||||
|
|
||||||
|
information for the given bands. Because some bands are available in more than one
|
||||||
|
|
||||||
|
resolution, this can be filtered by prodiding a third parameter (e.g. resolution='10m').
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
The returned paths are formatted in the zip scheme as per Apache Commons VFS and can
|
||||||
|
|
||||||
|
thus be directly opened by rasterio.
|
||||||
|
|
||||||
|
'''
|
||||||
|
|
||||||
|
with zipfile.ZipFile(p) as f:
|
||||||
|
|
||||||
|
files = f.namelist()
|
||||||
|
|
||||||
|
rasters = [f for f in files if f.endswith('.jp2')]
|
||||||
|
rasters = [r for r in rasters for b in bands if b in r]
|
||||||
|
if resolution:
|
||||||
|
rasters = [r for r in rasters if resolution in r]
|
||||||
|
|
||||||
|
rasters = ['zip+file://' + p + '!/' + r for r in rasters]
|
||||||
|
return rasters
|
||||||
|
|
||||||
|
|
||||||
|
def rgb_paths(zip_file, resolution='10m'):
|
||||||
|
return band_paths(zip_file, ['B02', 'B03', 'B04'], resolution)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue