[GRASS-dev] GRASS 7: replace r.los with r.viewshed?

How does r.viewshed differ from r.los?

Michael
____________________
C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Arizona State University

voice: 480-965-6262 (SHESC), 480-727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)
www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

On Dec 2, 2011, at 12:01 AM, <grass-dev-request@lists.osgeo.org> wrote:

Date: Thu, 1 Dec 2011 17:31:26 +0100
From: Markus Neteler <neteler@osgeo.org>
Subject: [GRASS-dev] GRASS 7: replace r.los with r.viewshed?
To: GRASS developers list <grass-dev@lists.osgeo.org>
Message-ID:
       <CALFmHhv80FsP7FOatPtG_Z3uAvRxGND9JtCYsGVwHBxo6VG=5w@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

Hi,

how about replacing r.los with r.viewshed?

Markus

Michael wrote:

How does r.viewshed differ from r.los?

basically it is faster and it scales to large regions well.

I don't know the exact O()ness level of it, but r.los becomes very quickly
slower after the region size gets bigger than a smallish amount of rows x
columns, to the point where it becomes unusable.

r.viewshed should be (*testing welcome) an option-for-option drop in
replacement for r.los written by Laura & co. in C++, from the same
family of code as r.terraflow. It has a detailed help page explaining
its algorithm.

from the code header comments:
* The viewshed algorithm is efficient both in
* terms of CPU operations and I/O operations. It has worst-case
* complexity O(n lg n) in the RAM model and O(sort(n)) in the
* I/O-model. For the algorithm and all the other details see the
* paper: "Computing Visibility on * Terrains in External Memory" by
* Herman Haverkort, Laura Toma and Yi Zhuang.

additionally as a ray-tracing sort of problem it is ideally suited for
GPU acceleration using OpenCL support(?), along the same lines as Seth's
to-be committed r.sun + OpenCL. So it has a bright future.

also in this group of modules, but slightly different, there is/was the
r.cva module for cumulative viewshed analysis. Unfortunately (AFAIU) the
author could never convince the university he worked for to allow him
to release the code for that as GPL.

Hamish

Thanks. If r.viewshed is fast enough, a Python script could be built that uses r.viewshed to replicate many of the aspects of r.cva.

Michael
____________________
C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Arizona State University

voice: 480-965-6262 (SHESC), 480-727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)
www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

On Dec 1, 2011, at 10:44 PM, Hamish wrote:

Michael wrote:

How does r.viewshed differ from r.los?

basically it is faster and it scales to large regions well.

I don't know the exact O()ness level of it, but r.los becomes very quickly
slower after the region size gets bigger than a smallish amount of rows x
columns, to the point where it becomes unusable.

r.viewshed should be (*testing welcome) an option-for-option drop in
replacement for r.los written by Laura & co. in C++, from the same
family of code as r.terraflow. It has a detailed help page explaining
its algorithm.

from the code header comments:
* The viewshed algorithm is efficient both in
* terms of CPU operations and I/O operations. It has worst-case
* complexity O(n lg n) in the RAM model and O(sort(n)) in the
* I/O-model. For the algorithm and all the other details see the
* paper: "Computing Visibility on * Terrains in External Memory" by
* Herman Haverkort, Laura Toma and Yi Zhuang.

additionally as a ray-tracing sort of problem it is ideally suited for
GPU acceleration using OpenCL support(?), along the same lines as Seth's
to-be committed r.sun + OpenCL. So it has a bright future.

also in this group of modules, but slightly different, there is/was the
r.cva module for cumulative viewshed analysis. Unfortunately (AFAIU) the
author could never convince the university he worked for to allow him
to release the code for that as GPL.

Hamish