Coder Social home page Coder Social logo

tfilppula / bathytools Goto Github PK

View Code? Open in Web Editor NEW
5.0 0.0 0.0 52 KB

Tools for navigationally safe bathymetric surface processing - Rolling Coin algorithm, iterative Laplacian smoothing, shoal buffering and surface offsetting. Efficient implementations written in C. Simple command-line interface to support scripting use.

License: MIT License

C 98.30% Makefile 1.70%
hydrography bathymetry depth-contours rolling-coin laplace-smoothing thesis depthmodel process-automation ocean-mapping

bathytools's Introduction

Bathymetric surface tools

This repository holds bathymetric surface manipulation tools that I developed originally for my Master's thesis (thesis available online, in Finnish only: https://helda.helsinki.fi/handle/10138/273488)

This source code includes efficient implementations (written in pure C) of Rolling Coin surface smoothing algorithm (for more information please refer to my thesis) and navigationally safe iterative Laplacian interpolation.

Dependencies:

  • GDAL library (for file I/O)

Disclaimer:

  • Source is provided as is, with absolutely no quarantees of any kind

Compile using make and makefile (provided) or using for example gcc or clang (link gdal when compiling):

gcc -g -O3 -march=native -Wall -Wextra -Wfloat-equal -Werror -std=c17 -o surfacetools *.c -lgdal

These tools includes a Command Line Interface and also a simple text-based UI. Available methods are:

  • Rolling Coin surface smoothing (see my thesis for reference)
  • Laplacian smoothing (navigationally safe iterative Laplacian interpolation)
  • Shoal expansion (3x3 cell focal maximum filter)
  • Surface offset (local addition to cell value) More information can also be found in the corresponding source files.

Methods can be chained together for example as follows:

surfacetools inputfile.tiff outputfile.tiff -buffer -rollcoin 13 notrim -laplacian 10 -offset 0.35

The above example does the following:

  1. Apply Shoal buffering (3x3 cell focal maximum filter)
  2. Apply Rolling Coin smoothing to buffered surface (Coin radius = 12 cells, no trimming of coin edges)
  3. Apply Laplacian smoothing (10 iterations)
  4. Lastly, apply an offset of +0.35 m for every grid cell

bathytools's People

Contributors

kaaos avatar tfilppula avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.