├── .editorconfig ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── config.yml │ └── feature_request.md └── workflows │ ├── docs.yml │ ├── macos_gdal.yml │ ├── pypi.yml │ ├── ubuntu.yml │ └── windows.yml ├── .gitignore ├── .pre-commit-config.yaml ├── LICENSE ├── MANIFEST.in ├── README.md ├── docs ├── CNAME ├── changelog.md ├── contributing.md ├── faq.md ├── geospatial_ml.md ├── index.ipynb ├── installation.md ├── overrides │ └── main.html └── usage.md ├── examples ├── colab.ipynb ├── examples.ipynb └── leafmap.ipynb ├── geospatial_ml ├── __init__.py └── geospatial_ml.py ├── mkdocs.yml ├── requirements.txt ├── requirements_dev.txt ├── requirements_docs.txt ├── setup.cfg ├── setup.py └── tests ├── __init__.py └── test_geospatial_ml.py /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | 3 | root = true 4 | 5 | [*] 6 | indent_style = space 7 | indent_size = 4 8 | trim_trailing_whitespace = true 9 | insert_final_newline = true 10 | charset = utf-8 11 | end_of_line = lf 12 | 13 | [*.bat] 14 | indent_style = tab 15 | end_of_line = crlf 16 | 17 | [LICENSE] 18 | insert_final_newline = false 19 | 20 | [Makefile] 21 | indent_style = tab 22 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug Report 3 | about: Create a bug report to help us improve 4 | labels: bug 5 | --- 6 | 7 | 8 | 9 | ### Environment Information 10 | 11 | - geospatial_ml version: 12 | - Python version: 13 | - Operating System: 14 | 15 | ### Description 16 | 17 | Describe what you were trying to get done. 18 | Tell us what happened, what went wrong, and what you expected to happen. 19 | 20 | ### What I Did 21 | 22 | ``` 23 | Paste the command(s) you ran and the output. 24 | If there was a crash, please include the traceback here. 25 | ``` 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Ask questions 3 | url: https://github.com/giswqs/geospatial-ml/discussions/categories/q-a 4 | about: Please ask and answer questions here. 5 | - name: Ideas 6 | url: https://github.com/giswqs/geospatial-ml/discussions/categories/ideas 7 | about: Please share your ideas here. 8 | - name: Ask questions from the GIS community 9 | url: https://gis.stackexchange.com 10 | about: To get answers from questions in the GIS commminuty, please ask and answer questions here. 11 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature Request 3 | about: Submit a feature request to help us improve 4 | labels: Feature Request 5 | --- 6 | 7 | 8 | 9 | ### Description 10 | 11 | Describe the feature (e.g., new functions/tutorials) you would like to propose. 12 | Tell us what can be achieved with this new feature and what's the expected outcome. 13 | 14 | ### Source code 15 | 16 | ``` 17 | Paste your source code here if have sample code to share. 18 | ``` 19 | -------------------------------------------------------------------------------- /.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: docs 2 | on: 3 | push: 4 | branches: 5 | - master 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - uses: actions/setup-python@v2 12 | with: 13 | python-version: 3.9 14 | # - name: Install GDAL 15 | # run: | 16 | # python -m pip install --upgrade pip 17 | # pip install --find-links=https://girder.github.io/large_image_wheels --no-cache GDAL 18 | # - name: Test GDAL installation 19 | # run: | 20 | # python -c "from osgeo import gdal" 21 | # gdalinfo --version 22 | # - name: Install dependencies 23 | # run: | 24 | # pip install --no-cache-dir Cython 25 | # pip install -r requirements.txt -r requirements_dev.txt 26 | # pip install . 27 | # - name: Discover typos with codespell 28 | # run: codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff" --ignore-words-list="aci,acount,acounts,fallow,hart,hist,nd,ned,ois,wqs,watermask" 29 | # - name: PKG-TEST 30 | # run: | 31 | # python -m unittest discover tests/ 32 | # env: 33 | # PLANET_API_KEY: ${{ secrets.PLANET_API_KEY }} 34 | - run: pip install -r requirements_docs.txt 35 | - run: mkdocs gh-deploy --force 36 | # env: 37 | # USE_FOLIUM: ${{ secrets.USE_FOLIUM }} 38 | # USE_MKDOCS: ${{ secrets.USE_MKDOCS }} 39 | # HEREMAPS_API_KEY: ${{ secrets.HEREMAPS_API_KEY }} 40 | # DP_TOKEN: ${{ secrets.DP_TOKEN }} 41 | # PLANET_API_KEY: ${{ secrets.PLANET_API_KEY }} 42 | # MAPBOX_TOKEN: ${{ secrets.MAPBOX_TOKEN }} 43 | # EARTHENGINE_TOKEN: ${{ secrets.EARTHENGINE_TOKEN }} 44 | -------------------------------------------------------------------------------- /.github/workflows/macos_gdal.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - master 5 | pull_request: 6 | branches: 7 | - master 8 | 9 | name: macOS build with GDAL 10 | jobs: 11 | test-macOS: 12 | runs-on: macos-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | with: 16 | submodules: recursive 17 | - name: Set up Python 18 | uses: actions/setup-python@v2 19 | with: 20 | python-version: 3.9 21 | # - name: Install GDAL 22 | # run: brew install gdal 23 | # - name: Set up GDAL 24 | # run: | 25 | # GDAL_VER=$(find /usr/local/Cellar/gdal/ -name "lib" | awk -F"/" '{print $7}') 26 | # GDAL_LDPATH=/usr/local/Cellar/gdal/$GDAL_VER/lib/ 27 | # export LIBRARY_PATH=$GDAL_LDPATH 28 | # echo $LIBRARY_PATH 29 | # - name: Test GDAL installation 30 | # run: | 31 | # gdalinfo --version 32 | # - name: Install cartopy 33 | # run: | 34 | # brew install proj geos 35 | # pip3 install shapely --no-binary shapely 36 | # brew install pkg-config 37 | # export PKG_CONFIG_PATH=/usr/local/bin/pkgconfig 38 | # pip3 install cartopy 39 | # - name: Install dependencies 40 | # run: | 41 | # python -m pip install --upgrade pip 42 | # pip install --no-cache-dir Cython 43 | # pip install -r requirements.txt -r requirements_dev.txt 44 | # pip install . 45 | # - name: Discover typos with codespell 46 | # run: codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff" --ignore-words-list="aci,acount,acounts,fallow,hart,hist,nd,ned,ois,wqs,watermask" 47 | # - name: PKG-TEST 48 | # run: | 49 | # python -m unittest discover tests/ -------------------------------------------------------------------------------- /.github/workflows/pypi.yml: -------------------------------------------------------------------------------- 1 | name: pypi 2 | 3 | on: 4 | release: 5 | types: [created] 6 | 7 | jobs: 8 | deploy: 9 | 10 | runs-on: ubuntu-latest 11 | 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Set up Python 15 | uses: actions/setup-python@v2 16 | with: 17 | python-version: '3.x' 18 | - name: Install dependencies 19 | run: | 20 | python -m pip install --upgrade pip 21 | pip install setuptools wheel twine 22 | - name: Build and publish 23 | env: 24 | TWINE_USERNAME: ${{ secrets.PYPI_USERS }} 25 | TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }} 26 | run: | 27 | python setup.py sdist bdist_wheel 28 | twine upload dist/* 29 | 30 | -------------------------------------------------------------------------------- /.github/workflows/ubuntu.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - master 5 | pull_request: 6 | branches: 7 | - master 8 | 9 | name: Linux build 10 | jobs: 11 | test-ubuntu: 12 | runs-on: ubuntu-latest 13 | strategy: 14 | fail-fast: false 15 | matrix: 16 | python-version: ["3.8", "3.9", "3.10", "3.11"] 17 | steps: 18 | - uses: actions/checkout@v2 19 | - name: Set up Python 20 | uses: actions/setup-python@v2 21 | with: 22 | python-version: ${{ matrix.python-version }} 23 | - name: Install GDAL 24 | run: | 25 | python -m pip install --upgrade pip 26 | pip install --no-cache-dir Cython 27 | pip install --find-links=https://girder.github.io/large_image_wheels --no-cache GDAL 28 | # run: | 29 | # conda install geopandas --yes 30 | # conda install -c conda-forge gdal=3.4.0 rasterio cartopy --yes 31 | - name: Test GDAL installation 32 | run: | 33 | python -c "from osgeo import gdal" 34 | gdalinfo --version 35 | - name: Install dependencies 36 | run: | 37 | pip install -r requirements.txt -r requirements_dev.txt 38 | pip install . 39 | - name: Discover typos with codespell 40 | run: codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff" --ignore-words-list="aci,acount,acounts,fallow,hart,hist,nd,ned,ois,wqs,watermask" 41 | - name: PKG-TEST 42 | run: | 43 | python -m unittest discover tests/ 44 | 45 | -------------------------------------------------------------------------------- /.github/workflows/windows.yml: -------------------------------------------------------------------------------- 1 | on: 2 | push: 3 | branches: 4 | - master 5 | pull_request: 6 | branches: 7 | - master 8 | 9 | name: Windows build 10 | jobs: 11 | test-windows: 12 | runs-on: windows-latest 13 | steps: 14 | - uses: actions/checkout@v2 15 | - name: Install miniconda 16 | uses: conda-incubator/setup-miniconda@v2 17 | with: 18 | auto-activate-base: true 19 | python-version: 3.9 20 | # - name: Install GDAL 21 | # run: | 22 | # conda install geopandas --yes 23 | # conda install -c conda-forge gdal=3.4.0 rasterio rvlib --yes 24 | # - name: Test GDAL installation 25 | # run: | 26 | # python -c "from osgeo import gdal" 27 | # gdalinfo --version 28 | # - name: Install dependencies 29 | # run: | 30 | # python -m pip install --upgrade pip 31 | # pip install --no-cache-dir Cython 32 | # pip install -r codespell requirements.txt 33 | # pip install . 34 | # env: 35 | # GDAL_VERSION: ${{ secrets.GDAL_VERSION }} 36 | # - name: Discover typos with codespell 37 | # run: codespell --skip="*.csv,*.geojson,*.json,*.js,*.html,*cff" --ignore-words-list="aci,acount,acounts,fallow,hart,hist,nd,ned,ois,wqs,watermask" 38 | # - name: PKG-TEST 39 | # run: | 40 | # python -m unittest discover tests/ -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | .pytest_cache/ 49 | 50 | # Translations 51 | *.mo 52 | *.pot 53 | 54 | # Django stuff: 55 | *.log 56 | local_settings.py 57 | 58 | # Flask stuff: 59 | instance/ 60 | .webassets-cache 61 | 62 | # Scrapy stuff: 63 | .scrapy 64 | 65 | # Sphinx documentation 66 | docs/_build/ 67 | 68 | # PyBuilder 69 | target/ 70 | 71 | # Jupyter Notebook 72 | .ipynb_checkpoints 73 | 74 | # pyenv 75 | .python-version 76 | 77 | # celery beat schedule file 78 | celerybeat-schedule 79 | 80 | # SageMath parsed files 81 | *.sage.py 82 | 83 | # dotenv 84 | .env 85 | 86 | # virtualenv 87 | .venv 88 | venv/ 89 | ENV/ 90 | 91 | # Spyder project settings 92 | .spyderproject 93 | .spyproject 94 | 95 | # Rope project settings 96 | .ropeproject 97 | 98 | # mkdocs documentation 99 | /site 100 | 101 | # mypy 102 | .mypy_cache/ 103 | 104 | # IDE settings 105 | .vscode/ -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v4.6.0 4 | hooks: 5 | - id: check-toml 6 | - id: check-yaml 7 | - id: end-of-file-fixer 8 | types: [python] 9 | - id: trailing-whitespace 10 | - id: requirements-txt-fixer 11 | - id: check-added-large-files 12 | args: ["--maxkb=500"] 13 | 14 | - repo: https://github.com/psf/black 15 | rev: 24.4.2 16 | hooks: 17 | - id: black-jupyter 18 | language_version: python3.11 19 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022, Qiusheng Wu 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE 2 | include README.md 3 | include requirements.txt 4 | 5 | recursive-exclude * __pycache__ 6 | recursive-exclude * *.py[co] 7 | 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # geospatial-ml 2 | 3 | [![image](https://colab.research.google.com/assets/colab-badge.svg)](https://gishub.org/ml-colab) 4 | [![image](https://mybinder.org/badge_logo.svg)](https://gishub.org/ml-binder) 5 | [![image](https://img.shields.io/pypi/v/geospatial-ml.svg)](https://pypi.python.org/pypi/geospatial-ml) 6 | [![image](https://pepy.tech/badge/geospatial-ml)](https://pepy.tech/project/geospatial-ml) 7 | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/geospatial-ml.svg)](https://anaconda.org/conda-forge/geospatial-ml) 8 | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/geospatial-ml.svg)](https://anaconda.org/conda-forge/geospatial-ml) 9 | [![Conda Recipe](https://img.shields.io/badge/recipe-geospatial_ml-green.svg)](https://github.com/conda-forge/geospatial-ml-feedstock) 10 | [![image](https://img.shields.io/badge/YouTube-Channel-red)](https://www.youtube.com/c/QiushengWu) 11 | [![image](https://img.shields.io/twitter/follow/giswqs?style=social)](https://twitter.com/giswqs) 12 | 13 | **A Python package for installing commonly used packages for geospatial analysis and machine learning with only one command.** 14 | 15 | - Free software: MIT license 16 | - Documentation: https://ml.gishub.org 17 | 18 | [![](https://i.imgur.com/Oklt4IB.png)](https://ml.gishub.org) 19 | 20 | ## Credits 21 | 22 | This package was created with [Cookiecutter](https://github.com/cookiecutter/cookiecutter) and the [giswqs/pypackage](https://github.com/giswqs/pypackage) project template. 23 | -------------------------------------------------------------------------------- /docs/CNAME: -------------------------------------------------------------------------------- 1 | ml.gishub.org -------------------------------------------------------------------------------- /docs/changelog.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | ## v0.1.2 - Apr 22, 2022 4 | 5 | Removed `vaex` because it does not support Python 3.10. Conda-forge recipe fails to build. 6 | 7 | ## v0.1.1 - Apr 18, 2022 8 | 9 | Added the following packages. 10 | 11 | - vaex 12 | 13 | ## v0.1.0 - Apr 15, 2022 14 | 15 | Added notebook examples. 16 | 17 | ## v0.0.6 - Apr 14, 2022 18 | 19 | Added the following packages. 20 | 21 | - geospatial 22 | - keras 23 | - localtileserver 24 | - torch 25 | - pytorch-lightning 26 | - rasterio 27 | - scikit-gstat 28 | - scikit-learn 29 | - scikit-plot 30 | - tensorflow 31 | - torchgeo 32 | - verde 33 | 34 | ## v0.0.1 - Apr 5, 2022 35 | 36 | Initial release. 37 | -------------------------------------------------------------------------------- /docs/contributing.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are welcome, and they are greatly appreciated! Every 4 | little bit helps, and credit will always be given. 5 | 6 | You can contribute in many ways: 7 | 8 | ## Types of Contributions 9 | 10 | ### Report Bugs 11 | 12 | Report bugs at . 13 | 14 | If you are reporting a bug, please include: 15 | 16 | - Your operating system name and version. 17 | - Any details about your local setup that might be helpful in troubleshooting. 18 | - Detailed steps to reproduce the bug. 19 | 20 | ### Fix Bugs 21 | 22 | Look through the GitHub issues for bugs. Anything tagged with `bug` and 23 | `help wanted` is open to whoever wants to implement it. 24 | 25 | ### Implement Features 26 | 27 | Look through the GitHub issues for features. Anything tagged with 28 | `enhancement` and `help wanted` is open to whoever wants to implement it. 29 | 30 | ### Write Documentation 31 | 32 | geospatial-ml could always use more documentation, 33 | whether as part of the official geospatial-ml docs, 34 | in docstrings, or even on the web in blog posts, articles, and such. 35 | 36 | ### Submit Feedback 37 | 38 | The best way to send feedback is to file an issue at 39 | . 40 | 41 | If you are proposing a feature: 42 | 43 | - Explain in detail how it would work. 44 | - Keep the scope as narrow as possible, to make it easier to implement. 45 | - Remember that this is a volunteer-driven project, and that contributions are welcome :) 46 | 47 | ## Get Started! 48 | 49 | Ready to contribute? Here's how to set up geospatial-ml for local development. 50 | 51 | 1. Fork the geospatial-ml repo on GitHub. 52 | 53 | 2. Clone your fork locally: 54 | 55 | ```shell 56 | $ git clone git@github.com:your_name_here/geospatial-ml.git 57 | ``` 58 | 59 | 3. Install your local copy into a virtualenv. Assuming you have 60 | virtualenvwrapper installed, this is how you set up your fork for 61 | local development: 62 | 63 | ```shell 64 | $ mkvirtualenv geospatial-ml 65 | $ cd geospatial-ml/ 66 | $ python setup.py develop 67 | ``` 68 | 69 | 4. Create a branch for local development: 70 | 71 | ```shell 72 | $ git checkout -b name-of-your-bugfix-or-feature 73 | ``` 74 | 75 | Now you can make your changes locally. 76 | 77 | 5. When you're done making changes, check that your changes pass flake8 78 | and the tests, including testing other Python versions with tox: 79 | 80 | ```shell 81 | $ flake8 geospatial-ml tests 82 | $ python setup.py test or pytest 83 | $ tox 84 | ``` 85 | 86 | To get flake8 and tox, just pip install them into your virtualenv. 87 | 88 | 6. Commit your changes and push your branch to GitHub: 89 | 90 | ```shell 91 | $ git add . 92 | $ git commit -m "Your detailed description of your changes." 93 | $ git push origin name-of-your-bugfix-or-feature 94 | ``` 95 | 96 | 7. Submit a pull request through the GitHub website. 97 | 98 | ## Pull Request Guidelines 99 | 100 | Before you submit a pull request, check that it meets these guidelines: 101 | 102 | 1. The pull request should include tests. 103 | 2. If the pull request adds functionality, the docs should be updated. 104 | Put your new functionality into a function with a docstring, and add 105 | the feature to the list in README.rst. 106 | 3. The pull request should work for Python 3.5, 3.6, 3.7 and 3.8, and 107 | for PyPy. Check and make sure that the tests pass for all 108 | supported Python versions. 109 | -------------------------------------------------------------------------------- /docs/faq.md: -------------------------------------------------------------------------------- 1 | # FAQ 2 | -------------------------------------------------------------------------------- /docs/geospatial_ml.md: -------------------------------------------------------------------------------- 1 | 2 | # geospatial-ml module 3 | 4 | ::: geospatial_ml.geospatial_ml -------------------------------------------------------------------------------- /docs/index.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "c84f12fa-0c16-4932-b54b-d9e49f2d3fcc", 6 | "metadata": {}, 7 | "source": [ 8 | "# Welcome to geospatial-ml\n", 9 | "\n", 10 | "[![image](https://colab.research.google.com/assets/colab-badge.svg)](https://gishub.org/ml-colab)\n", 11 | "[![image](https://mybinder.org/badge_logo.svg)](https://gishub.org/ml-binder)\n", 12 | "[![image](https://img.shields.io/pypi/v/geospatial-ml.svg)](https://pypi.python.org/pypi/geospatial-ml)\n", 13 | "[![image](https://pepy.tech/badge/geospatial-ml)](https://pepy.tech/project/geospatial-ml)\n", 14 | "[![Conda Version](https://img.shields.io/conda/vn/conda-forge/geospatial-ml.svg)](https://anaconda.org/conda-forge/geospatial-ml)\n", 15 | "[![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/geospatial-ml.svg)](https://anaconda.org/conda-forge/geospatial-ml)\n", 16 | "[![Conda Recipe](https://img.shields.io/badge/recipe-geospatial_ml-green.svg)](https://github.com/conda-forge/geospatial-ml-feedstock)\n", 17 | "[![image](https://img.shields.io/badge/YouTube-Channel-red)](https://www.youtube.com/c/QiushengWu)\n", 18 | "[![image](https://img.shields.io/twitter/follow/giswqs?style=social)](https://twitter.com/giswqs)\n", 19 | "\n", 20 | "**A Python package for installing commonly used packages for geospatial analysis and machine learning with only one command.**\n", 21 | "\n", 22 | "- Free software: MIT license\n", 23 | "- Documentation: https://ml.gishub.org\n", 24 | "\n", 25 | "## Disclaimer\n", 26 | "\n", 27 | "Currently, the `geospatial-ml` package only helps you install commonly used packages for geospatial analysis and machine learning with only one command, making it easier to set up a conda environment for geospatial analysis and avoid dependency conflicts during installation. The `geospatial-ml` package itself does not have any meaningful functions yet. After installation, you can continue to the commonly used geospatial packages as usual. \n", 28 | "\n", 29 | "\n", 30 | "## Installation\n", 31 | "\n", 32 | "Installing commonly used packages for geospatial analysis and machine learning with only one command.\n", 33 | "\n", 34 | "```\n", 35 | "mamba install -c conda-forge geospatial-ml\n", 36 | "```\n", 37 | "\n", 38 | "" 41 | ] 42 | }, 43 | { 44 | "cell_type": "markdown", 45 | "id": "ba39b6e5-cc41-420f-8bbb-58a3bd87bc12", 46 | "metadata": {}, 47 | "source": [ 48 | "## Conda-forge recipe\n", 49 | "\n", 50 | "The [recipe](https://github.com/conda-forge/geospatial-ml-feedstock/blob/main/recipe/meta.yaml) of the geospatial-ml Python package on the conda-forge channel:\n", 51 | "\n", 52 | " - python >=3.7\n", 53 | " - geospatial\n", 54 | " - keras\n", 55 | " - pytorch\n", 56 | " - pytorch-lightning\n", 57 | " - scikit-gstat\n", 58 | " - scikit-learn\n", 59 | " - scikit-plot\n", 60 | " - tensorflow\n", 61 | " - torchgeo\n", 62 | " - verde" 63 | ] 64 | }, 65 | { 66 | "cell_type": "markdown", 67 | "id": "e8dfc9aa-d549-4efe-bb12-2b5daf2d5a2b", 68 | "metadata": {}, 69 | "source": [ 70 | "## Suggestions for adding packages to geospatial-ml\n", 71 | "\n", 72 | "If you would like to suggest new packages to be added to the geospatial stack, please follow the steps below:\n", 73 | "\n", 74 | "1. Check the [Installed packages](#installed-packages) section to see if the suggested packages are listed. If they are already listed, then you can skip the following steps.\n", 75 | "\n", 76 | "2. Search the suggested packages on [conda-forge](https://conda-forge.org/feedstock-outputs) and make sure they can be found there. If not, that means the suggested packages are not available on conda-forge. If this is the case, then they cannot be added to the geospatial stack. Then you can skip the following step.\n", 77 | "\n", 78 | "3. Leave the names of suggested packages on the [geospatial GitHub repo](https://github.com/giswqs/geospatial-ml/issues/3) if they meet the above requirements. I will then test the suggested packages and add them to the geospatial stack as appropriate." 79 | ] 80 | }, 81 | { 82 | "cell_type": "markdown", 83 | "id": "0bd5c125-8f27-4089-9b17-6ee2453885b8", 84 | "metadata": {}, 85 | "source": [ 86 | "## Installed packages\n", 87 | "\n", 88 | "The complete list of Python packages that will be installed along with geospatial-ml." 89 | ] 90 | }, 91 | { 92 | "cell_type": "code", 93 | "execution_count": 1, 94 | "id": "6f4d1018-f112-4b73-9242-ba2610a1b8bf", 95 | "metadata": {}, 96 | "outputs": [ 97 | { 98 | "name": "stdout", 99 | "output_type": "stream", 100 | "text": [ 101 | "# packages in environment at /home/qiusheng/.conda/envs/ml:\n", 102 | "#\n", 103 | "# Name Version Build Channel\n", 104 | "_libgcc_mutex 0.1 conda_forge conda-forge\n", 105 | "_openmp_mutex 4.5 2_gnu conda-forge\n", 106 | "abseil-cpp 20210324.2 h9c3ff4c_0 conda-forge\n", 107 | "absl-py 1.0.0 pyhd8ed1ab_0 conda-forge\n", 108 | "aenum 3.1.11 pyhd8ed1ab_0 conda-forge\n", 109 | "affine 2.3.1 pyhd8ed1ab_0 conda-forge\n", 110 | "aiohttp 3.8.1 py310h5764c6d_1 conda-forge\n", 111 | "aiosignal 1.2.0 pyhd8ed1ab_0 conda-forge\n", 112 | "alsa-lib 1.2.3 h516909a_0 conda-forge\n", 113 | "altair 4.2.0 pyhd8ed1ab_1 conda-forge\n", 114 | "aniso8601 9.0.1 pyhd8ed1ab_0 conda-forge\n", 115 | "antlr-python-runtime 4.9.3 pyhd8ed1ab_1 conda-forge\n", 116 | "anyio 3.5.0 py310hff52083_0 conda-forge\n", 117 | "aom 3.3.0 h27087fc_1 conda-forge\n", 118 | "appdirs 1.4.4 pyh9f0ad1d_0 conda-forge\n", 119 | "argh 0.26.2 pyh9f0ad1d_1002 conda-forge\n", 120 | "argon2-cffi 21.3.0 pyhd8ed1ab_0 conda-forge\n", 121 | "argon2-cffi-bindings 21.2.0 py310h5764c6d_2 conda-forge\n", 122 | "arrow-cpp 6.0.1 py310h500f8fe_8_cpu conda-forge\n", 123 | "asciitree 0.3.3 py_2 conda-forge\n", 124 | "astor 0.8.1 pyh9f0ad1d_0 conda-forge\n", 125 | "asttokens 2.0.5 pyhd8ed1ab_0 conda-forge\n", 126 | "astunparse 1.6.3 pyhd8ed1ab_0 conda-forge\n", 127 | "async-timeout 4.0.2 pyhd8ed1ab_0 conda-forge\n", 128 | "attrs 21.4.0 pyhd8ed1ab_0 conda-forge\n", 129 | "aws-c-cal 0.5.11 h95a6274_0 conda-forge\n", 130 | "aws-c-common 0.6.2 h7f98852_0 conda-forge\n", 131 | "aws-c-event-stream 0.2.7 h3541f99_13 conda-forge\n", 132 | "aws-c-io 0.10.5 hfb6a706_0 conda-forge\n", 133 | "aws-checksums 0.1.11 ha31a3da_7 conda-forge\n", 134 | "aws-sdk-cpp 1.8.186 hb4091e7_3 conda-forge\n", 135 | "babel 2.9.1 pyh44b312d_0 conda-forge\n", 136 | "backcall 0.2.0 pyh9f0ad1d_0 conda-forge\n", 137 | "backports 1.0 py_2 conda-forge\n", 138 | "backports.functools_lru_cache 1.6.4 pyhd8ed1ab_0 conda-forge\n", 139 | "base58 2.1.1 pyhd8ed1ab_0 conda-forge\n", 140 | "beautifulsoup4 4.11.1 pyha770c72_0 conda-forge\n", 141 | "black 22.3.0 pyhd8ed1ab_0 conda-forge\n", 142 | "black-jupyter 22.3.0 hd8ed1ab_0 conda-forge\n", 143 | "bleach 5.0.0 pyhd8ed1ab_0 conda-forge\n", 144 | "blinker 1.4 py_1 conda-forge\n", 145 | "blosc 1.21.0 h9c3ff4c_0 conda-forge\n", 146 | "bokeh 2.4.2 py310hff52083_1 conda-forge\n", 147 | "boost-cpp 1.74.0 h6cacc03_7 conda-forge\n", 148 | "boto3 1.21.45 pyhd8ed1ab_0 conda-forge\n", 149 | "botocore 1.24.46 pyhd8ed1ab_0 conda-forge\n", 150 | "bqplot 0.12.33 pyhd8ed1ab_0 conda-forge\n", 151 | "branca 0.4.2 pyhd8ed1ab_0 conda-forge\n", 152 | "brotli 1.0.9 h166bdaf_7 conda-forge\n", 153 | "brotli-bin 1.0.9 h166bdaf_7 conda-forge\n", 154 | "brotlipy 0.7.0 py310h5764c6d_1004 conda-forge\n", 155 | "brunsli 0.1 h9c3ff4c_0 conda-forge\n", 156 | "bump2version 1.0.1 pyh9f0ad1d_0 conda-forge\n", 157 | "bzip2 1.0.8 h7b6447c_0 \n", 158 | "c-ares 1.18.1 h7f98852_0 conda-forge\n", 159 | "c-blosc2 2.0.4 h5f21a17_1 conda-forge\n", 160 | "ca-certificates 2021.10.8 ha878542_0 conda-forge\n", 161 | "cached-property 1.5.2 hd8ed1ab_1 conda-forge\n", 162 | "cached_property 1.5.2 pyha770c72_1 conda-forge\n", 163 | "cachetools 4.2.4 pyhd8ed1ab_0 conda-forge\n", 164 | "cairo 1.16.0 ha12eb4b_1010 conda-forge\n", 165 | "cairocffi 1.3.0 pyhd8ed1ab_0 conda-forge\n", 166 | "cairosvg 2.5.2 pyhd8ed1ab_0 conda-forge\n", 167 | "cartopy 0.20.2 py310hb89acbc_4 conda-forge\n", 168 | "cenpy 1.0.0.post4 py_0 conda-forge\n", 169 | "certifi 2021.10.8 py310hff52083_2 conda-forge\n", 170 | "cffi 1.15.0 py310hd667e15_1 \n", 171 | "cfitsio 4.1.0 hd9d235c_0 conda-forge\n", 172 | "cftime 1.6.0 py310hde88566_1 conda-forge\n", 173 | "charls 2.3.4 h9c3ff4c_0 conda-forge\n", 174 | "charset-normalizer 2.0.12 pyhd8ed1ab_0 conda-forge\n", 175 | "chroma-py 0.1.0.dev1 py_0 conda-forge\n", 176 | "click 8.1.2 py310hff52083_0 conda-forge\n", 177 | "click-plugins 1.1.1 py_0 conda-forge\n", 178 | "cligj 0.7.2 pyhd8ed1ab_1 conda-forge\n", 179 | "cloudpickle 2.0.0 pyhd8ed1ab_0 conda-forge\n", 180 | "codespell 2.1.0 pyhd8ed1ab_0 conda-forge\n", 181 | "colorama 0.4.4 pyh9f0ad1d_0 conda-forge\n", 182 | "colorcet 3.0.0 pyhd8ed1ab_0 conda-forge\n", 183 | "colour 0.1.5 py_0 conda-forge\n", 184 | "conda 4.12.0 py310hff52083_0 conda-forge\n", 185 | "conda-package-handling 1.8.1 py310h5764c6d_1 conda-forge\n", 186 | "configobj 5.0.6 py_0 conda-forge\n", 187 | "contextily 1.2.0 pyhd8ed1ab_0 conda-forge\n", 188 | "cryptography 36.0.2 py310h597c629_1 conda-forge\n", 189 | "cssselect2 0.2.1 pyh9f0ad1d_1 conda-forge\n", 190 | "cudatoolkit 10.2.89 h8f6ccaa_10 conda-forge\n", 191 | "cudnn 7.6.5.32 h01f27c4_1 conda-forge\n", 192 | "curl 7.82.0 h7f8727e_0 \n", 193 | "cycler 0.11.0 pyhd8ed1ab_0 conda-forge\n", 194 | "cytoolz 0.11.2 py310h5764c6d_2 conda-forge\n", 195 | "dask 2022.4.1 pyhd8ed1ab_0 conda-forge\n", 196 | "dask-core 2022.4.1 pyhd8ed1ab_0 conda-forge\n", 197 | "dask-geopandas 0.1.0 pyhd8ed1ab_0 conda-forge\n", 198 | "dataclasses 0.8 pyhc8e2a94_3 conda-forge\n", 199 | "dataclasses-json 0.5.7 pyhd8ed1ab_0 conda-forge\n", 200 | "datacube 1.8.6 pyhd8ed1ab_0 conda-forge\n", 201 | "datashader 0.13.0 pyh6c4a22f_0 conda-forge\n", 202 | "datashape 0.5.4 py_1 conda-forge\n", 203 | "dbus 1.13.6 h5008d03_3 conda-forge\n", 204 | "debugpy 1.6.0 py310hd8f1fbe_0 conda-forge\n", 205 | "decorator 5.1.1 pyhd8ed1ab_0 conda-forge\n", 206 | "defusedxml 0.7.1 pyhd8ed1ab_0 conda-forge\n", 207 | "descartes 1.1.0 py_4 conda-forge\n", 208 | "distributed 2022.4.1 pyhd8ed1ab_0 conda-forge\n", 209 | "docutils 0.18.1 py310hff52083_1 conda-forge\n", 210 | "donfig 0.7.0 pyhd8ed1ab_1 conda-forge\n", 211 | "double-conversion 3.2.0 h9c3ff4c_0 conda-forge\n", 212 | "earthengine-api 0.1.306 pyhd8ed1ab_0 conda-forge\n", 213 | "earthpy 0.9.4 pyhd8ed1ab_0 conda-forge\n", 214 | "easystac 0.0.1 pyhd8ed1ab_0 conda-forge\n", 215 | "ee_extra 0.0.13 pyhd8ed1ab_0 conda-forge\n", 216 | "eemont 0.3.4 pyhd8ed1ab_0 conda-forge\n", 217 | "efficientnet-pytorch 0.6.3 pyh9f0ad1d_0 conda-forge\n", 218 | "eigen 3.4.0 h4bd325d_0 conda-forge\n", 219 | "einops 0.4.1 pyhd8ed1ab_0 conda-forge\n", 220 | "entrypoints 0.4 pyhd8ed1ab_0 conda-forge\n", 221 | "eomaps 3.5 pyhd8ed1ab_0 conda-forge\n", 222 | "executing 0.8.3 pyhd8ed1ab_0 conda-forge\n", 223 | "expat 2.4.8 h27087fc_0 conda-forge\n", 224 | "fasteners 0.17.3 pyhd8ed1ab_0 conda-forge\n", 225 | "ffmpeg 4.4.1 hd7ab26d_2 conda-forge\n", 226 | "ffmpeg-python 0.2.0 py_0 conda-forge\n", 227 | "filelock 3.6.0 pyhd8ed1ab_0 conda-forge\n", 228 | "fiona 1.8.21 py310h35effa4_1 conda-forge\n", 229 | "flask 2.1.1 pyhd8ed1ab_0 conda-forge\n", 230 | "flask-caching 1.10.1 pyhd8ed1ab_0 conda-forge\n", 231 | "flask-restx 0.5.1 pyhd8ed1ab_0 conda-forge\n", 232 | "flit-core 3.7.1 pyhd8ed1ab_0 conda-forge\n", 233 | "folium 0.12.1.post1 pyhd8ed1ab_1 conda-forge\n", 234 | "font-ttf-dejavu-sans-mono 2.37 hab24e00_0 conda-forge\n", 235 | "font-ttf-inconsolata 3.000 h77eed37_0 conda-forge\n", 236 | "font-ttf-source-code-pro 2.038 h77eed37_0 conda-forge\n", 237 | "font-ttf-ubuntu 0.83 hab24e00_0 conda-forge\n", 238 | "fontconfig 2.14.0 h8e229c2_0 conda-forge\n", 239 | "fonts-conda-ecosystem 1 0 conda-forge\n", 240 | "fonts-conda-forge 1 0 conda-forge\n", 241 | "freetype 2.10.4 h0708190_1 conda-forge\n", 242 | "freexl 1.0.6 h7f98852_0 conda-forge\n", 243 | "frozenlist 1.3.0 py310h5764c6d_1 conda-forge\n", 244 | "fsspec 2022.3.0 pyhd8ed1ab_0 conda-forge\n", 245 | "future 0.18.2 py310hff52083_5 conda-forge\n", 246 | "fuzzywuzzy 0.18.0 pyhd8ed1ab_0 conda-forge\n", 247 | "gast 0.4.0 pyh9f0ad1d_0 conda-forge\n", 248 | "gdal 3.4.2 pypi_0 pypi\n", 249 | "gdown 4.4.0 pyhd8ed1ab_0 conda-forge\n", 250 | "geeadd 0.5.4 pyhd8ed1ab_0 conda-forge\n", 251 | "geemap 0.13.2 pyhd8ed1ab_1 conda-forge\n", 252 | "gemgis 0.1.18 pyhd8ed1ab_0 conda-forge\n", 253 | "geoalchemy2 0.6.3 py_0 conda-forge\n", 254 | "geocoder 1.38.1 py_1 conda-forge\n", 255 | "geocube 0.2.0 pyhd8ed1ab_0 conda-forge\n", 256 | "geographiclib 1.52 pyhd8ed1ab_0 conda-forge\n", 257 | "geojson 2.5.0 py_0 conda-forge\n", 258 | "geomet 0.3.0 pyhd3deb0d_0 conda-forge\n", 259 | "geopandas 0.10.2 pyhd8ed1ab_1 conda-forge\n", 260 | "geopandas-base 0.10.2 pyha770c72_1 conda-forge\n", 261 | "geopy 2.2.0 pyhd8ed1ab_0 conda-forge\n", 262 | "geos 3.10.2 h9c3ff4c_0 conda-forge\n", 263 | "geospatial 0.5.6 pyhd8ed1ab_2 conda-forge\n", 264 | "geospatial-ml 0.1.0 pyhd8ed1ab_2 conda-forge\n", 265 | "geotiff 1.7.1 h509b78c_1 conda-forge\n", 266 | "geoviews 1.9.5 pyhd8ed1ab_0 conda-forge\n", 267 | "geoviews-core 1.9.5 pyha770c72_0 conda-forge\n", 268 | "gettext 0.19.8.1 h73d1719_1008 conda-forge\n", 269 | "gflags 2.2.2 he1b5a44_1004 conda-forge\n", 270 | "giflib 5.2.1 h36c2ea0_2 conda-forge\n", 271 | "gitdb 4.0.9 pyhd8ed1ab_0 conda-forge\n", 272 | "gitpython 3.1.27 pyhd8ed1ab_0 conda-forge\n", 273 | "gl2ps 1.4.2 h0708190_0 conda-forge\n", 274 | "glew 2.1.0 h9c3ff4c_2 conda-forge\n", 275 | "glog 0.5.0 h48cff8f_0 conda-forge\n", 276 | "gmp 6.2.1 h58526e2_0 conda-forge\n", 277 | "gnutls 3.6.13 h85f3911_1 conda-forge\n", 278 | "google-api-core 1.31.5 pyhd8ed1ab_0 conda-forge\n", 279 | "google-api-python-client 1.12.8 pyhd3deb0d_0 conda-forge\n", 280 | "google-auth 1.35.0 pyh6c4a22f_0 conda-forge\n", 281 | "google-auth-httplib2 0.1.0 pyhd8ed1ab_0 conda-forge\n", 282 | "google-auth-oauthlib 0.4.6 pyhd8ed1ab_0 conda-forge\n", 283 | "google-cloud-core 1.7.2 pyh6c4a22f_0 conda-forge\n", 284 | "google-cloud-storage 2.1.0 pyh6c4a22f_0 conda-forge\n", 285 | "google-crc32c 1.1.2 py310h82b6597_2 conda-forge\n", 286 | "google-pasta 0.2.0 pyh8c360ce_0 conda-forge\n", 287 | "google-resumable-media 2.1.0 pyh6c4a22f_0 conda-forge\n", 288 | "googleapis-common-protos 1.56.0 py310hff52083_0 conda-forge\n", 289 | "greenlet 1.1.2 py310hd8f1fbe_2 conda-forge\n", 290 | "grpc-cpp 1.42.0 ha1441d3_1 conda-forge\n", 291 | "grpcio 1.42.0 py310h94ab34a_0 conda-forge\n", 292 | "gst-plugins-base 1.20.1 hcf0ee16_1 conda-forge\n", 293 | "gstreamer 1.20.1 hd4edc92_1 conda-forge\n", 294 | "h3 3.7.2 h9c3ff4c_0 conda-forge\n", 295 | "h3-py 3.7.4 py310hd8f1fbe_0 conda-forge\n", 296 | "h5py 3.6.0 nompi_py310he751f51_100 conda-forge\n", 297 | "hdf4 4.2.15 h10796ff_3 conda-forge\n", 298 | "hdf5 1.12.1 nompi_h2386368_104 conda-forge\n", 299 | "heapdict 1.0.1 py_0 conda-forge\n", 300 | "here-map-widget-for-jupyter 1.1.3 pyhd8ed1ab_0 conda-forge\n", 301 | "holoviews 1.14.8 pyhd8ed1ab_0 conda-forge\n", 302 | "html2text 2020.1.16 py_0 conda-forge\n", 303 | "httplib2 0.20.4 pyhd8ed1ab_0 conda-forge\n", 304 | "httplib2shim 0.0.3 pyh9f0ad1d_0 conda-forge\n", 305 | "hvplot 0.7.3 pyh6c4a22f_0 conda-forge\n", 306 | "icu 69.1 h9c3ff4c_0 conda-forge\n", 307 | "idna 3.3 pyhd8ed1ab_0 conda-forge\n", 308 | "imagecodecs 2022.2.22 py310h31a0021_4 conda-forge\n", 309 | "imageio 2.17.0 pyhcf75d05_0 conda-forge\n", 310 | "importlib-metadata 4.11.3 py310hff52083_1 conda-forge\n", 311 | "importlib_metadata 4.11.3 hd8ed1ab_1 conda-forge\n", 312 | "importlib_resources 5.7.1 pyhd8ed1ab_0 conda-forge\n", 313 | "intel-openmp 2022.0.1 h06a4308_3633 \n", 314 | "ipycanvas 0.11.0 pyhd8ed1ab_0 conda-forge\n", 315 | "ipyevents 2.0.1 pyhd8ed1ab_0 conda-forge\n", 316 | "ipyfilechooser 0.6.0 pyhd8ed1ab_0 conda-forge\n", 317 | "ipygany 0.5.0 pyhd8ed1ab_0 conda-forge\n", 318 | "ipykernel 6.13.0 py310hfdc917e_0 conda-forge\n", 319 | "ipyleaflet 0.16.0 pyhd8ed1ab_3 conda-forge\n", 320 | "ipympl 0.9.0 pyhd8ed1ab_0 conda-forge\n", 321 | "ipynb-py-convert 0.4.6 pyh9f0ad1d_0 conda-forge\n", 322 | "ipysheet 0.5.0 pyhd8ed1ab_0 conda-forge\n", 323 | "ipython 8.2.0 py310hff52083_0 conda-forge\n", 324 | "ipython_genutils 0.2.0 py_1 conda-forge\n", 325 | "ipytree 0.2.1 pyhd8ed1ab_0 conda-forge\n", 326 | "ipyvtklink 0.2.2 pyhd8ed1ab_0 conda-forge\n", 327 | "ipywidgets 7.7.0 pyhd8ed1ab_0 conda-forge\n", 328 | "itsdangerous 2.1.2 pyhd8ed1ab_0 conda-forge\n", 329 | "jbig 2.1 h7f98852_2003 conda-forge\n", 330 | "jedi 0.18.1 py310hff52083_1 conda-forge\n", 331 | "jinja2 3.1.1 pyhd8ed1ab_0 conda-forge\n", 332 | "jmespath 1.0.0 pyhd8ed1ab_0 conda-forge\n", 333 | "joblib 1.1.0 pyhd8ed1ab_0 conda-forge\n", 334 | "jpeg 9e h166bdaf_1 conda-forge\n", 335 | "json-c 0.16 hc379101_0 conda-forge\n", 336 | "json5 0.9.5 pyh9f0ad1d_0 conda-forge\n", 337 | "jsoncpp 1.9.5 h4bd325d_1 conda-forge\n", 338 | "jsonschema 4.4.0 pyhd8ed1ab_0 conda-forge\n", 339 | "jupyter_client 7.2.2 pyhd8ed1ab_1 conda-forge\n", 340 | "jupyter_core 4.9.2 py310hff52083_0 conda-forge\n", 341 | "jupyter_server 1.16.0 pyhd8ed1ab_1 conda-forge\n", 342 | "jupyterlab 3.3.4 pyhd8ed1ab_0 conda-forge\n", 343 | "jupyterlab_pygments 0.2.2 pyhd8ed1ab_0 conda-forge\n", 344 | "jupyterlab_server 2.13.0 pyhd8ed1ab_1 conda-forge\n", 345 | "jupyterlab_widgets 1.1.0 pyhd8ed1ab_0 conda-forge\n", 346 | "jupytext 1.13.8 pyh4b9bcc7_0 conda-forge\n", 347 | "jxrlib 1.1 h7f98852_2 conda-forge\n", 348 | "kealib 1.4.14 h87e4c3c_3 conda-forge\n", 349 | "keplergl 0.3.2 pyhd8ed1ab_0 conda-forge\n", 350 | "keras 2.7.0 pyhd8ed1ab_0 conda-forge\n", 351 | "keras-preprocessing 1.1.2 pyhd8ed1ab_0 conda-forge\n", 352 | "keyutils 1.6.1 h166bdaf_0 conda-forge\n", 353 | "kiwisolver 1.4.2 py310hbf28c38_1 conda-forge\n", 354 | "kornia 0.6.4 pyhd8ed1ab_0 conda-forge\n", 355 | "krb5 1.19.3 h3790be6_0 conda-forge\n", 356 | "lame 3.100 h7f98852_1001 conda-forge\n", 357 | "large-image 1.14.1 pyhd8ed1ab_0 conda-forge\n", 358 | "large-image-source-gdal 1.14.1 pyhd8ed1ab_1 conda-forge\n", 359 | "lark-parser 0.12.0 pyhd8ed1ab_0 conda-forge\n", 360 | "laspy 2.1.2 pyh8a188c0_0 conda-forge\n", 361 | "lcms2 2.12 hddcbb42_0 conda-forge\n", 362 | "ld_impl_linux-64 2.36.1 hea4e1c9_2 conda-forge\n", 363 | "leafmap 0.9.1 pyhd8ed1ab_1 conda-forge\n", 364 | "lerc 3.0 h9c3ff4c_0 conda-forge\n", 365 | "libaec 1.0.6 h9c3ff4c_0 conda-forge\n", 366 | "libarchive 3.5.2 hccf745f_1 conda-forge\n", 367 | "libavif 0.10.1 h166bdaf_0 conda-forge\n", 368 | "libblas 3.9.0 14_linux64_mkl conda-forge\n", 369 | "libbrotlicommon 1.0.9 h166bdaf_7 conda-forge\n", 370 | "libbrotlidec 1.0.9 h166bdaf_7 conda-forge\n", 371 | "libbrotlienc 1.0.9 h166bdaf_7 conda-forge\n", 372 | "libcblas 3.9.0 14_linux64_mkl conda-forge\n", 373 | "libclang 13.0.1 default_hc23dcda_0 conda-forge\n", 374 | "libcrc32c 1.1.2 h9c3ff4c_0 conda-forge\n", 375 | "libcurl 7.82.0 h0b77cf5_0 \n", 376 | "libdap4 3.20.6 hd7c4107_2 conda-forge\n", 377 | "libdeflate 1.10 h7f98852_0 conda-forge\n", 378 | "libdrm 2.4.109 h7f98852_0 conda-forge\n", 379 | "libedit 3.1.20191231 he28a2e2_2 conda-forge\n", 380 | "libev 4.33 h516909a_1 conda-forge\n", 381 | "libevent 2.1.10 h9b69904_4 conda-forge\n", 382 | "libffi 3.4.2 h7f98852_5 conda-forge\n", 383 | "libgcc-ng 11.2.0 h1d223b6_16 conda-forge\n", 384 | "libgdal 3.4.2 hb785293_6 conda-forge\n", 385 | "libgfortran-ng 11.2.0 h69a702a_16 conda-forge\n", 386 | "libgfortran5 11.2.0 h5c6108e_16 conda-forge\n", 387 | "libglib 2.70.2 h174f98d_4 conda-forge\n", 388 | "libglu 9.0.0 he1b5a44_1001 conda-forge\n", 389 | "libgomp 11.2.0 h1d223b6_16 conda-forge\n", 390 | "libiconv 1.16 h516909a_0 conda-forge\n", 391 | "libkml 1.3.0 h238a007_1014 conda-forge\n", 392 | "liblapack 3.9.0 14_linux64_mkl conda-forge\n", 393 | "libllvm11 11.1.0 hf817b99_3 conda-forge\n", 394 | "libllvm13 13.0.1 hf817b99_2 conda-forge\n", 395 | "libmamba 0.22.1 hd8a31e3_1 conda-forge\n", 396 | "libmambapy 0.22.1 py310hab0e683_1 conda-forge\n", 397 | "libnetcdf 4.8.1 nompi_hb3fd0d9_101 conda-forge\n", 398 | "libnghttp2 1.46.0 hce63b2e_0 \n", 399 | "libnsl 2.0.0 h7f98852_0 conda-forge\n", 400 | "libogg 1.3.4 h7f98852_1 conda-forge\n", 401 | "libopus 1.3.1 h7f98852_1 conda-forge\n", 402 | "libpciaccess 0.16 h516909a_0 conda-forge\n", 403 | "libpng 1.6.37 h21135ba_2 conda-forge\n", 404 | "libpq 14.2 hd57d9b9_0 conda-forge\n", 405 | "libprotobuf 3.19.4 h780b84a_0 conda-forge\n", 406 | "libpysal 4.6.2 pyhd8ed1ab_0 conda-forge\n", 407 | "librttopo 1.1.0 hf69c175_9 conda-forge\n", 408 | "libsodium 1.0.18 h36c2ea0_1 conda-forge\n", 409 | "libsolv 0.7.20 h4ff587b_0 \n", 410 | "libspatialindex 1.9.3 h9c3ff4c_4 conda-forge\n", 411 | "libspatialite 5.0.1 ha867d66_15 conda-forge\n", 412 | "libssh2 1.10.0 ha56f1ee_2 conda-forge\n", 413 | "libstdcxx-ng 11.2.0 he4da1e4_16 conda-forge\n", 414 | "libtheora 1.1.1 h7f98852_1005 conda-forge\n", 415 | "libthrift 0.15.0 he6d91bd_1 conda-forge\n", 416 | "libtiff 4.3.0 h542a066_3 conda-forge\n", 417 | "libutf8proc 2.7.0 h7f98852_0 conda-forge\n", 418 | "libuuid 2.32.1 h7f98852_1000 conda-forge\n", 419 | "libva 2.14.0 h7f98852_0 conda-forge\n", 420 | "libvorbis 1.3.7 h9c3ff4c_0 conda-forge\n", 421 | "libvpx 1.11.0 h9c3ff4c_3 conda-forge\n", 422 | "libwebp-base 1.2.2 h7f98852_1 conda-forge\n", 423 | "libxcb 1.13 h7f98852_1004 conda-forge\n", 424 | "libxkbcommon 1.0.3 he3ba5ed_0 conda-forge\n", 425 | "libxml2 2.9.12 h885dcf4_1 conda-forge\n", 426 | "libzip 1.8.0 h4de3113_1 conda-forge\n", 427 | "libzlib 1.2.11 h166bdaf_1014 conda-forge\n", 428 | "libzopfli 1.0.3 h9c3ff4c_0 conda-forge\n", 429 | "lightgbm 3.3.2 py310h122e73d_0 conda-forge\n", 430 | "llvmlite 0.38.0 py310h58363a5_1 conda-forge\n", 431 | "localtileserver 0.5.3 pyhd8ed1ab_0 conda-forge\n", 432 | "locket 1.0.0 pyhd8ed1ab_0 conda-forge\n", 433 | "loguru 0.6.0 py310hff52083_1 conda-forge\n", 434 | "logzero 1.7.0 py310hff52083_2 conda-forge\n", 435 | "lz4 4.0.0 py310h5d5e884_1 conda-forge\n", 436 | "lz4-c 1.9.3 h9c3ff4c_1 conda-forge\n", 437 | "lzo 2.10 h516909a_1000 conda-forge\n", 438 | "mamba 0.22.1 py310hf87f941_1 conda-forge\n", 439 | "mapboxgl 0.10.2 py_1 conda-forge\n", 440 | "mapclassify 2.4.3 pyhd8ed1ab_0 conda-forge\n", 441 | "markdown 3.3.6 pyhd8ed1ab_0 conda-forge\n", 442 | "markdown-it-py 2.1.0 pyhd8ed1ab_0 conda-forge\n", 443 | "markupsafe 2.1.1 py310h5764c6d_1 conda-forge\n", 444 | "marshmallow 3.15.0 pyhd8ed1ab_1 conda-forge\n", 445 | "marshmallow-enum 1.5.1 pyh9f0ad1d_3 conda-forge\n", 446 | "matplotlib 3.4.3 py310hff52083_2 conda-forge\n", 447 | "matplotlib-base 3.4.3 py310h23f4a51_2 conda-forge\n", 448 | "matplotlib-inline 0.1.3 pyhd8ed1ab_0 conda-forge\n", 449 | "mdit-py-plugins 0.3.0 pyhd8ed1ab_0 conda-forge\n", 450 | "mdurl 0.1.0 pyhd8ed1ab_0 conda-forge\n", 451 | "mercantile 1.2.1 pyhd8ed1ab_0 conda-forge\n", 452 | "mistune 0.8.4 py310h6acc77f_1005 conda-forge\n", 453 | "mkl 2022.0.1 h06a4308_117 \n", 454 | "morecantile 3.1.2 pyhd8ed1ab_0 conda-forge\n", 455 | "movingpandas 0.9rc3 pyhd8ed1ab_0 conda-forge\n", 456 | "msgpack-python 1.0.3 py310hbf28c38_1 conda-forge\n", 457 | "multidict 6.0.2 py310h5764c6d_1 conda-forge\n", 458 | "multipledispatch 0.6.0 py_0 conda-forge\n", 459 | "munch 2.5.0 py_0 conda-forge\n", 460 | "mypy_extensions 0.4.3 py310hff52083_5 conda-forge\n", 461 | "mysql-common 8.0.28 haf5c9bc_4 conda-forge\n", 462 | "mysql-libs 8.0.28 h28c427c_4 conda-forge\n", 463 | "nbclassic 0.3.7 pyhd8ed1ab_0 conda-forge\n", 464 | "nbclient 0.5.13 pyhd8ed1ab_0 conda-forge\n", 465 | "nbconvert 6.5.0 pyhd8ed1ab_0 conda-forge\n", 466 | "nbconvert-core 6.5.0 pyhd8ed1ab_0 conda-forge\n", 467 | "nbconvert-pandoc 6.5.0 pyhd8ed1ab_0 conda-forge\n", 468 | "nbformat 5.3.0 pyhd8ed1ab_0 conda-forge\n", 469 | "nccl 2.12.10.1 h1a5f58c_0 conda-forge\n", 470 | "ncurses 6.3 h7f8727e_2 \n", 471 | "nest-asyncio 1.5.5 pyhd8ed1ab_0 conda-forge\n", 472 | "netcdf4 1.5.8 nompi_py310hd7ca5b8_101 conda-forge\n", 473 | "nettle 3.6 he412f7d_0 conda-forge\n", 474 | "networkx 2.8 pyhd8ed1ab_0 conda-forge\n", 475 | "ninja 1.10.2 h4bd325d_1 conda-forge\n", 476 | "noise 1.2.2 py310h6acc77f_1002 conda-forge\n", 477 | "notebook 6.4.11 pyha770c72_0 conda-forge\n", 478 | "notebook-shim 0.1.0 pyhd8ed1ab_0 conda-forge\n", 479 | "nspr 4.32 h9c3ff4c_1 conda-forge\n", 480 | "nss 3.77 h2350873_0 conda-forge\n", 481 | "numba 0.55.0 py310h00e6091_0 \n", 482 | "numcodecs 0.9.1 py310h122e73d_2 conda-forge\n", 483 | "numexpr 2.7.3 py310hb5077e9_1 conda-forge\n", 484 | "numpy 1.22.3 py310h45f3432_2 conda-forge\n", 485 | "oauthlib 3.2.0 pyhd8ed1ab_0 conda-forge\n", 486 | "odc-geo 0.1.1 pyhd8ed1ab_0 conda-forge\n", 487 | "odc-stac 0.2.4 pyhd8ed1ab_0 conda-forge\n", 488 | "olefile 0.46 pyh9f0ad1d_1 conda-forge\n", 489 | "omegaconf 2.1.2 py310hff52083_0 conda-forge\n", 490 | "openh264 2.1.1 h780b84a_0 conda-forge\n", 491 | "openjpeg 2.4.0 hb52868f_1 conda-forge\n", 492 | "openssl 1.1.1n h166bdaf_0 conda-forge\n", 493 | "opt_einsum 3.3.0 pyhd8ed1ab_1 conda-forge\n", 494 | "orc 1.7.2 h1be678f_0 conda-forge\n", 495 | "orjson 3.6.8 py310h5764c6d_0 conda-forge\n", 496 | "osmnx 1.1.2 pyhd8ed1ab_0 conda-forge\n", 497 | "owslib 0.25.0 pyhd8ed1ab_0 conda-forge\n", 498 | "packaging 21.3 pyhd8ed1ab_0 conda-forge\n", 499 | "palettable 3.3.0 py_0 conda-forge\n", 500 | "pandas 1.4.2 py310h769672d_1 conda-forge\n", 501 | "pandoc 2.18 ha770c72_0 conda-forge\n", 502 | "pandocfilters 1.5.0 pyhd8ed1ab_0 conda-forge\n", 503 | "panel 0.12.6 pyhd8ed1ab_0 conda-forge\n", 504 | "param 1.12.1 pyh6c4a22f_0 conda-forge\n", 505 | "parquet-cpp 1.5.1 2 conda-forge\n", 506 | "parso 0.8.3 pyhd8ed1ab_0 conda-forge\n", 507 | "partd 1.2.0 pyhd8ed1ab_0 conda-forge\n", 508 | "pathspec 0.9.0 pyhd8ed1ab_0 conda-forge\n", 509 | "patsy 0.5.2 pyhd8ed1ab_0 conda-forge\n", 510 | "pcre 8.45 h9c3ff4c_0 conda-forge\n", 511 | "pexpect 4.8.0 pyh9f0ad1d_2 conda-forge\n", 512 | "pickleshare 0.7.5 py_1003 conda-forge\n", 513 | "pillow 8.4.0 py310h07f4688_0 conda-forge\n", 514 | "pip 21.2.4 py310h06a4308_0 \n", 515 | "pixman 0.40.0 h36c2ea0_0 conda-forge\n", 516 | "planetary-computer 0.4.6 pyhd8ed1ab_0 conda-forge\n", 517 | "platformdirs 2.5.1 pyhd8ed1ab_0 conda-forge\n", 518 | "plotly 5.7.0 pyhd8ed1ab_0 conda-forge\n", 519 | "pooch 1.6.0 pyhd8ed1ab_0 conda-forge\n", 520 | "poppler 22.01.0 h1434ded_2 conda-forge\n", 521 | "poppler-data 0.4.11 hd8ed1ab_0 conda-forge\n", 522 | "postgresql 14.2 h2510834_0 conda-forge\n", 523 | "pretrainedmodels 0.7.4 pyhd8ed1ab_2 conda-forge\n", 524 | "proj 9.0.0 h93bde94_1 conda-forge\n", 525 | "prometheus_client 0.14.1 pyhd8ed1ab_0 conda-forge\n", 526 | "prompt-toolkit 3.0.29 pyha770c72_0 conda-forge\n", 527 | "proplot 0.9.5 pyhd8ed1ab_1 conda-forge\n", 528 | "protobuf 3.19.4 py310h122e73d_0 conda-forge\n", 529 | "pscript 0.7.5 pyhd3deb0d_0 conda-forge\n", 530 | "psutil 5.9.0 py310h5764c6d_1 conda-forge\n", 531 | "psycopg2 2.9.3 py310h6acc77f_0 conda-forge\n", 532 | "pthread-stubs 0.4 h36c2ea0_1001 conda-forge\n", 533 | "ptyprocess 0.7.0 pyhd3deb0d_0 conda-forge\n", 534 | "pugixml 1.11.4 h9c3ff4c_0 conda-forge\n", 535 | "pure_eval 0.2.2 pyhd8ed1ab_0 conda-forge\n", 536 | "pyarrow 6.0.1 py310h1a3fb3d_8_cpu conda-forge\n", 537 | "pyasn1 0.4.8 py_0 conda-forge\n", 538 | "pyasn1-modules 0.2.7 py_0 conda-forge\n", 539 | "pybind11-abi 4 hd8ed1ab_3 conda-forge\n", 540 | "pycosat 0.6.3 py310h5764c6d_1010 conda-forge\n", 541 | "pycparser 2.21 pyhd8ed1ab_0 conda-forge\n", 542 | "pycrs 1.0.2 py_0 conda-forge\n", 543 | "pyct 0.4.6 py_0 conda-forge\n", 544 | "pyct-core 0.4.6 py_0 conda-forge\n", 545 | "pydantic 1.9.0 py310h5764c6d_1 conda-forge\n", 546 | "pydeck 0.7.1 pyh6c4a22f_0 conda-forge\n", 547 | "pydeprecate 0.3.1 pyhd8ed1ab_0 conda-forge\n", 548 | "pyepsg 0.4.0 py_0 conda-forge\n", 549 | "pygeos 0.12.0 py310hb974679_2 conda-forge\n", 550 | "pygments 2.11.2 pyhd8ed1ab_0 conda-forge\n", 551 | "pyjwt 2.3.0 pyhd8ed1ab_1 conda-forge\n", 552 | "pykdtree 1.3.4 py310hde88566_3 conda-forge\n", 553 | "pympler 0.9 pyh9f0ad1d_0 conda-forge\n", 554 | "pyntcloud 0.2.0 pyhd8ed1ab_0 conda-forge\n", 555 | "pyopenssl 22.0.0 pyhd8ed1ab_0 conda-forge\n", 556 | "pyorbital 1.7.1 pyhd8ed1ab_0 conda-forge\n", 557 | "pyparsing 3.0.8 pyhd8ed1ab_0 conda-forge\n", 558 | "pyproj 3.3.0 py310h9bf108f_3 conda-forge\n", 559 | "pyqt 5.12.3 py310hff52083_8 conda-forge\n", 560 | "pyqt-impl 5.12.3 py310h1f8e252_8 conda-forge\n", 561 | "pyqt5-sip 4.19.18 py310h122e73d_8 conda-forge\n", 562 | "pyqtchart 5.12 py310hfcd6d55_8 conda-forge\n", 563 | "pyqtwebengine 5.12.1 py310hfcd6d55_8 conda-forge\n", 564 | "pyresample 1.23.0 py310h769672d_1 conda-forge\n", 565 | "pyrsistent 0.18.1 py310h5764c6d_1 conda-forge\n", 566 | "pyshp 2.2.0 pyhd8ed1ab_0 conda-forge\n", 567 | "pysocks 1.7.1 py310hff52083_5 conda-forge\n", 568 | "pyspectral 0.11.0 pyhd8ed1ab_0 conda-forge\n", 569 | "pystac 1.1.0 pyhd8ed1ab_0 conda-forge\n", 570 | "pystac-client 0.3.0 pyhd8ed1ab_0 conda-forge\n", 571 | "pytables 3.7.0 py310hf5df6ce_0 conda-forge\n", 572 | "python 3.10.4 h9a8a25e_0_cpython conda-forge\n", 573 | "python-box 6.0.2 pyhd8ed1ab_0 conda-forge\n", 574 | "python-dateutil 2.8.2 pyhd8ed1ab_0 conda-forge\n", 575 | "python-fastjsonschema 2.15.3 pyhd8ed1ab_0 conda-forge\n", 576 | "python-flatbuffers 2.0 pyhd8ed1ab_0 conda-forge\n", 577 | "python-geotiepoints 1.4.0 py310hde88566_0 conda-forge\n", 578 | "python-levenshtein 0.12.2 py310h5764c6d_2 conda-forge\n", 579 | "python-mss 6.1.0 pyhd3deb0d_0 conda-forge\n", 580 | "python-tzdata 2022.1 pyhd8ed1ab_0 conda-forge\n", 581 | "python_abi 3.10 2_cp310 conda-forge\n", 582 | "pytorch 1.11.0 cpu_py310h2272b30_0 conda-forge\n", 583 | "pytorch-lightning 1.5.8 pyhd8ed1ab_0 conda-forge\n", 584 | "pytz 2022.1 pyhd8ed1ab_0 conda-forge\n", 585 | "pytz-deprecation-shim 0.1.0.post0 py310hff52083_1 conda-forge\n", 586 | "pyu2f 0.1.5 pyhd8ed1ab_0 conda-forge\n", 587 | "pyvista 0.34.0 pyhd8ed1ab_0 conda-forge\n", 588 | "pyviz_comms 2.2.0 pyhd8ed1ab_0 conda-forge\n", 589 | "pywavelets 1.3.0 py310hde88566_1 conda-forge\n", 590 | "pyyaml 6.0 py310h5764c6d_4 conda-forge\n", 591 | "pyzmq 22.3.0 py310h330234f_2 conda-forge\n", 592 | "qt 5.12.9 h1304e3e_6 conda-forge\n", 593 | "radiant-mlhub 0.4.1 pyhd8ed1ab_0 conda-forge\n", 594 | "rasterio 1.2.10 py310hdadb6e9_5 conda-forge\n", 595 | "rasterstats 0.16.0 pyhd8ed1ab_0 conda-forge\n", 596 | "ratelim 0.1.6 py_2 conda-forge\n", 597 | "re2 2021.11.01 h9c3ff4c_0 conda-forge\n", 598 | "readline 8.1.2 h7f8727e_1 \n", 599 | "reproc 14.2.3 h7f98852_0 conda-forge\n", 600 | "reproc-cpp 14.2.3 h9c3ff4c_0 conda-forge\n", 601 | "requests 2.27.1 pyhd8ed1ab_0 conda-forge\n", 602 | "requests-oauthlib 1.3.1 pyhd8ed1ab_0 conda-forge\n", 603 | "rio-cogeo 3.2.0 pyhd8ed1ab_0 conda-forge\n", 604 | "rioxarray 0.11.1 pyhd8ed1ab_0 conda-forge\n", 605 | "rsa 4.8 pyhd8ed1ab_0 conda-forge\n", 606 | "rtree 1.0.0 py310hbdcdc62_1 conda-forge\n", 607 | "ruamel.yaml 0.17.21 py310h5764c6d_1 conda-forge\n", 608 | "ruamel.yaml.clib 0.2.6 py310h5764c6d_1 conda-forge\n", 609 | "ruamel_yaml 0.15.80 py310h6acc77f_1006 conda-forge\n", 610 | "s2cloudless 1.5.0 pyhd8ed1ab_0 conda-forge\n", 611 | "s2n 1.0.10 h9b69904_0 conda-forge\n", 612 | "s3transfer 0.5.2 pyhd8ed1ab_0 conda-forge\n", 613 | "sankee 0.0.7 pyhd8ed1ab_0 conda-forge\n", 614 | "sarpy 1.2.69 pyhd8ed1ab_0 conda-forge\n", 615 | "satpy 0.36.0 pyhd8ed1ab_0 conda-forge\n", 616 | "scikit-gstat 1.0.1 py310hff52083_0 conda-forge\n", 617 | "scikit-image 0.19.2 py310hb5077e9_0 conda-forge\n", 618 | "scikit-learn 1.0.2 py310h1246948_0 conda-forge\n", 619 | "scikit-plot 0.3.7 py_1 conda-forge\n", 620 | "scipy 1.8.0 py310hea5193d_1 conda-forge\n", 621 | "scooby 0.5.12 pyhd8ed1ab_0 conda-forge\n", 622 | "seaborn 0.11.2 hd8ed1ab_0 conda-forge\n", 623 | "seaborn-base 0.11.2 pyhd8ed1ab_0 conda-forge\n", 624 | "segmentation-models-pytorch 0.2.1 pyhd8ed1ab_0 conda-forge\n", 625 | "semver 2.13.0 pyh9f0ad1d_0 conda-forge\n", 626 | "send2trash 1.8.0 pyhd8ed1ab_0 conda-forge\n", 627 | "sentinelhub 3.4.4 pyhd8ed1ab_0 conda-forge\n", 628 | "sentinelsat 1.1.1 pyhd8ed1ab_0 conda-forge\n", 629 | "setuptools 61.2.0 py310h06a4308_0 \n", 630 | "shapely 1.8.0 py310hb974679_6 conda-forge\n", 631 | "simplejson 3.17.6 py310h5764c6d_1 conda-forge\n", 632 | "six 1.16.0 pyh6c4a22f_0 conda-forge\n", 633 | "sleef 3.5.1 h9b69904_2 conda-forge\n", 634 | "sliderule 1.4.0 pyhd8ed1ab_0 conda-forge\n", 635 | "smmap 3.0.5 pyh44b312d_0 conda-forge\n", 636 | "snappy 1.1.8 he1b5a44_3 conda-forge\n", 637 | "sniffio 1.2.0 py310hff52083_3 conda-forge\n", 638 | "snuggs 1.4.7 py_0 conda-forge\n", 639 | "sortedcontainers 2.4.0 pyhd8ed1ab_0 conda-forge\n", 640 | "soupsieve 2.3.1 pyhd8ed1ab_0 conda-forge\n", 641 | "spyndex 0.0.5 pyhd8ed1ab_0 conda-forge\n", 642 | "sqlalchemy 1.4.35 py310h5764c6d_0 conda-forge\n", 643 | "sqlite 3.38.2 hc218d9a_0 \n", 644 | "stack_data 0.2.0 pyhd8ed1ab_0 conda-forge\n", 645 | "stackstac 0.4.1 pyhd8ed1ab_0 conda-forge\n", 646 | "statsmodels 0.13.2 py310h96516ba_0 conda-forge\n", 647 | "streamlit 1.8.0 pyhd8ed1ab_0 conda-forge\n", 648 | "streamlit-folium 0.6.6 pyhd8ed1ab_0 conda-forge\n", 649 | "stringcase 1.2.0 py_0 conda-forge\n", 650 | "svt-av1 0.9.1 h27087fc_0 conda-forge\n", 651 | "tbb 2021.5.0 h924138e_1 conda-forge\n", 652 | "tbb-devel 2021.5.0 h924138e_1 conda-forge\n", 653 | "tblib 1.7.0 pyhd8ed1ab_0 conda-forge\n", 654 | "tenacity 8.0.1 pyhd8ed1ab_0 conda-forge\n", 655 | "tensorboard 2.6.0 pyhd8ed1ab_1 conda-forge\n", 656 | "tensorboard-data-server 0.6.0 py310h597c629_2 conda-forge\n", 657 | "tensorboard-plugin-wit 1.8.1 pyhd8ed1ab_0 conda-forge\n", 658 | "tensorflow 2.7.0 cuda102py310hcf4adbc_0 conda-forge\n", 659 | "tensorflow-base 2.7.0 cuda102py310hf4be40b_0 conda-forge\n", 660 | "tensorflow-estimator 2.7.0 cuda102py310hac962ef_0 conda-forge\n", 661 | "termcolor 1.1.0 py_2 conda-forge\n", 662 | "terminado 0.13.3 py310hff52083_1 conda-forge\n", 663 | "threadpoolctl 3.1.0 pyh8a188c0_0 conda-forge\n", 664 | "tifffile 2022.4.8 pyhd8ed1ab_0 conda-forge\n", 665 | "tiledb 2.8.1 h1e4a385_0 conda-forge\n", 666 | "timm 0.4.12 pyhd8ed1ab_0 conda-forge\n", 667 | "tinycss2 1.1.1 pyhd8ed1ab_0 conda-forge\n", 668 | "tk 8.6.12 h27826a3_0 conda-forge\n", 669 | "tokenize-rt 4.2.1 pyhd8ed1ab_0 conda-forge\n", 670 | "toml 0.10.2 pyhd8ed1ab_0 conda-forge\n", 671 | "tomli 2.0.1 pyhd8ed1ab_0 conda-forge\n", 672 | "toolz 0.11.2 pyhd8ed1ab_0 conda-forge\n", 673 | "torchgeo 0.2.0 pyhd8ed1ab_0 conda-forge\n", 674 | "torchmetrics 0.8.0 pyhd8ed1ab_0 conda-forge\n", 675 | "torchvision 0.12.0 cpu_py310hafc6a86_1 conda-forge\n", 676 | "tornado 6.1 py310h5764c6d_3 conda-forge\n", 677 | "tqdm 4.64.0 pyhd8ed1ab_0 conda-forge\n", 678 | "traitlets 5.1.1 pyhd8ed1ab_0 conda-forge\n", 679 | "traittypes 0.2.1 pyh9f0ad1d_2 conda-forge\n", 680 | "trollimage 1.18.3 pyhd8ed1ab_0 conda-forge\n", 681 | "trollsift 0.4.0 pyhd8ed1ab_0 conda-forge\n", 682 | "typed-ast 1.5.3 py310h5764c6d_0 conda-forge\n", 683 | "typing-extensions 4.2.0 hd8ed1ab_1 conda-forge\n", 684 | "typing_extensions 4.2.0 pyha770c72_1 conda-forge\n", 685 | "typing_inspect 0.7.1 pyh6c4a22f_0 conda-forge\n", 686 | "tzcode 2022a h166bdaf_0 conda-forge\n", 687 | "tzdata 2022a hda174b7_0 \n", 688 | "tzlocal 4.2 py310hff52083_0 conda-forge\n", 689 | "uritemplate 3.0.1 py_0 conda-forge\n", 690 | "urllib3 1.26.9 pyhd8ed1ab_0 conda-forge\n", 691 | "utfcpp 3.2.1 ha770c72_0 conda-forge\n", 692 | "utm 0.7.0 pyhd8ed1ab_0 conda-forge\n", 693 | "validators 0.18.2 pyhd3deb0d_0 conda-forge\n", 694 | "verde 1.7.0 pyhd8ed1ab_0 conda-forge\n", 695 | "voila 0.3.5 pyhd8ed1ab_0 conda-forge\n", 696 | "vtk 9.1.0 qt_py310hf3393c1_207 conda-forge\n", 697 | "watchdog 2.1.7 py310hff52083_1 conda-forge\n", 698 | "wcwidth 0.2.5 pyh9f0ad1d_2 conda-forge\n", 699 | "webencodings 0.5.1 py_1 conda-forge\n", 700 | "websocket-client 1.3.2 pyhd8ed1ab_0 conda-forge\n", 701 | "websockets 10.3 py310h5764c6d_0 conda-forge\n", 702 | "werkzeug 2.1.1 pyhd8ed1ab_0 conda-forge\n", 703 | "wheel 0.37.1 pyhd3eb1b0_0 \n", 704 | "whitebox 2.1.2 pyhd8ed1ab_0 conda-forge\n", 705 | "whiteboxgui 0.7.0 pyhd8ed1ab_0 conda-forge\n", 706 | "widgetsnbextension 3.6.0 py310hff52083_0 conda-forge\n", 707 | "wrapt 1.14.0 py310h5764c6d_1 conda-forge\n", 708 | "wxee 0.3.2 pyhd8ed1ab_0 conda-forge\n", 709 | "x264 1!161.3030 h7f98852_1 conda-forge\n", 710 | "x265 3.5 h924138e_3 conda-forge\n", 711 | "xarray 2022.3.0 pyhd8ed1ab_0 conda-forge\n", 712 | "xarray-spatial 0.3.3 pyhd8ed1ab_0 conda-forge\n", 713 | "xerces-c 3.2.3 h8ce2273_4 conda-forge\n", 714 | "xmltodict 0.12.0 py_0 conda-forge\n", 715 | "xmovie 0.3.1 pyhd8ed1ab_0 conda-forge\n", 716 | "xorg-fixesproto 5.0 h7f98852_1002 conda-forge\n", 717 | "xorg-kbproto 1.0.7 h7f98852_1002 conda-forge\n", 718 | "xorg-libice 1.0.10 h7f98852_0 conda-forge\n", 719 | "xorg-libsm 1.2.3 hd9c2040_1000 conda-forge\n", 720 | "xorg-libx11 1.7.2 h7f98852_0 conda-forge\n", 721 | "xorg-libxau 1.0.9 h7f98852_0 conda-forge\n", 722 | "xorg-libxdmcp 1.1.3 h7f98852_0 conda-forge\n", 723 | "xorg-libxext 1.3.4 h7f98852_1 conda-forge\n", 724 | "xorg-libxfixes 5.0.3 h7f98852_1004 conda-forge\n", 725 | "xorg-libxrender 0.9.10 h7f98852_1003 conda-forge\n", 726 | "xorg-libxt 1.2.1 h7f98852_2 conda-forge\n", 727 | "xorg-renderproto 0.11.1 h7f98852_1002 conda-forge\n", 728 | "xorg-xextproto 7.3.0 h7f98852_1002 conda-forge\n", 729 | "xorg-xproto 7.0.31 h7f98852_1007 conda-forge\n", 730 | "xyzservices 2022.4.0 pyhd8ed1ab_0 conda-forge\n", 731 | "xz 5.2.5 h7b6447c_0 \n", 732 | "yaml 0.2.5 h7f98852_2 conda-forge\n", 733 | "yaml-cpp 0.6.3 he1b5a44_4 conda-forge\n", 734 | "yarl 1.7.2 py310h5764c6d_2 conda-forge\n", 735 | "zarr 2.11.3 pyhd8ed1ab_0 conda-forge\n", 736 | "zeromq 4.3.4 h9c3ff4c_1 conda-forge\n", 737 | "zfp 0.5.5 h9c3ff4c_8 conda-forge\n", 738 | "zict 2.1.0 pyhd8ed1ab_0 conda-forge\n", 739 | "zipp 3.8.0 pyhd8ed1ab_0 conda-forge\n", 740 | "zlib 1.2.11 h166bdaf_1014 conda-forge\n", 741 | "zstd 1.5.2 ha95c52a_0 conda-forge\n" 742 | ] 743 | } 744 | ], 745 | "source": [ 746 | "!conda list" 747 | ] 748 | } 749 | ], 750 | "metadata": { 751 | "kernelspec": { 752 | "display_name": "Python 3 (ipykernel)", 753 | "language": "python", 754 | "name": "python3" 755 | }, 756 | "language_info": { 757 | "codemirror_mode": { 758 | "name": "ipython", 759 | "version": 3 760 | }, 761 | "file_extension": ".py", 762 | "mimetype": "text/x-python", 763 | "name": "python", 764 | "nbconvert_exporter": "python", 765 | "pygments_lexer": "ipython3", 766 | "version": "3.10.4" 767 | } 768 | }, 769 | "nbformat": 4, 770 | "nbformat_minor": 5 771 | } 772 | -------------------------------------------------------------------------------- /docs/installation.md: -------------------------------------------------------------------------------- 1 | # Installation 2 | 3 | The **geospatial-ml** package has many dependencies, such as [GeoPandas](https://geopandas.org) and [localtileserver](https://github.com/banesullivan/localtileserver). These optional dependencies can sometimes be a challenge to install, especially on Windows. Therefore, we advise you to closely follow the recommendations below to avoid installation problems. 4 | 5 | 8 | 9 | ## Installing with Anaconda/Miniconda 10 | 11 | To install geospatial-ml and all its dependencies, we recommend you use the [conda](https://conda.io/en/latest) package manager. This can be obtained by installing the [Anaconda Distribution](https://www.anaconda.com/distribution) (a free Python distribution for data science), or through [Miniconda](https://docs.conda.io/en/latest/miniconda.html) (minimal distribution only containing Python and the conda package manager). See also the [installation docs](https://conda.io/docs/user-guide/install/download.html) for more information on how to install Anaconda or Miniconda locally. 12 | 13 | ### Using the conda-forge channel 14 | 15 | Geospatial-ml is available on the [conda-forge](https://anaconda.org/conda-forge/geospatial-ml) channel, a community effort that provides [conda packages](https://conda-forge.org) for a wide range of software. 16 | 17 | ```bash 18 | conda install -c conda-forge geospatial-ml 19 | ``` 20 | 21 | ### Creating a new conda environment 22 | 23 | Creating a new environment is not strictly necessary, but given that some geospatial-ml dependencies might have a version conflict with other geospatial-ml packages in an existing conda environment, it is a good practice to install geospatial-ml and its dependencies in a clean environment starting fresh. 24 | 25 | The following commands create a new conda environment with the name `geo` and install geospatial-ml and its dependencies (e.g., GeoPandas, localtileserver) in it: 26 | 27 | ```bash 28 | conda create -n geo python=3.9 29 | conda activate geo 30 | conda install geopandas 31 | conda install geospatial-ml -c conda-forge 32 | ``` 33 | 34 | **Important note:** If you are using Windows, we advise you to closely follow the installation instructions above to install GeoPandas from the default conda channel (`conda install geopandas`) rather than from the conda-forge channel. This can avoid a potential `spatialindex_c-64.dll` error when using GeoPandas ([source](https://github.com/geopandas/geopandas/issues/1812)). If you are using Linux or macOS, it is okay to install all geospatial-ml dependencies from the conda-forge channel with the following command: 35 | 36 | ```bash 37 | conda install -c conda-forge geospatial-ml 38 | ``` 39 | 40 | ### Using Mamba 41 | 42 | When installing packages using the conda package manager, sometimes it can take a while for conda to resolve dependencies. If it takes too long or fails to resolve dependencies, you can try using the [Mamba](https://mamba.readthedocs.io/en/latest) package manager to install geospatial-ml and its dependencies. Mamba is a fast, robust, and cross-platform package manager. It runs on Windows, macOS, and Linux, and is fully compatible with conda packages and supports most of conda’s commands. Once Mamba is installed in a conda environment, you can then simply replace any `conda` command with `mamba`. For example, to install geospatial-ml and its dependencies with Mamba, you can use the following commands: 43 | 44 | ```bash 45 | conda create -n geo python=3.9 46 | conda activate geo 47 | conda install -c conda-forge mamba 48 | mamba install geopandas 49 | mamba install -c conda-forge geospatial-ml 50 | ``` 51 | 52 | ## Installing with pip 53 | 54 | geospatial-ml is also available on [PyPI](https://pypi.org/project/geospatial-ml). It can be installed with pip using the following command: 55 | 56 | ```bash 57 | pip install geospatial-ml 58 | ``` 59 | 60 | All optional dependencies of geospatial-ml are listed in [requirements_dev.txt](https://github.com/giswqs/geospatial-ml/blob/master/requirements_dev.txt). 61 | 62 | ## Installing from source 63 | 64 | You may install the latest development version by cloning the GitHub repository with [Git](https://git-scm.com) and using pip to install from the local directory: 65 | 66 | ```bash 67 | git clone https://github.com/giswqs/geospatial-ml.git 68 | cd geospatial-ml 69 | pip install . 70 | ``` 71 | 72 | It is also possible to install the latest development version directly from the GitHub repository with: 73 | 74 | ```bash 75 | pip install git+https://github.com/giswqs/geospatial-ml.git 76 | ``` 77 | 78 | ## Upgrading geospatial-ml 79 | 80 | If you have installed geospatial-ml before and want to upgrade to the latest version, you can run the following command in your terminal: 81 | 82 | ```bash 83 | pip install -U geospatial-ml 84 | ``` 85 | 86 | If you use conda, you can update geospatial-ml to the latest version by running the following command in your terminal: 87 | 88 | ```bash 89 | conda update -c conda-forge geospatial-ml 90 | ``` 91 | -------------------------------------------------------------------------------- /docs/overrides/main.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block content %} 4 | {% if page.nb_url %} 5 | 6 | {% include ".icons/material/download.svg" %} 7 | 8 | {% endif %} 9 | 10 | {{ super() }} 11 | {% endblock content %} 12 | -------------------------------------------------------------------------------- /docs/usage.md: -------------------------------------------------------------------------------- 1 | # Usage 2 | 3 | Currently, the `geospatial-ml` package only helps you install commonly used packages for geospatial analysis and machine learning with only one command, making it easier to set up a conda environment for geospatial analysis and avoid dependency conflicts during installation. The `geospatial-ml` package itself does not have any meaningful functions yet. After installation, you can continue to the commonly used geospatial packages as usual. For example: 4 | 5 | ```python 6 | import leafmap 7 | m = leafmap.Map() 8 | m 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/colab.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": null, 6 | "id": "213db57c-a9d6-498f-b33c-216daafafa6f", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "!pip install geospatial-ml" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": null, 16 | "id": "dcb9503d-1b6f-4a7d-9ee2-c5a3e15664f0", 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import leafmap" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": null, 26 | "id": "2e120f6e-4cc1-481b-a1c9-36b574c55aec", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "m = leafmap.Map()\n", 31 | "m.add_basemap(\"OpenTopoMap\")\n", 32 | "m" 33 | ] 34 | } 35 | ], 36 | "metadata": { 37 | "kernelspec": { 38 | "display_name": "Python 3", 39 | "language": "python", 40 | "name": "python3" 41 | }, 42 | "language_info": { 43 | "codemirror_mode": { 44 | "name": "ipython", 45 | "version": 3 46 | }, 47 | "file_extension": ".py", 48 | "mimetype": "text/x-python", 49 | "name": "python", 50 | "nbconvert_exporter": "python", 51 | "pygments_lexer": "ipython3", 52 | "version": "3.10.4" 53 | } 54 | }, 55 | "nbformat": 4, 56 | "nbformat_minor": 5 57 | } 58 | -------------------------------------------------------------------------------- /examples/examples.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "abef7881-70c4-401f-bafa-be17fbd36710", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "import leafmap" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "id": "31522b98-f361-4b8b-8e48-beced7cd0187", 17 | "metadata": {}, 18 | "outputs": [ 19 | { 20 | "data": { 21 | "application/vnd.jupyter.widget-view+json": { 22 | "model_id": "2ac21d51f8274a6ebf8e217ab5ec5885", 23 | "version_major": 2, 24 | "version_minor": 0 25 | }, 26 | "text/plain": [ 27 | "Map(center=[20, 0], controls=(ZoomControl(options=['position', 'zoom_in_text', 'zoom_in_title', 'zoom_out_text…" 28 | ] 29 | }, 30 | "metadata": {}, 31 | "output_type": "display_data" 32 | } 33 | ], 34 | "source": [ 35 | "m = leafmap.Map()\n", 36 | "m.add_basemap(\"OpenTopoMap\")\n", 37 | "m" 38 | ] 39 | } 40 | ], 41 | "metadata": { 42 | "kernelspec": { 43 | "display_name": "Python 3", 44 | "language": "python", 45 | "name": "python3" 46 | }, 47 | "language_info": { 48 | "codemirror_mode": { 49 | "name": "ipython", 50 | "version": 3 51 | }, 52 | "file_extension": ".py", 53 | "mimetype": "text/x-python", 54 | "name": "python", 55 | "nbconvert_exporter": "python", 56 | "pygments_lexer": "ipython3", 57 | "version": "3.9.12" 58 | } 59 | }, 60 | "nbformat": 4, 61 | "nbformat_minor": 5 62 | } 63 | -------------------------------------------------------------------------------- /examples/leafmap.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "8fdcf68b", 6 | "metadata": {}, 7 | "source": [ 8 | "[![image](https://colab.research.google.com/assets/colab-badge.svg)](https://githubtocolab.com/giswqs/leafmap/blob/master/examples/notebooks/02_using_basemaps.ipynb)\n", 9 | "[![image](https://mybinder.org/badge_logo.svg)](https://gishub.org/leafmap-binder)\n", 10 | "\n", 11 | "**Using basemaps in leafmap**\n", 12 | "\n", 13 | "Uncomment the following line to install [leafmap](https://leafmap.org) if needed." 14 | ] 15 | }, 16 | { 17 | "cell_type": "code", 18 | "execution_count": null, 19 | "id": "6e8418cb", 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "import leafmap" 24 | ] 25 | }, 26 | { 27 | "cell_type": "markdown", 28 | "id": "7803deb4", 29 | "metadata": {}, 30 | "source": [ 31 | "Create an interactive map." 32 | ] 33 | }, 34 | { 35 | "cell_type": "code", 36 | "execution_count": null, 37 | "id": "795c2589", 38 | "metadata": {}, 39 | "outputs": [], 40 | "source": [ 41 | "m = leafmap.Map()\n", 42 | "m" 43 | ] 44 | }, 45 | { 46 | "cell_type": "markdown", 47 | "id": "6a6e718e", 48 | "metadata": {}, 49 | "source": [ 50 | "Specify a Google basemap to use, can be one of [\"ROADMAP\", \"TERRAIN\", \"SATELLITE\", \"HYBRID\"]." 51 | ] 52 | }, 53 | { 54 | "cell_type": "code", 55 | "execution_count": null, 56 | "id": "f3fb421e", 57 | "metadata": {}, 58 | "outputs": [], 59 | "source": [ 60 | "m = leafmap.Map(google_map=\"HYBRID\")\n", 61 | "m" 62 | ] 63 | }, 64 | { 65 | "cell_type": "code", 66 | "execution_count": null, 67 | "id": "04972685", 68 | "metadata": {}, 69 | "outputs": [], 70 | "source": [ 71 | "m = leafmap.Map(google_map=\"TERRAIN\")\n", 72 | "m" 73 | ] 74 | }, 75 | { 76 | "cell_type": "markdown", 77 | "id": "18b5e064", 78 | "metadata": {}, 79 | "source": [ 80 | "Add a basemap using the `add_basemap()` function." 81 | ] 82 | }, 83 | { 84 | "cell_type": "code", 85 | "execution_count": null, 86 | "id": "6027a7cb", 87 | "metadata": {}, 88 | "outputs": [], 89 | "source": [ 90 | "m = leafmap.Map()\n", 91 | "m.add_basemap(\"HYBRID\")\n", 92 | "m.add_basemap(\"Esri.NatGeoWorldMap\")\n", 93 | "m" 94 | ] 95 | }, 96 | { 97 | "cell_type": "markdown", 98 | "id": "1f387ba1", 99 | "metadata": {}, 100 | "source": [ 101 | "Add an XYZ tile layer." 102 | ] 103 | }, 104 | { 105 | "cell_type": "code", 106 | "execution_count": null, 107 | "id": "6df7a1bf", 108 | "metadata": {}, 109 | "outputs": [], 110 | "source": [ 111 | "m = leafmap.Map()\n", 112 | "m.add_tile_layer(\n", 113 | " url=\"https://mt1.google.com/vt/lyrs=y&x={x}&y={y}&z={z}\",\n", 114 | " name=\"Google Satellite\",\n", 115 | " attribution=\"Google\",\n", 116 | ")\n", 117 | "m" 118 | ] 119 | }, 120 | { 121 | "cell_type": "markdown", 122 | "id": "6d1f1659", 123 | "metadata": {}, 124 | "source": [ 125 | "Add a legend to the map." 126 | ] 127 | }, 128 | { 129 | "cell_type": "code", 130 | "execution_count": null, 131 | "id": "ec54a702", 132 | "metadata": {}, 133 | "outputs": [], 134 | "source": [ 135 | "m = leafmap.Map(google_map=\"HYBRID\")\n", 136 | "\n", 137 | "url1 = \"https://www.fws.gov/wetlands/arcgis/services/Wetlands/MapServer/WMSServer?\"\n", 138 | "m.add_wms_layer(\n", 139 | " url1, layers=\"1\", format=\"image/png\", transparent=True, name=\"NWI Wetlands Vector\"\n", 140 | ")\n", 141 | "\n", 142 | "url2 = \"https://www.fws.gov/wetlands/arcgis/services/Wetlands_Raster/ImageServer/WMSServer?\"\n", 143 | "m.add_wms_layer(\n", 144 | " url2, layers=\"0\", format=\"image/png\", transparent=True, name=\"NWI Wetlands Raster\"\n", 145 | ")\n", 146 | "\n", 147 | "m.add_legend(builtin_legend=\"NWI\")\n", 148 | "m" 149 | ] 150 | } 151 | ], 152 | "metadata": { 153 | "hide_input": false, 154 | "kernelspec": { 155 | "display_name": "Python 3", 156 | "language": "python", 157 | "name": "python3" 158 | }, 159 | "language_info": { 160 | "codemirror_mode": { 161 | "name": "ipython", 162 | "version": 3 163 | }, 164 | "file_extension": ".py", 165 | "mimetype": "text/x-python", 166 | "name": "python", 167 | "nbconvert_exporter": "python", 168 | "pygments_lexer": "ipython3", 169 | "version": "3.9.12" 170 | }, 171 | "toc": { 172 | "base_numbering": 1, 173 | "nav_menu": {}, 174 | "number_sections": true, 175 | "sideBar": true, 176 | "skip_h1_title": false, 177 | "title_cell": "Table of Contents", 178 | "title_sidebar": "Contents", 179 | "toc_cell": false, 180 | "toc_position": {}, 181 | "toc_section_display": true, 182 | "toc_window_display": false 183 | }, 184 | "varInspector": { 185 | "cols": { 186 | "lenName": 16, 187 | "lenType": 16, 188 | "lenVar": 40 189 | }, 190 | "kernels_config": { 191 | "python": { 192 | "delete_cmd_postfix": "", 193 | "delete_cmd_prefix": "del ", 194 | "library": "var_list.py", 195 | "varRefreshCmd": "print(var_dic_list())" 196 | }, 197 | "r": { 198 | "delete_cmd_postfix": ") ", 199 | "delete_cmd_prefix": "rm(", 200 | "library": "var_list.r", 201 | "varRefreshCmd": "cat(var_dic_list()) " 202 | } 203 | }, 204 | "types_to_exclude": [ 205 | "module", 206 | "function", 207 | "builtin_function_or_method", 208 | "instance", 209 | "_Feature" 210 | ], 211 | "window_display": false 212 | } 213 | }, 214 | "nbformat": 4, 215 | "nbformat_minor": 5 216 | } 217 | -------------------------------------------------------------------------------- /geospatial_ml/__init__.py: -------------------------------------------------------------------------------- 1 | """Top-level package for geospatial-ml.""" 2 | 3 | __author__ = """Qiusheng Wu""" 4 | __email__ = "giswqs@gmail.com" 5 | __version__ = "0.1.2" 6 | -------------------------------------------------------------------------------- /geospatial_ml/geospatial_ml.py: -------------------------------------------------------------------------------- 1 | """Main module.""" 2 | -------------------------------------------------------------------------------- /mkdocs.yml: -------------------------------------------------------------------------------- 1 | site_name: geospatial-ml 2 | 3 | site_url: https://ml.gishub.org 4 | 5 | repo_url: https://github.com/giswqs/geospatial-ml 6 | 7 | theme: 8 | palette: 9 | scheme: preference 10 | name: material 11 | icon: 12 | repo: fontawesome/brands/github 13 | features: 14 | - navigation.instant 15 | - search.highlight 16 | # - navigation.expand 17 | # - navigation.tabs 18 | custom_dir: "docs/overrides" 19 | 20 | plugins: 21 | - search 22 | - mkdocstrings 23 | - git-revision-date 24 | - mkdocs-jupyter: 25 | include_source: True 26 | ignore_h1_titles: True 27 | execute: False 28 | # execute_ignore: "*.ipynb" 29 | 30 | markdown_extensions: 31 | - attr_list 32 | - pymdownx.superfences 33 | - pymdownx.highlight: 34 | linenums: true 35 | - toc: 36 | permalink: true 37 | 38 | # extra: 39 | # analytics: 40 | # provider: google 41 | # property: UA-XXXXXXXXX-X 42 | 43 | nav: 44 | - Home: index.ipynb 45 | - Installation: installation.md 46 | - Usage: usage.md 47 | - Contributing: contributing.md 48 | - FAQ: faq.md 49 | - Changelog: changelog.md 50 | - Report Issues: https://github.com/giswqs/geospatial-ml/issues 51 | - API Reference: 52 | - geospatial-ml module: geospatial_ml.md 53 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | geospatial 2 | keras 3 | localtileserver 4 | pytorch-lightning 5 | rasterio 6 | scikit-gstat 7 | scikit-learn 8 | scikit-plot 9 | segment-geospatial 10 | tensorflow 11 | torch 12 | torchgeo 13 | # vaex 14 | verde 15 | -------------------------------------------------------------------------------- /requirements_dev.txt: -------------------------------------------------------------------------------- 1 | black 2 | black[jupyter] 3 | bump2version 4 | codespell 5 | coverage 6 | flake8 7 | grip 8 | pip 9 | Sphinx 10 | tox 11 | twine 12 | watchdog 13 | wheel 14 | -------------------------------------------------------------------------------- /requirements_docs.txt: -------------------------------------------------------------------------------- 1 | black 2 | black[jupyter] 3 | bump2version 4 | codespell 5 | coverage 6 | flake8 7 | grip 8 | ipykernel 9 | livereload 10 | mkdocs 11 | mkdocs-git-revision-date-plugin 12 | mkdocs-jupyter 13 | mkdocs-material 14 | mkdocs-pdf-export-plugin 15 | mkdocstrings 16 | mkdocstrings-crystal 17 | mkdocstrings-python-legacy 18 | nbconvert==6.5.3 19 | pip 20 | sphinx 21 | tox 22 | twine 23 | watchdog 24 | wheel 25 | -------------------------------------------------------------------------------- /setup.cfg: -------------------------------------------------------------------------------- 1 | [bumpversion] 2 | current_version = 0.1.2 3 | commit = True 4 | tag = True 5 | 6 | [bumpversion:file:setup.py] 7 | search = version='{current_version}' 8 | replace = version='{new_version}' 9 | 10 | [bumpversion:file:geospatial_ml/__init__.py] 11 | search = __version__ = '{current_version}' 12 | replace = __version__ = '{new_version}' 13 | 14 | [bdist_wheel] 15 | universal = 1 16 | 17 | [flake8] 18 | exclude = docs 19 | 20 | [aliases] 21 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | """The setup script.""" 4 | 5 | import io 6 | from os import path as op 7 | from setuptools import setup, find_packages 8 | 9 | with open("README.md") as readme_file: 10 | readme = readme_file.read() 11 | 12 | here = op.abspath(op.dirname(__file__)) 13 | 14 | # get the dependencies and installs 15 | with io.open(op.join(here, "requirements.txt"), encoding="utf-8") as f: 16 | all_reqs = f.read().split("\n") 17 | 18 | install_requires = [x.strip() for x in all_reqs if "git+" not in x] 19 | dependency_links = [x.strip().replace("git+", "") for x in all_reqs if "git+" not in x] 20 | 21 | requirements = [] 22 | 23 | setup_requirements = [] 24 | 25 | test_requirements = [] 26 | 27 | setup( 28 | author="Qiusheng Wu", 29 | author_email="giswqs@gmail.com", 30 | python_requires=">=3.7", 31 | classifiers=[ 32 | "Development Status :: 2 - Pre-Alpha", 33 | "Intended Audience :: Developers", 34 | "License :: OSI Approved :: MIT License", 35 | "Natural Language :: English", 36 | "Programming Language :: Python :: 3", 37 | "Programming Language :: Python :: 3.7", 38 | "Programming Language :: Python :: 3.8", 39 | "Programming Language :: Python :: 3.9", 40 | ], 41 | description="A collection of Python packages for geospatial analysis and machine learning.", 42 | install_requires=install_requires, 43 | dependency_links=dependency_links, 44 | license="MIT license", 45 | long_description=readme, 46 | long_description_content_type="text/markdown", 47 | include_package_data=True, 48 | keywords="geospatial_ml", 49 | name="geospatial-ml", 50 | packages=find_packages(include=["geospatial_ml", "geospatial_ml.*"]), 51 | setup_requires=setup_requirements, 52 | test_suite="tests", 53 | tests_require=test_requirements, 54 | url="https://github.com/giswqs/geospatial-ml", 55 | version="0.1.2", 56 | zip_safe=False, 57 | ) 58 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Unit test package for geospatial_ml.""" 2 | -------------------------------------------------------------------------------- /tests/test_geospatial_ml.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | """Tests for `geospatial_ml` package.""" 4 | 5 | 6 | import unittest 7 | 8 | from geospatial_ml import geospatial_ml 9 | 10 | 11 | class TestGeospatial_ml(unittest.TestCase): 12 | """Tests for `geospatial_ml` package.""" 13 | 14 | def setUp(self): 15 | """Set up test fixtures, if any.""" 16 | 17 | def tearDown(self): 18 | """Tear down test fixtures, if any.""" 19 | 20 | def test_000_something(self): 21 | """Test something.""" 22 | --------------------------------------------------------------------------------