[GRASSLIST:1571] interpolate nominal values

Hi list,

I want to interpolate nominal data (soil types as point information).
Which possibilities do I have, what's the best method? -Any
experiences, suggestions?

Thanks in advance!

Susanne

******************************************************
Susanne Hofgaertner
Fachhochschule Nuertingen
Institut fuer Angewandte Forschung
Schelmenwasen 6-8
72622 Nuertingen

On 8 Mar 01, Rich Shepard wrote:

On Thu, 8 Mar 2001, SUSANNE HOFGAERTNER wrote:

> I want to interpolate nominal data (soil types as point information).
> Which possibilities do I have, what's the best method? -Any experiences,
> suggestions?

Susanne,

  While modules such as s.surf.idw will interpolate points to form a
surface, it will have no meaning with nominal values. (I presume you mean
nominal in the data type sense of having numbers assigned to categories,
without any mathematical relationships among the numbers.)

  What are you trying to do?

Rich

Rich,

your definition of nominal is exactly what I mean.

Here's a more detailed description of what I want to do:

I've got point data with information on moisture, nutrients and soil
type and I've got grid data with information on slope and on classes
of warmth.
What I want to get in the end is a surface showing categories of a
combination of the above features. This means I'll have areas with a
code like for example: 01331 (which means 0:slope=0-10%,
1:warmth=cold, 3:moisture=dry, 3:nutrients=little, 1:soil type=clay).
This is a methodology used to determine the eligibility for different
land uses (finding out about eligibility would be the next step to do).

Now there are two different approaches:
1. first produce grids from my point data for the single features
(moisture, nutrients and soil type) , afterwards combine them to get
my end surface with combinded categories

or

2. assign my grid information (warmth and slope) to my points,
create a new point attribute "category" with all my single features
combined, then create my surface out of this new attribute.

In both cases I have to "interpolate" nominal data (case 1: soil type,
case 2: combined categories).

What I already tried out is r.neighbors with the "mode" method.
Therefore I first converted my point data to raster data with no-data-
values between my points. I think this is something I could work with
but I just wondered if there's a better method out there.
I also tried the Thiessen-Polygons but the resulting areas don't look
"right" (it looks like a patchwork).

Here are some comments to the other answers to my request:

On 8 Mar 01, sturm@datacomm.ch wrote:

Hi Susanne
I made very good experiences with s.surf.rst (regularised splines

with tension).

I used it for the interpoaltion of rainfall point data. I wrote a small

perl

script with which you can determine the best available

interpolation model (comparing

IDW and RST) by using the cross validation method. You will have

to 'play' with

the RST parameters in order to get quite accurate results. In the

best cases

I achieved a correlation coefficient of 0.9 for the RST model. But

the cross

validation approach took over a week processor time to compute

the best fit...

If you'd like I can post you the perl script (but you'll have to adapt it

to

your own needs)

Bernhard Sturm

Bernhard,
thank you for offering your script but I don't think that interpolation
methods like IDW, RST or Spline can help me with my problem
since I'm handling with nominal data. (Also: since I'm new to
GRASS, and Linux I have no idea how to work with a perl script... I
guess that's something I better won't deal with now).

On 8 Mar 01, Edzer J. Pebesma wrote:

They're hard to interpolate. Nearest neighbour (forming thiessen

polygon) seems

a useful action; indicator simulation another one. Most

interpolation methods

are based on weighted averages, and are therefore only suitable
to interval/ratio data. Don't use them.
--
Edzer

Edzer,
what do you mean with "indicator simulation"?

******************************************************
Susanne Hofgaertner
Fachhochschule Nuertingen
Institut fuer Angewandte Forschung
Schelmenwasen 6-8
72622 Nuertingen

On Fri, 9 Mar 2001, SUSANNE HOFGAERTNER wrote:

Here's a more detailed description of what I want to do:

Susanne,

  Now we have something of substance with which to work! Thank you.

I've got point data with information on moisture, nutrients and soil type
and I've got grid data with information on slope and on classes of warmth.

  Nutrients: how? Percentages of C, H, N, P, K?

  Moisture and slope are ratio data. Nutrients may be, depending on just
what you mean by the term. Soil type is nominal and warmth is interval. No
problem. You just need to handle each type differently until you have
created five raster maps, each covering the same geographic extent and with
the same cell resolution. Once you have that, you can use r.mapcalc to add
layers, or you can create a string (as you suggest below) representing each
possible category.

What I want to get in the end is a surface showing categories of a
combination of the above features. This means I'll have areas with a
code like for example: 01331 (which means 0:slope=0-10%,
1:warmth=cold, 3:moisture=dry, 3:nutrients=little, 1:soil type=clay).
This is a methodology used to determine the eligibility for different
land uses (finding out about eligibility would be the next step to do).

  Suitability of soil types is a major reason for the county-by-county soil
surveys done in this country. The results indicate drainage and flooding
conditions, suitability for wildlife or different plant crops, and potential
use for residential, commercial or industrial occupation.

Now there are two different approaches:
1. first produce grids from my point data for the single features
(moisture, nutrients and soil type) , afterwards combine them to get
my end surface with combinded categories

  This is what I would do. For your ration data (moisture, slope and
nutrients), reclassify your points based on your categories. Then use a
nearest-neighbor interpolation (Theissen or Veronoi polygons) to "spread
out" each point so that each cell in your grid is assigned a class value.
Once you have five maps with a category value for each parameter in each
cell, you can extract these cell by cell or by any other grouping you want.

or

2. assign my grid information (warmth and slope) to my points,
create a new point attribute "category" with all my single features
combined, then create my surface out of this new attribute.

  This won't work because each parameter varies (somewhat) independently of
all the others. Slope and moisture may be positively correlated if they're
on a northern aspect, but negatively correlated if they're on a southern
aspect. Soil type and nutrients are related, but independent of warmth
(which may be related to slope and aspect).

What I already tried out is r.neighbors with the "mode" method. Therefore
I first converted my point data to raster data with no-data- values
between my points. I think this is something I could work with but I just
wondered if there's a better method out there. I also tried the
Thiessen-Polygons but the resulting areas don't look "right" (it looks
like a patchwork).

  Perhaps your data are too dispersed. That is, you need more data points.
Also, try creating Thiessen polygons on each category map first, then
combine them.

  Sometimes, goals like yours are better described in words than in maps.
For example, you can describe suitability for each parameter independent of
the others, suggest interdependencies, and leave the interpretation of what
to do with a specific point to the policy makers.

  Well, I've stirred the pot enough. I'm going back to my own work now.
'Bye, all! :slight_smile:

Rich

Dr. Richard B. Shepard, President

                       Applied Ecosystem Services, Inc. (TM)
              Making environmentally-responsible mining happen. (SM)
                       --------------------------------
            2404 SW 22nd Street | Troutdale, OR 97060-1247 | U.S.A.
+ 1 503-667-4517 (voice) | + 1 503-667-8863 (fax) | rshepard@appl-ecosys.com