Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [udig-devel] Single Band Raster Styling

Andrea - Thanks for the feedback.  My comments are in-line.

On 24/02/2013 12:15 AM, andrea antonello wrote:
Hi Emily,
testing the new raster part.

I did my testing with a 1Gb tif, so that could work out as a stresstest :)

When opening it opened on my own raster styler. The file already had
an SLD file, so a style loaded.
When I switched to the new styler, I got this:


java.lang.NullPointerException
at net.refractions.udig.style.raster.ui.UniqueValuesPanel$TableColumn.getValue(UniqueValuesPanel.java:145)
at net.refractions.udig.style.raster.ui.UniqueValuesPanel$TableColumn.access$2(UniqueValuesPanel.java:141)
at net.refractions.udig.style.raster.ui.UniqueValuesPanel$TableLabelProvider.getText(UniqueValuesPanel.java:546)
at net.refractions.udig.style.raster.ui.UniqueValuesPanel$TableLabelProvider.update(UniqueValuesPanel.java:554)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:399)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
...
at net.refractions.udig.style.raster.ui.SingleBandEditorPage.init(SingleBandEditorPage.java:520)
at net.refractions.udig.style.raster.ui.SingleBandEditorPage.createPageContent(SingleBandEditorPage.java:274)
at net.refractions.udig.style.sld.editor.StyleEditorPage.createControl(StyleEditorPage.java:94)
....

Then the gui seemed to load properly anyways for ramps. Maybe a
problem of reading an existing SLD?

In the case of intervals I get:

java.lang.NullPointerException
at net.refractions.udig.style.raster.ui.IntervalValuesPanel$TableColumn.getValue(IntervalValuesPanel.java:149)
at net.refractions.udig.style.raster.ui.IntervalValuesPanel$TableLabelProvider.getText(IntervalValuesPanel.java:489)
at net.refractions.udig.style.raster.ui.IntervalValuesPanel$TableLabelProvider.update(IntervalValuesPanel.java:497)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
at org.eclipse.jface.viewers.AbstractTableViewer.doUpdateItem(AbstractTableViewer.java:399)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

and the values are not loaded in the gui.

I have found and fixed this problem.

I think I addressed most of your problems/requests.  I added the ability to
format the labels, and initialize the formatting based on the raster data
type, added the one click export, fixed some bugs.  Have a look at let me
know.

Emily, I love this guy, I really love it. Fast to use, with all the
nice features and the formatting works properly along all the modes.
One click export is great.
Really a high quality thing, thank you!

As for the plugin, I created a new plugin as it was easiest for me at the
time.  I can integrate with an existing plugin.

How about I put it into the net.refractions.udig.style.sld plugin with some
of the other raster styling pages?

That might be the best idea. Regarding "my" raster stylers. One is for
GRASS rasters (no SLD), so that one needs to be kept where it is. The
other one wanted to serve the same purpose of yours, only yours is a
great deal better now. :)
So I would be keen to retire it, but it still has an important feature
that is necessary in raster styling.

Some of the colortables have coded values.
Let me give you two examples (test them in the old raster styler):
1) Corine Landcover
This is the colormap for the landcover. Its values are ufficially
coded, so for that map I would not even want to calculate the values
of the map, just apply a color to a certain value. In the old styler
if you select it, it ignores the values of the map and creates an sld
based on the coded value inthe colortable.

2) Logarithmic
Sometimes you have maps that range between 1 and very high numbers,
where you might have high presence of low ranges and very few high
values. One example is the total contributing area of a watershed [1].
In that case a equally subdivided ramp would create more or less a map
of just one color, because most of it lies inside a certain range. In
that case it is mandatory to have the possibility to have a
logarithmic scale (the image in [1] is styled in a log way, which is
why it shows nicely). Also that scale is coded to have log breakpoints
(1, 10, 100, 1000, 10000,...) instead of equal intervals. It ignores
the values and applies that colortable.

To summarize:
- there would be the need to apply a colortable straight, with its
contained values (case 1 and partially case 2)

What do you think of me adding these predefined colortables to the Color Palette drop down list? (see attached image).

- case two could be better solved with the "quantile function" as
classification function, as already used in the vector styler

Yes I wanted to add this but I can't reuse the vector styler quantile function as it works on features (not doubles) and I didn't have the time to re-implement it for rasters. I will try to get this incorporated.

I am not sure if this is something you have time/interest to work on
and I am not asking that, you already did a great job here. You asked
for comments and here they came :) I only would like to leave the old
styler active (maybe with the name changed to "legacy" or something
that would use it a second choice) until we do not have such
functionalities, that is all.

About renaming:
- feel free to change the name of the old styler to "Legacy Single
Banded Raster Styler"

If I incorporate the above two points do we still need to keep this?

- what about changing also the name of the "Simple Raster" editor?
Apart of the fact that I never used it in my life, but it looks like
something that would work only for imagery. Could we switch it off for
single band rasters and enable it only in the multi case? And maybe
change the name to "Imagery"?

The name change sounds good. I was also interested in only having it available for 3+ band rasters but I could not figure out how to do this? Do you have any ideas?


Emily


What do you think?

Cheers,
Andrea


[1] http://code.google.com/p/jgrasstools/wiki/Tca



Emily




On 15/02/2013 10:51 PM, andrea antonello wrote:

Hi Emily,

I'll pass on the massive raster for now :)  I was able to get a similar
error with something else I was testing.  Perhaps when I update you can
test
again for me.


Sure thing!

[...]

The "Compute Values" dialog has very little to do with sld.  It basically
computes a set of numbers.
For example, for equal intervals it computes the min and max of the
raster
and divides it by the number of intervals you requested.  The "values to
ignore" are values that are not taken into account when computing the min
and max.

So if your raster has the value -9999,0-10 and you don't put anything in
the
"values to ignore" dialog you'll get breaks of -9999, -8998, -7997, ...
10.
If you put -9999 in the "values to ignore" box then you will get breaks
of
0,1,2....10.


ok, which sounds reasonable. So when it comes to style, they are
indeed ignored and no longer available.

For your issue of the collar when reprojection orthophotos, you will need
to
add an extra row to the map theming table (on the main page) with an
opacity
of 0, value of the "collar" value, and a label of "-no data-" (if you
don't
want it to show up in the legend).


Ok. In the ortophoto case it is a bit more complicated, since it is
not single banded, but that is not the topic here, since the styler is
single banded.

At one point in the past you mentioned NaN numbers in rasters - I get the
impression the geotools styling engine does not support this?  As soon as
I
put a NaN value in the sld, all other styling is ignored. Perhaps I am
doing
something wrong.


No, you are right, geotools already handles them and ignores them when
rendering.
So they simply do not appear.
The problem I found sometimes, is that in the case of adf esri
binaries, the novalue is not handled properly, being (from memory) a
Float.MAX_VALUE or something similar. In that case it is handy to be
able to set it. That applies to styling, if you are doing processing,
then you will need to remove them anyways with some mapalgebra.

One more question. I see you created a new plugin, which is a bit
against the try we are having to merge plugins instead of adding new.
Is this bound to the need of the plugin's namespace? Your styler
should really replace my single band raster styler, since it is
better. Let's discuss how to best proceed.

Cheers,
Andrea





Emily





_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel
_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel


Attachment: predefinedstyles.png
Description: PNG image


Back to the top