Skip to main content

🌍 Create 3d-printable STLs from satellite elevation data 🌏

Project description

mapa 🌍

PyPI Python Downloads Python Tests

mapa let's you create 3d-printable STL files from satellite elevation data (using DEM data).

Under the hood mapa uses:

Installation

pip install mapa

Usage

mapa provides the following approaches for creating STL files:

1. Using the mapa interactive map

The easiest way is using the mapa cli. Simply type

mapa

A jupyter notebook will be started with an interactive map. Follow the described steps by executing the cells to create a 3d model of whatever place you like.

Choose bounding box Create STL file
Slice STL file 3D print

2. Using the dem2stl cli

The dem2stl cli lets you create a 3d-printable STL file based on your tiff file. You can run a demo computation to get a feeling of how the output STL will look like:

dem2stl --demo

If you have your tiff file ready, you may run something like

dem2stl --input your_file.tiff --output output.stl --model-size 200 --z-offset 3.0 --z-scale 1.5

The full list of options and their intention can be found with dem2stl --help:

Usage: dem2stl [OPTIONS]

  🌍 Convert DEM data into STL files 🌏

Options:
  --input TEXT                Path to input TIFF file.
  --output TEXT               Path to output STL file.
  --as-ascii                  Save output STL as ascii file. If not provided,
                              output file will be binary.
  --model-size INTEGER        Desired size of the generated 3d model in
                              millimeter.
  --max-res                   Whether maximum resolution should be used. Note,
                              that this flag potentially increases compute
                              time dramatically. The default behavior (i.e.
                              max_res=False) should return 3d models with
                              sufficient resolution, while the output stl file
                              should be < ~400 MB.
  --z-offset FLOAT            Offset distance in millimeter to be put below
                              the 3d model. Defaults to 4.0. Is not influenced
                              by z-scale.
  --z-scale FLOAT             Value to be multiplied to the z-axis elevation
                              data to scale up the height of the model.
                              Defaults to 1.0.
  --demo                      Converts a demo tiff of Hawaii into a STL file.
  --cut-to-format-ratio TEXT  Cut the input tiff file to a specified format.
                              Set to `1` if you want the output model to be
                              squared. Set to `0.5` if you want one side to be
                              half the length of the other side. Omit this
                              flag to keep the input format. This option is
                              particularly useful when an exact output format
                              ratio is required for example when planning to
                              put the 3d printed model into a picture frame.
                              Using this option will always try to cut the
                              shorter side of the input tiff.
  --version                   Show the version and exit.
  --help                      Show this message and exit.

3. Using mapa as python library

In case you are building your own application you can simply use mapa's functionality within your application by importing the functions of the module.

from mapa import convert_tiff_to_stl

path_to_stl = convert_tiff_to_stl(
    input_file: "path/to/your/input_file.tiff",
    as_ascii: False,
    model_size: 200,
    output_file: "path/to/your/output_file.stl",
    max_res: False,
    z_offset: 3.0,
    z_scale: 1.5,
    cut_to_format_ratio: None,
)

Algorithm Deep Dive

In case you are curios about the algorithm which turns a GeoTIFF into a STL file, I'd recommend reading the header of algorithm.py.

Changelog

See Releases.

Contributing

Contributions, feedback or issues are welcome.

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

mapa-0.6.0.tar.gz (18.2 kB view details)

Uploaded Source

Built Distribution

mapa-0.6.0-py3-none-any.whl (20.8 kB view details)

Uploaded Python 3

File details

Details for the file mapa-0.6.0.tar.gz.

File metadata

  • Download URL: mapa-0.6.0.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.12 Linux/5.11.0-1028-azure

File hashes

Hashes for mapa-0.6.0.tar.gz
Algorithm Hash digest
SHA256 eb7d794b95bdfd6671d8e0c8e3672d6d5d3a76d0cc96b89b8503fab8f9f2c8cb
MD5 824f34a2dcffd2097ffd544cbb0edfff
BLAKE2b-256 ef4126976a1d6a570d01e161369b8dddf091904fab44ddefe4eb840fd0c43719

See more details on using hashes here.

File details

Details for the file mapa-0.6.0-py3-none-any.whl.

File metadata

  • Download URL: mapa-0.6.0-py3-none-any.whl
  • Upload date:
  • Size: 20.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.13 CPython/3.8.12 Linux/5.11.0-1028-azure

File hashes

Hashes for mapa-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0b4d24feec159be9366f6a9dc0cce7721ed128ebaa3e3654478ad3d1aab40adb
MD5 1ab95cae05cb81a439b2449bfae7c3c4
BLAKE2b-256 2349ec0fd1392e747a36c03a862afb3f393f653828443f5c20b988d610ac0733

See more details on using hashes here.

Supported by

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