Giter Site home page Giter Site logo

krystiankoziol / topocalc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from usda-ars-nwrc/topocalc

0.0 1.0 0.0 7.92 MB

Sky view and terrain configuration factors

License: Other

Makefile 0.10% Python 1.72% C 0.27% Shell 0.11% Jupyter Notebook 97.79%

topocalc's Introduction

topocalc

Pypi version Build Status Coverage Status Maintainability

The topocalc package is a collection of functions to calculate various metrics on a digital elevation model (DEM). The calculations follow the equations laid out in Dozier and Frew, 1990 for the gradient, horizon and sky view factor. Currently the supported calculations are:

  1. Gradient for slope and aspect
  2. Horizon angles for an azimuth
  3. Sky view factor for percent of the sky that is visible from a point on the DEM

Background

Azimuth convention

For the azimuth's and aspects, the convention is that South is 0 degrees (0 radians) with positive values to the East (+90 degrees or pi/4 radians) and negative values to the West (-90 degrees or -pi/4 radians). North is -180 degrees or -pi/2.

Gradient for slope and aspect

The gradient method calculates the slope and aspect of the input DEM. There are two methods in topocalc.gradient the gradient_d4 and gradient_d8.

gradient_d4 mimics the slope and aspect calculations of the IPW gradient function. This calculates the slope for a finite difference in just the x/y direction.

gradient_d8 (the default) uses a second order finite difference for a 3x3 square around a given point on the DEM.

The gradient is used to calculate the aspect from North (0 degrees). A conversion function will take the aspect in degrees and convert to radians with South being 0.

Horizon angles

The horizon angle for a point on the DEM is the angle from zenith to the horizon for a given azimuth. Following the methods laid out in Dozier and Frew, 1990 and in IPW horizon the grid is rotated in the direction of the azimuth to make it a one dimensional problem.

For two points i and j, we compare the slope from i and j with the slope of j's horizon. If the slope is greater, then all points past j are not visible. If the slope is less, then all points between i and j don't need to be checked and the search can continue past point j. This search is performed in C to significantly speed up the computation.

The values reported from horizon are cosine of the horizon angle.

Sky view factor

The sky view factor (svf) is the amount of the sky that is visible to a particular point. The svf is between 0 and 1 with 1 indicating no obstructions from surrounding terrain and 0 indicating full obstruction. The svf uses the slope, aspect and horizon angles for 72 directions to estimate the sky view factor for the DEM.

Usage

Installation

NOTE: topocalc has only been tested for Python 3.5 to 3.8 on Linux and MacOSX environments.

To install:

pip install topocalc

Gradient usage

from topocalc.gradient import gradient_d8

# Load the DEM into a numpy array
dem = load_dem(path_to_dem)

# grid cell spacing for the DEM
dem_dx = 30
dem_dy = 30

slope, aspect = gradient_d8(dem, dem_dx, dem_dy)

Sky view factor usage

from topocalc.viewf import viewf

# Load the DEM into a numpy array
dem = load_dem(path_to_dem)

# grid cell spacing for the DEM
dem_spacing = 30

svf, tvf = viewf(dem, spacing=dem_spacing)

Command Line Interface

Comming soon!

topocalc's People

Contributors

scotthavens avatar

Watchers

James Cloos 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.