[GRASSLIST:3499] Re: Geophysical/Potential field modules for GRASS?

Craig,

I think your perspective is a good and pragmatic one. If I could echo and build on a couple of your comments....

2. The current database module in GRASS 5.7 is inherently relational with a built-in SQL query engine. But you don't have to use the relational capacity and most of the discussion I've seen so far does not require a relational model.

3. The most straightforward way to get point data into grid format is through interpolation. GRASS has some pretty good interpolation modules. But there is a big hole in its lack of Krieging. In the sites modules for GRASS 5.3 there are commands to calculate the semivariance of a point scatter and to fit a semivariagram from this point set to various models (s.sv and s.svfit). These could be updated to vector point formats for GRASS 5.7 as the start of a Krieging module. Apparently there is/was a Krieging module because there is a man page for s.surf.krieg, but it doesn't normally compile. There are also some other sites modules for getting point data to grids in alternative ways. Examples include s.windavg, s.kernel (this has been translated to v.kernel for 5.7), s,medp (median polish), etc. These could all be updated to GRASS 5.7, providing a rich point to grid toolkit.

4. Your ideas on filters sound very good.

5. Color management is quite flexible and relatively easy to modify. For example, if you'd like to make a color table tied to standard deviations around a mean, you can use r.statistics to generate a mean and standard deviation and redirect output to a file or script, where you could reformat those values into a color table, which could in turn be redirected into r.colors to create the needed color table. From an interactive standpoint, r.colors is not point and click (something I'd like to see eventually), but is very easy to use interactively.

A little programming to put a friendlier face on these would go a long way, as you suggest. I am happy to contribute. I've got a wish list I am happy to share. Sounds like this will be a very useful project for many people

Michael

____________________
C. Michael Barton, Professor
School of Human Origins, Cultures, & Societies
PO Box 872402
Arizona State University
Tempe, AZ 85287-2402
USA

Phone: 480-965-6262
Fax: 480-965-7671
www: <www.public.asu.edu/~cmbarton>
On May 25, 2004, at 10:01 PM, Multiple recipients of list wrote:

From: Craig Funk <funkmeister@lynxseismicdata.com>
Date: May 25, 2004 3:20:33 PM MST
To: grasslist@baylor.edu
Subject: [GRASSLIST:3492] Re: Geophysical/Potential field modules for GRASS?

I will attempt to summarize the current thread,

1) Device interfaces to field instruments would be a *nice to have* but the functionality is already there. although that requires a few extra steps. As I indicated previously - my experience is limited - device drivers on windows is a mess. Not nearly as simple as Linux.

2) Database means GRASS database not relational. I don't think a relational database would add any value, it would probably make it more difficult to move data around. You can't just zip it up and mail it for example. And for large datasets there would be considerable overhead when loading the data. So GRASS file systems is the best approach

3) The raster data model is the way to go. Michael, how do you associate point data with a raster grid? Also would the GRASS architects (Neteler et al.) frown on adding new database structures?

4) GRASS has many powerful filtering modules. Any convolution based filter can be realized through r.mfilter, and r.mapcalc can be used to implement many filters. However there seems to be a need for a more seamless "integration" of filters. Also specific corrections - like the terrain correction - do not exist. To implement such a correction with r.mapcalc would be tedious. I think this is where the white paper could be useful in that it should highlight the filters that are needed for geophysical apps; identify those filters that already exist in GRASS; and then we are left with the filters/corrections that need to be implemented.

I really like the idea of the filtering stream (Benjamin). Maybe this could be a new GRASS module that is a seamless front end to existing GRASS modules and possibly some yet-to-be-determined modules. For example a commonly applied low pass 2-D filter would be predefined in this module without having to write the kernel function in an ASCII file. It would call r.mfilter on the users behalf with the predefined kernel function. Also by having a schema and an XML structure these streams should be easy to manage - maybe even just store in the database. For new/casual users this would be probably simplify their GRASS experience/barrier to use. This module would also have many other uses to all types of raster data.

5) Color management routines exist, but they could maybe use some improvement. I have not looked into this personally so I am speculating here, but other users (non-geophysical) would also likely be interested in an easy-to-use color map generating module.

My 2 cents worth:

I think it is always best to start small and build from there. So it is important to get the architecture right from the start. Plus if my boss sees some results early, he will be willing to continue funding of my portion of the work :wink:

Also a white paper would be a very nice way of starting this, anyone have a document we can start with? *or* I can just start one based on this thread. How about a Wikki?

Cheers,
Craig

Michael,

