A tool for automatically generating 3D printable STLs from freely available lidar scan data.

Overview

mini-map-maker

A tool for automatically generating 3D printable STLs from freely available lidar scan data.

Screenshots

image image

Tutorial

To use this script, go to the USGS LidarExplorer

https://prd-tnm.s3.amazonaws.com/LidarExplorer/index.html#/

Select an area, and then click the "Download list" button under "Lidar within AOI" image This should give you a file called downloadlist.txt. Simply place this text file in the same directory as the script, and then run the script (convert.py, or convert.exe if you don't want to deal with Python). By default, mini-map-maker will generate an STL file for each tile in the lidar data. However, there are quite a few command line arguments that you can use to customize the output.

>convert.py -h

usage: convert [-h] [--input INPUT] [--reduce REDUCE] [--vscale VSCALE]
               [--base BASE] [--merge] [--no_stl] [--cleanup] [--filter FILTER] [--prj]

A utility for automatically generating 3D printable STLs from USGS lidar scans.

optional arguments:
  -h, --help            show this help message and exit
  
  --input INPUT, -i INPUT
                        The name of the file containing the URLs of all of the lidar scan data.
                        
  --reduce REDUCE, -r REDUCE
                        A decimal value that will decrease the output file size as it increases.
                        The default value is 1.0
                        
  --vscale VSCALE, -v VSCALE
                        A decimal value that will make artificially make things taller as it increases.
                        The default value is 1.0
                        
  --base BASE, -b BASE  A decimal value that sets the base height of the model. The default value is 0.0
  
  --merge, -m           Using this flag will merge all of the point clouds into one file before converting into a DEM.
  
  --no_stl, -s          Using this flag will disable STL generation.
  
  --cleanup, -c         Using this flag will cause the program to automatically delete the unzipped point cloud files
                        after running.
                        
  --filter FILTER, -f FILTER
                        A percent value (0-100, for the slope of the points being smoothed) that will enable the spike
                        smoothing option. This is good if you have points that are floating way up above the model and
                        causing spikes in your final model.
                        
  --prj, -p             Using this flag will cause the program to automatically download and use lastools to generate
                        projection files for the elevation models. This is important if you want to generate the STLs
                        yourself in QGIS, but it means you'll have to be mindful of lastool's license limitations.
                        More info on lastool's website (https://rapidlasso.com/lastools/).
                        
  --external_files, -e  Using this flag will grab las/laz files from the LAS directory instead of downloading them from
                        an input list.

Additional Examples:

External Files

Let's say you already have some las files you want to use. Simply place them into a directory called LAS, and then call the script from from the directory containing the LAS folder, using the --external_files flag, like so:

convert.py --external_files

This trick also works with LAZ files, or even a mix of LAZ and LAS files.

Adding a Base and Manipulating the Output

For one project, I had a LAZ file that had a section of ocean. This caused the output to be super flat, and too thin in several places to print well. Additionally, it was a pretty high resolution file, so the output STL was very large, and I wasn't happy with the vertical scale of the file either. So, after placing my LAZ file into a directory labeled LAS like mentioned above, I used the following command:

convert.py --external_files --filter 50 --base 10 --vscale 0.5 --reduce 2

Filtering got rid of some weird spikes in the output STL, and the base command increased the total height of the output. The vscale command made the model shorter, and reduce significantly decreased the size of the STL.

Support This Project

Like this project? Feel free to make a donation.

ko-fi

Licensing

With the default options, this program is completely open source, and the output is usable in a commercial environment. This code itself is MIT License, as is r-barnes' DEMto3D library that this program makes use of.

https://github.com/r-barnes/DEMto3D

If you want to use the output in QGIS or another GIS program, and enable .prj file generation, then the sript will automatically download lastools. The .prj files generated are free to use if it's not for commercial purposes. If you plan on using the .prj files for commercial purposes, you will need to purchase a lastools license in accordance with the information on lastool's website:

https://rapidlasso.com/lastools/

Additionally, this script makes use of some public domain utilities from FUSION by the US Forest Service

http://forsys.sefs.uw.edu/FUSION/fusion_overview.html

With the addition of LAZ processing, this project now utilizes LASzip, an LGPL-2.1 tool. It is included as a precompiled binary (laszip-cli.exe), and no modifications have been made.

https://github.com/LASzip/LASzip

Owner
Mike Abbott
Mike Abbott
Generate knowledge graphs with interesting geometries, like lattices

Geometric Graphs Generate knowledge graphs with interesting geometries, like lattices. Works on Python 3.9+ because it uses cool new features. Get out

Charles Tapley Hoyt 5 Jan 03, 2022
Lightweight data validation and adaptation Python library.

Valideer Lightweight data validation and adaptation library for Python. At a Glance: Supports both validation (check if a value is valid) and adaptati

Podio 258 Nov 22, 2022
An interactive UMAP visualization of the MNIST data set.

Code for an interactive UMAP visualization of the MNIST data set. Demo at https://grantcuster.github.io/umap-explorer/. You can read more about the de

grant 70 Dec 27, 2022
Automate the case review on legal case documents and find the most critical cases using network analysis

Automation on Legal Court Cases Review This project is to automate the case review on legal case documents and find the most critical cases using netw

Yi Yin 7 Dec 28, 2022
AB-test-analyzer - Python class to perform AB test analysis

AB-test-analyzer Python class to perform AB test analysis Overview This repo con

13 Jul 16, 2022
Tools for calculating and visualizing Elo-like ratings of MLB teams using Retosheet data

Overview This project uses historical baseball games data to calculate an Elo-like rating for MLB teams based on regular season match ups. The Elo rat

Lukas Owens 0 Aug 25, 2021
Realtime Web Apps and Dashboards for Python and R

H2O Wave Realtime Web Apps and Dashboards for Python and R New! R Language API Build and control Wave dashboards using R! New! Easily integrate AI/ML

H2O.ai 3.4k Jan 06, 2023
Python scripts for plotting audiograms and related data from Interacoustics Equinox audiometer and Otoaccess software.

audiometry Python scripts for plotting audiograms and related data from Interacoustics Equinox 2.0 audiometer and Otoaccess software. Maybe similar sc

Hamilton Lab at UT Austin 2 Jun 15, 2022
The interactive graphing library for Python (includes Plotly Express) :sparkles:

plotly.py Latest Release User forum PyPI Downloads License Data Science Workspaces Our recommended IDE for Plotly’s Python graphing library is Dash En

Plotly 12.7k Jan 05, 2023
Automatization of BoxPlot graph usin Python MatPlotLib and Excel

BoxPlotGraphAutomation Automatization of BoxPlot graph usin Python / Excel. This file is an automation of BoxPlot-Graph using python graph library mat

EricAugustin 1 Feb 07, 2022
Define fortify and autoplot functions to allow ggplot2 to handle some popular R packages.

ggfortify This package offers fortify and autoplot functions to allow automatic ggplot2 to visualize statistical result of popular R packages. Check o

Sinhrks 504 Dec 23, 2022
A blender import/export system for Defold

defold-blender-export A Blender export system for the Defold game engine. Setup Notes There are no exhaustive documents for this tool yet. Its just no

David Lannan 27 Dec 30, 2022
A Python Library for Self Organizing Map (SOM)

SOMPY A Python Library for Self Organizing Map (SOM) As much as possible, the structure of SOM is similar to somtoolbox in Matlab. It has the followin

Vahid Moosavi 497 Dec 29, 2022
Visualize the training curve from the *.csv file (tensorboard format).

Training-Curve-Vis Visualize the training curve from the *.csv file (tensorboard format). Feature Custom labels Curve smoothing Support for multiple c

Luckky 7 Feb 23, 2022
Color scales in Python for humans

colorlover Color scales for humans IPython notebook: https://plot.ly/ipython-notebooks/color-scales/ import colorlover as cl from IPython.display impo

Plotly 146 Sep 25, 2022
Backend app for visualizing CANedge log files in Grafana (directly from local disk or S3)

CANedge Grafana Backend - Visualize CAN/LIN Data in Dashboards This project enables easy dashboard visualization of log files from the CANedge CAN/LIN

13 Dec 15, 2022
A D3.js plugin that produces flame graphs from hierarchical data.

d3-flame-graph A D3.js plugin that produces flame graphs from hierarchical data. If you don't know what flame graphs are, check Brendan Gregg's post.

Martin Spier 740 Dec 29, 2022
A curated list of awesome Dash (plotly) resources

Awesome Dash A curated list of awesome Dash (plotly) resources Dash is a productive Python framework for building web applications. Written on top of

Luke Singham 1.7k Jan 07, 2023
在原神中使用围栏绘图

yuanshen_draw 在原神中使用围栏绘图 文件说明 toLines.py 将一张图片转换为对应的线条集合,视频可以按帧转换。 draw.py 在原神家园里绘制一张线条图。 draw_video.py 在原神家园里绘制视频(自动按帧摆放,截图(win)并回收) cat_to_video.py

14 Oct 08, 2022
simple tool to paint axis x and y

simple tool to paint axis x and y

G705 1 Oct 21, 2021