Skip to main content

Geospatial analysis environment.

Project description

Spatial Analysis Environment

This repo abstracts the basics of a spatial analysis environment, so it can be used consistently across microservices.

A slightly weird thing right now:

  • We want to use conda for installation, because it helps manage a lot of the dependencies (GDAL)
  • But we can't use conda for publishing, because the path to get on conda-forge seems like a pain and we haven't prioritized it. Eventually we'll use pixi, but pixi build is still in development.
  • So we're using uv to publish, and that introduces some dependency mismatches. We can see what those are with the create-mismatch-report target. So far they have been minor.

Environments

The environments directory contains the base environment and any other environments that are needed.

The base environment is the core dependencies for all later tooling and environments.

The analysis environment is used for later tooling that is specific to analysis (like RasterOps and VectorOps).

The jupyter environment is used for the Jupyter notebook and includes RasterOps and VectorOps.

The pmtiles environment is used for the PMTiles tooling.

Usage

Adding a new dependency

When adding a new dependency to the project:

  1. Add the package to environments/base/base.yml:
dependencies:
  - new-package>=1.0.0
  1. Add the same package to pyproject.toml:
dependencies = [
    "new-package>=1.0.0",
]
  1. Update the lock files:
make lock
  1. Review the mismatch report at version_info/mismatch_report.txt to ensure version alignment between conda and uv

  2. Test the environment:

make test-conda

Note: Package names might differ slightly between conda and pip (e.g., memory_profiler vs memory-profiler). Check both repositories if you encounter installation issues.

Publishing

The package can be published to PyPI using the following workflow:

# First build the publisher container
make publisher-base

# Create a new lock file if dependencies have changed
make lock

# Publish to PyPI (requires UV_PUBLISH_TOKEN in .env.publish)
make publish

Note: Before publishing, ensure you have created a .env.publish file with your PyPI token:

UV_PUBLISH_TOKEN=your_token_here

Deploying a Jupyter Notebook to Nautilus

Prerequisites

  1. Install helm (On MacOSX):
brew install helm

See https://helm.sh/docs/intro/install/ for other systems.

  1. Configure AWS credentials: Create a file named .env.s3 with your Nautilus Cept S3 credentials:
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_ENDPOINT_URL=your_endpoint_url

Deployment

Create a deployment with a pod, ingress, and persistent volume unique to you:

make jupyter-deploy

Release resources when you're done:

make jupyter-teardown

Project details


Download files

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

Source Distribution

geospatial_analysis_environment-0.1.11.tar.gz (4.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file geospatial_analysis_environment-0.1.11.tar.gz.

File metadata

File hashes

Hashes for geospatial_analysis_environment-0.1.11.tar.gz
Algorithm Hash digest
SHA256 14326063c8c7a272fe7e6cdb0459226551685211bde356cdecb9df17ab1f28db
MD5 4e25aa15129a4196e6dfae0bc12e9b62
BLAKE2b-256 31bd81249f9cb7bdc0bbdde6c49d871a0fadee46f6777eb4ea36636ed1aa4e4a

See more details on using hashes here.

File details

Details for the file geospatial_analysis_environment-0.1.11-py3-none-any.whl.

File metadata

File hashes

Hashes for geospatial_analysis_environment-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 6650c52e054671ca4285a089312dd00a4367427b3a2f8ea3f69e3e9c226eac3b
MD5 96ed450364f6eec7b0c757279eed9de8
BLAKE2b-256 09195c3c08ec205201aaa25b2dbb6286128077bd3f1ac3dcf0613b03adc2b029

See more details on using hashes here.

Supported by

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