You mentioned a lack of Kriging capabilities in GRASS. Maybe I'm being naieve, or I don't understand the issue, but I have used R and GSTAT quite successfully for spatial interpolation within GRASS. So, I don't understand where the deficiencies lie unless you wanted GRASS modules per se for kriging; I guess I don't see a real advantage in that.

Tom

Michael Barton wrote:

Craig,

I think your perspective is a good and pragmatic one. If I could echo and build on a couple of your comments....

2. The current database module in GRASS 5.7 is inherently relational with a built-in SQL query engine. But you don't have to use the relational capacity and most of the discussion I've seen so far does not require a relational model.

3. The most straightforward way to get point data into grid format is through interpolation. GRASS has some pretty good interpolation modules. But there is a big hole in its lack of Krieging. In the sites modules for GRASS 5.3 there are commands to calculate the semivariance of a point scatter and to fit a semivariagram from this point set to various models (s.sv and s.svfit). These could be updated to vector point formats for GRASS 5.7 as the start of a Krieging module. Apparently there is/was a Krieging module because there is a man page for s.surf.krieg, but it doesn't normally compile. There are also some other sites modules for getting point data to grids in alternative ways. Examples include s.windavg, s.kernel (this has been translated to v.kernel for 5.7), s,medp (median polish), etc. These could all be updated to GRASS 5.7, providing a rich point to grid toolkit.

4. Your ideas on filters sound very good.

5. Color management is quite flexible and relatively easy to modify. For example, if you'd like to make a color table tied to standard deviations around a mean, you can use r.statistics to generate a mean and standard deviation and redirect output to a file or script, where you could reformat those values into a color table, which could in turn be redirected into r.colors to create the needed color table. >From an interactive standpoint, r.colors is not point and click (something I'd like to see eventually), but is very easy to use interactively.

A little programming to put a friendlier face on these would go a long way, as you suggest. I am happy to contribute. I've got a wish list I am happy to share. Sounds like this will be a very useful project for many people

Michael

____________________
C. Michael Barton, Professor
School of Human Origins, Cultures, & Societies
PO Box 872402
Arizona State University
Tempe, AZ 85287-2402
USA

Phone: 480-965-6262
Fax: 480-965-7671
www: <www.public.asu.edu/~cmbarton>
On May 25, 2004, at 10:01 PM, Multiple recipients of list wrote:

    From: Craig Funk <funkmeister@lynxseismicdata.com>
    Date: May 25, 2004 3:20:33 PM MST
    To: grasslist@baylor.edu
    Subject: [GRASSLIST:3492] Re: Geophysical/Potential field modules
    for GRASS?

    I will attempt to summarize the current thread,

    1) Device interfaces to field instruments would be a *nice to
    have* but the functionality is already there. although that
    requires a few extra steps. As I indicated previously - my
    experience is limited - device drivers on windows is a mess. Not
    nearly as simple as Linux.

    2) Database means GRASS database not relational. I don't think a
    relational database would add any value, it would probably make it
    more difficult to move data around. You can't just zip it up and
    mail it for example. And for large datasets there would be
    considerable overhead when loading the data. So GRASS file systems
    is the best approach

    3) The raster data model is the way to go. Michael, how do you
    associate point data with a raster grid? Also would the GRASS
    architects (Neteler et al.) frown on adding new database structures?

    4) GRASS has many powerful filtering modules. Any convolution
    based filter can be realized through r.mfilter, and r.mapcalc can
    be used to implement many filters. However there seems to be a
    need for a more seamless "integration" of filters. Also specific
    corrections - like the terrain correction - do not exist. To
    implement such a correction with r.mapcalc would be tedious. I
    think this is where the white paper could be useful in that it
    should highlight the filters that are needed for geophysical apps;
    identify those filters that already exist in GRASS; and then we
    are left with the filters/corrections that need to be implemented.

    I really like the idea of the filtering stream (Benjamin). Maybe
    this could be a new GRASS module that is a seamless front end to
    existing GRASS modules and possibly some yet-to-be-determined
    modules. For example a commonly applied low pass 2-D filter would
    be predefined in this module without having to write the kernel
    function in an ASCII file. It would call r.mfilter on the users
    behalf with the predefined kernel function. Also by having a
    schema and an XML structure these streams should be easy to manage
    - maybe even just store in the database. For new/casual users this
    would be probably simplify their GRASS experience/barrier to use.
    This module would also have many other uses to all types of raster
    data.

    5) Color management routines exist, but they could maybe use some
    improvement. I have not looked into this personally so I am
    speculating here, but other users (non-geophysical) would also
    likely be interested in an easy-to-use color map generating module.

    My 2 cents worth:

    I think it is always best to start small and build from there. So
    it is important to get the architecture right from the start. Plus
    if my boss sees some results early, he will be willing to continue
    funding of my portion of the work :wink:

    Also a white paper would be a very nice way of starting this,
    anyone have a document we can start with? *or* I can just start
    one based on this thread. How about a Wikki?

    Cheers,
    Craig

