[GRASS-user] i.maxlik can't read signature from i.class

Cesar Augusto Ramírez Franco caesarivs at gmail.com
Thu Nov 28 08:37:48 PST 2013


2013/11/27 Nikos Alexandris <nik at nikosalexandris.net>

> Cesar Augusto Ramírez Franco wrote:
>
> > > > I've been trying to do a supervised classification from landsat8
> imagery
> > > > using i.class and then i.maxlik, but I'm getting an error when
> running
> > > > i.maxlik saying it can't read the signature file.
>
>
> Nikos Alexandris:
>
> > > Just to double-check: verify that your "classes" don't overlay any NULL
> > > cells. It might be completely irrelevant, I have, though, blurry
> memories
> > > of this being a blocker actually (with i.smap at least).
>
> > ​There are no NULL cells on my classes, neither on my Landsat 8 images or
> > the Landsat 7 in the North Carolina dataset
>
> ok
>
>
> > > > I tested my procedure on the NC sample dataset and I'm getting the
> same
> > > > error, I'm using Grass 6.4.2 on Debian Wheezy, installed from the
> debian
> > > > repo. Here's the command set:
>
> > > > #Display RGB enhanced map
> > > > i.landsat.rgb blue=lsat7_2000_10 green=lsat7_2000_20
> red=lsat7_2000_30
> > > > d.rgb blue=lsat7_2000_10 green=lsat7_2000_20 red=lsat7_2000_30
> > > >
> > > > #"Real color" map
> > > > r.composite red=lsat7_2000_30 green=lsat7_2000_20 blue=lsat7_2000_10
> > > > output=lsat7_2000_RGB
> > > >
> > > > #Group images to process
> > > > i.group group=lsat7_2000_RGB subgroup=lsat7_2000_RGB
> > > > input=lsat7_2000_10,lsat7_2000_20,lsat7_2000_30
> > > >
> > > > #Unsupervised classification
> > > > i.cluster group=lsat7_2000_RGB subgroup=lsat7_2000_RGB
> > > > sigfile=clustlsat7
> > > > classes=20 report=rep_clust_lsat7.txt
> > >
> > > (I have never tried to feed a group that uses a single composite. I'll
> try
> > > it out.)
> >
> > The composite is for the supervised clasification, the group and subgroup
> > are made with the 3 RGB bands (1,2,3 in Landsat7 or 2,3,4 in Landsat8)​
>
> Right, I didn't pay much attention. Apologies.
>
>
>
> > > i.maxlik group=lsat7_2000_RGB subgroup=lsat7_2000_RGB
> sigfile=clustlsat7
> > > class=lsat7_classes reject=lsat7_classes_rej
>
> > > Does the unsupervised classification work?  i.cluster requires at least
> > > two input raster maps. And, honestly, I have never tried it the way you
> > > did, i.e. by using a composite map.  Also, r.composite will use by
> default
> > > "32 levels" whicih means that you loose important info for the
> subsequent
> > > classification, if I am not wrong.
>
> Same error (of mine) as above, you correctly used a group with three bands.
>
>
>
> > ​The supervised classification does work, i.cluster generates a signature
> > file and i.maxlik success to create the classes raster map
>
> You mean the _un_supervised I guess.
>

Yes, I meant the unsupervised, with i.cluster​​

> > #Supervised classification
> > >
> > > > i.class map=lsat7_2000_RGB group=lsat7_2000_RGB
> subgroup=lsat7_2000_RGB
> > > > outsig=classlsat7
> > > > i.maxlik group=lsat7_2000_RGB subgroup=lsat7_2000_RGB
> sigfile=classlsat7
> > > > class=lsat7_class_sup
> > > >
> > > > Here I get the error in which i.maxlik can't read the signature file
> > > > created by i.class (classlsat7) but read the one created by i.cluster
> > > > flawlessly
> > > >
> > > > This is what I'm selecting on the i.class monitor, I named it
> > > > vegetation:
> > > > [image: Imagen integrada 1]
> > >
> > > Only on class?  Can you try with more please?
> >
> > Yes, the error I'm getting is only with the i.class module
>
> Sorry for my typo -- I meant to write "only with 1 class?", "can you try
> with
> more than 1 class, i.e. 3 or 4 classes?".
>

I was using two classes, vegetation and construction, I tried two more
classes and got the same error
​​

> > I'm doing some tests creating a test vector​​ with my classes as areas,
>
> how many classes?


> > then converting it to raster with v.to.rast,
>
> can you post the exact command?  What values are you attributing to the
> rasterised classes?
>

I used the grass gui to draw some polygons on a test vector with
​​cat(integer),class(integer),desc(varchar) and assigned 1 for
vegetation or 2 for constructions

Then issued
v.to.rast in=test out=test use=attr col=class labelcol=desc

And got a raster with those areas, then created the signature with
i.gensigset group=lsat7_2000_RGB subgroup=lsat7_2000_RGB sig=lsat7_testsig
training=test
i.smap group=lsat7_2000_RGB subgroup=lsat7_2000_RGB sig=lsat7_testsig
out=veg_const


> and then using that raster to generate statistics for i.smap with
> > i.gensigset
>
> > I don't know if I'm not using the i.class module the right way or if it's
> > broken
>
> I don't think it is broken as it usually works/ed fine.  But we'll try to
> nail
> that down.
>
> Nikos
>

​I just tested with Grass7.0svn and the GUI tool for supervised
clasification (g.gui.iclass) generates a signature (with just one class)
that is read just fine by i.maxlik​

-- 
*César Augusto Ramírez Franco*
Laboratorio de Sistemas Complejos Naturales
Escuela de Geociencias
Facultad de Ciencias
Universidad Nacional de Colombia - Sede Medellín
Teléfono: (57-4) 430 9369 - 301 389 5607
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20131128/e3e4aeb4/attachment-0001.html>


More information about the grass-user mailing list