--
Thomas E Adams
National Weather Service
Ohio River Forecast Center
1901 South State Route 134
Wilmington, OH 45177

EMAIL: thomas.adams@noaa.gov

VOICE: 937-383-0528
FAX: 937-383-0033

On Thu, 27 May 2004 07:36:50 -0400
"Thomas Adams" <Thomas.Adams@noaa.gov> wrote:

Michael,

You mentioned a lack of Kriging capabilities in GRASS. Maybe I'm being
naieve, or I don't understand the issue, but I have used R and GSTAT
quite successfully for spatial interpolation within GRASS. So, I don't
understand where the deficiencies lie unless you wanted GRASS modules
per se for kriging; I guess I don't see a real advantage in that.

Tom

I think I would like to make a general remark at this point,
which is less to do with technical issues and more with
the way GRASS is being perceived in the GIS users' community.

I have used a lot of the major GIS products available today
and feel confident in stating that there is nothing that
comes close to the flexibility and power that a GRASS/Unix
environment provides for an ADVANCED user.

I know a lot of people from my field (Archaeology), who would
switch to GRASS rather sooner than later but are scared by
the steep learning curve they have to face at this stage.
Even finding the right set of binaries to download and install
on Joe User's Win Desktop is too much for most faint-hearted.

The functionality is all there -- hidden somewhere in an
obscurely named shell script, a version 0.beta of
some source code archive or an external software package
like R that is immensely powerful but adds another
completely different command-driven environment which
a lot of users are intimidated by.
-- Not a problem for myself and most of the people reading
this list. But even I feel I miss a portion of GRASS capabilities,
simply because I cannot locate it -- that's after having
worked with GRASS since 1996.

The average GIS user, however, has a certain functionality
in mind and will turn away in frustration if he feels
that 'It has to be somewhere in there but I can't find it!'
Kriging is definitely one of those things.

I summary, I want GRASS to become the biggest, most functional
and most widely used GIS system in any scientific field.
But this will only happen, if we ease access to its functionality.
Everything that works in this direction will benefit.
A good Kriging module that spans a bridge to R capabilities
without the user having to learn R would be a fine start.

Regards,

Benjamin

Yes, I know that you can do krieging in R and GSTAT (as well as a lot of other very useful geostatistics), and that these can be compiled to link with GRASS. However, given that GRASS has other interpolation modules, had a krieging module, and has semivariagram functions in the sites module of 5.3, it would be nice to have a krieging module in GRASS. It is indeed nice to be able to combine GRASS with other Unix programs. However, it is also desirable not to have to compile and link up yet another program to do some of the more common kinds of geostatistical analyses common in GIS use. Both R and GSTAT are command line only, requiring an additional significant learning curve on top of that needed for a powerful GIS program. Also, the GSTAT page and GRASS links look like they haven't been updated in a couple years. If people are thinking about ways to enhance the ability of GRASS to work with geophysical and archaeological data, this is one place where GRASS itself is missing an important function.

Michael
____________________
C. Michael Barton, Professor
School of Human Origins, Cultures, & Societies
PO Box 872402
Arizona State University
Tempe, AZ 85287-2402
USA

Phone: 480-965-6262
Fax: 480-965-7671
www: <www.public.asu.edu/~cmbarton>
On May 27, 2004, at 4:36 AM, Thomas Adams wrote:

Michael,

You mentioned a lack of Kriging capabilities in GRASS. Maybe I'm being naieve, or I don't understand the issue, but I have used R and GSTAT quite successfully for spatial interpolation within GRASS. So, I don't understand where the deficiencies lie unless you wanted GRASS modules per se for kriging; I guess I don't see a real advantage in that.

Tom

On Thu, 27 May 2004, Michael Barton wrote:

Yes, I know that you can do krieging in R and GSTAT (as well as a lot of other very useful geostatistics), and that these can be compiled to link with GRASS. However, given that GRASS has other interpolation modules, had a krieging module, and has semivariagram functions in the sites module of 5.3, it would be nice to have a krieging module in GRASS.

Here is the bug report for s.surf.krig
http://www.intevation.de/rt/webrt?serial_num=256&display=History
It seems to have had a lot of work done on it 3 years ago; maybe the problem is not too serious.

And it's still there, just not compiled by default.
gmake53 src/sites/s.surf.krig should do it.

Paul