[GRASS-dev] latlong problem

Hi,

there is a significant problem in LatLong location. Try the following:

g.region n=80 s=-80 w=-170 e=170 res=1;
v.in.region out=reg;
g.region n=90 s=-90 w=-180 e=180 res=1;
d.erase;d.vect reg
[1] should be [2]

I prepared a simple patch to fix this bug.

I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
does not make sense to me... or am I wrong?

Martin

[1] http://gama.fsv.cvut.cz/~landa/.../grass/reg.png
[2] http://gama.fsv.cvut.cz/~landa/.../grass/reg2.png

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *

(attachments)

plot.c.diff (840 Bytes)

On Wed, Mar 07, 2007 at 02:03:58PM +0100, Martin Landa wrote:

Hi,

there is a significant problem in LatLong location. Try the following:

g.region n=80 s=-80 w=-170 e=170 res=1;
v.in.region out=reg;
g.region n=90 s=-90 w=-180 e=180 res=1;
d.erase;d.vect reg
[1] should be [2]

I prepared a simple patch to fix this bug.

I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
does not make sense to me... or am I wrong?

Martin

[1] http://gama.fsv.cvut.cz/~landa/.../grass/reg.png
[2] http://gama.fsv.cvut.cz/~landa/.../grass/reg2.png

Great work, Martin!

This patch cures the problem of
http://mpa.itc.it/markus/tmp/admin98_oceans_buggy.png
to
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png

Unrelated bug (?): The boundary box at the East end isn't
visible - is the display driver cutting off by 1 pixel from
East? The region is 90N, 90S, 180W, 180E, Latlong WGS84.
See admin98_oceans_fixed.png for illustration, generated
with d.out.png.

Markus

Martin Landa wrote:

there is a significant problem in LatLong location. Try the following:

g.region n=80 s=-80 w=-170 e=170 res=1;
v.in.region out=reg;
g.region n=90 s=-90 w=-180 e=180 res=1;
d.erase;d.vect reg
[1] should be [2]

No, [1] is correct.

Given two points at the same latitude, each 10 degrees either side of
the 180th meridian, the line segment between them is deemed to be the
one which subtends 20 degrees and crosses the 180th meridian, not the
one which subtends 340 degrees and crosses the prime meridian.

IOW, "shorter" has a higher priority than "doesn't cross the 180th
meridian".

I prepared a simple patch to fix this bug.

It isn't a bug. It may not produce your preferred result, but the
behaviour is quite intentional.

I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
does not make sense to me... or am I wrong?

Longitudes are cyclic. This makes their behaviour rather
counterintuitive, e.g.:

  179 + 2 = -179
=> -179 - 179 = 2
=> -179 - 179 > 0
=> -179 > 179

--
Glynn Clements <glynn@gclements.plus.com>

Hi Glynn,

2007/3/7, Glynn Clements <glynn@gclements.plus.com>:

> there is a significant problem in LatLong location. Try the following:
>
> g.region n=80 s=-80 w=-170 e=170 res=1;
> v.in.region out=reg;
> g.region n=90 s=-90 w=-180 e=180 res=1;
> d.erase;d.vect reg
> [1] should be [2]

No, [1] is correct.

Given two points at the same latitude, each 10 degrees either side of
the 180th meridian, the line segment between them is deemed to be the
one which subtends 20 degrees and crosses the 180th meridian, not the
one which subtends 340 degrees and crosses the prime meridian.

IOW, "shorter" has a higher priority than "doesn't cross the 180th
meridian".

OK, then I understand. Anyway, the centroid should be placed inside
the area. It is at least confusing.

So the problem with "buggy" maps which Markus described still remains.

Thanks for explanation.

Martin

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *

Martin Landa wrote:

Hi Glynn,

2007/3/7, Glynn Clements <glynn@gclements.plus.com>:

> > there is a significant problem in LatLong location. Try the following:
> >
> > g.region n=80 s=-80 w=-170 e=170 res=1;
> > v.in.region out=reg;
> > g.region n=90 s=-90 w=-180 e=180 res=1;
> > d.erase;d.vect reg
> > [1] should be [2]
>
> No, [1] is correct.
>
> Given two points at the same latitude, each 10 degrees either side of
> the 180th meridian, the line segment between them is deemed to be the
> one which subtends 20 degrees and crosses the 180th meridian, not the
> one which subtends 340 degrees and crosses the prime meridian.
>
> IOW, "shorter" has a higher priority than "doesn't cross the 180th
> meridian".

OK, then I understand. Anyway, the centroid should be placed inside
the area. It is at least confusing.

Ah; I missed that part. Yes, the centroid should definitely lie inside
the area (i.e. on the 180th meridian in this case).

So the problem with "buggy" maps which Markus described still remains.

Personally, I'd be tempted to just treat the 180th meridian as a
discontinuity (New Zealanders and Japanese would have to stick to
using projected locations). I wouldn't be surprised if there are a
*lot* of places in the code which ought to contain specific code to
handle longitude wrapping but don't.

[E.g. "d.vect ... render=c" doesn't handle it correctly.
D_polygon_clip() does the clipping in geographic coordinates, before
transforming the vertices to display coordinates. Most of the time,
this is preferable, as you eliminate the conversion overhead for any
points which are discarded by clipping.]

Actually, this isn't a problem which can be "solved". What do you do
if you *want* a polygon which spans 340° of longitude? How do you
interpret a polygon which spans exactly 180°; which hemisphere does it
cover?

IOW, I don't think that we'll ever get this "right".

--
Glynn Clements <glynn@gclements.plus.com>

Glynn Clements wrote on 03/07/2007 06:32 PM:

...
Actually, this isn't a problem which can be "solved". What do you do
if you *want* a polygon which spans 340° of longitude? How do you
interpret a polygon which spans exactly 180°; which hemisphere does it
cover?

IOW, I don't think that we'll ever get this "right".
  
Well, to me
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png
looks much more reasonable than
http://mpa.itc.it/markus/tmp/admin98_oceans_buggy.png

Sorry for this stupid comment, but I still think that there is a problem.
And in this case it is a perfect -180 .. 180deg map. The rendering is
ok for 3/4th of the map but not the northern part (although there
is a north boundary in the map, see "fixed" map example).

Markus

Glynn Clements wrote:

Personally, I'd be tempted to just treat the 180th meridian as a
discontinuity (New Zealanders and Japanese would have to stick to
using projected locations).

aw, come on Glynn. I could just as easily argue that folks in the UK
should stick to using projected locations and GRASS enforce 0-360.
It's no solution.

I wouldn't be surprised if there are a *lot* of places in the code
which ought to contain specific code to handle longitude wrapping but
don't.

AFAICT, all the raster and region code is happy to use both +-180 and
0-360 lons; all the vector modules currently don't know or attempt to do
anything about it; and as we see here the libgis vector code is a mixed
lot.

[E.g. "d.vect ... render=c" doesn't handle it correctly.

the one I noticed was:

g.region n=90N s=90S w=-180 e=180
v.in.region world_box
d.vect world_box

D_polygon_clip() does the clipping in geographic coordinates, before
transforming the vertices to display coordinates. Most of the time,
this is preferable, as you eliminate the conversion overhead for any
points which are discarded by clipping.]

Actually, this isn't a problem which can be "solved". What do you do
if you *want* a polygon which spans 340° of longitude? How do you
interpret a polygon which spans exactly 180°; which hemisphere does it
cover?

So centroid placement is crucial (you should at least be able to trust
v.in.ascii form=standard). There are a number of tests for point-in-
polygon which could be employed then. As for if the smaller or bigger
polygon is "inside" (e.g. world ozone coverage vs hole) for GIS-
generated polygons, I guess just keeping with the current mode of "pick
the smaller area" is a good choice. Martin's v.in.region bug is that
that rule is not consistent throughout the code?

Polar lat/lon can also be a display issue (see prev email), but e.g.
d.geodesic seems happy enough & reports seemingly correct distances
from a lat/lon loc'n.

IOW, I don't think that we'll ever get this "right".

Well, hopefully we can get the vector handling code "good enough" that
we don't hear any complaints about it (like the region and raster code
now). But of course it is much harder to get right than a simple if(a>b)
cartesian math.

Markus:

Well, to me
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png
looks much more reasonable than
http://mpa.itc.it/markus/tmp/admin98_oceans_buggy.png

Sorry for this stupid comment, but I still think that there is a
problem. And in this case it is a perfect -180 .. 180deg map. The
rendering is ok for 3/4th of the map but not the northern part
(although there is a north boundary in the map, see "fixed" map
example).

There is a bug there, but probably we should be careful about "fixing"
the problem in the wrong place (discl: I haven't actually looked).

Hamish

Hamish wrote:

> Personally, I'd be tempted to just treat the 180th meridian as a
> discontinuity (New Zealanders and Japanese would have to stick to
> using projected locations).

aw, come on Glynn. I could just as easily argue that folks in the UK
should stick to using projected locations and GRASS enforce 0-360.
It's no solution.

No, the only *solution* is to write two versions of every piece of
code which deals with coordinates. One version would use the rules of
Euclidean geometry and would work with projected coordinates, the
other would use the rules of non-Euclidean (specifically, elliptical)
geometry and handle lat/lon coordinates.

The problem arises when you try to use the same code (with a couple of
minor tweaks) for both cases.

So far as vector data is concerned, the simplest solution would be to
ensure that wraparound never occurs within a single polygon (e.g. a
triangle on the 180th meridian would be [(180,10),(170,0),(190,0)],
and not [(180,10),(170,0),(-170,0)].

OTOH, that could create problems when edges are shared between
polygons. It would probably mean that a whole-earth map would span
more than 360°. Rendering regions crossing the 180th meridian would be
problematic (well, you could just render the data twice, with a 360°
offset).

That still doesn't allow for polar regions; realistically, you would
need to "cut" such regions so that the pole formed a vertex.

--
Glynn Clements <glynn@gclements.plus.com>

Glynn Clements wrote:

Actually, this isn't a problem which can be "solved". What do you do
if you *want* a polygon which spans 340° of longitude? How do you
interpret a polygon which spans exactly 180°; which hemisphere does it
cover?

IOW, I don't think that we'll ever get this "right".

BTW, people with far more resources than us manage to get this wrong:

  http://www.defensenews.com/story.php?F=2590456&C=america

--
Glynn Clements <glynn@gclements.plus.com>

Hi,

just stupidly playing around;-)

[1] d.erase;d.vect cs
[2] d.erase;d.vect cs render=r
[3] d.erase;d.vect cs render=d
[4] d.erase;d.vect cs render=c

-> [1] Antarctica buggy
-> [2-4] OK

I pan a bit:

[5] the same (original [1])
[6] some areas are not filled ([2-4])

[1] http://gama.fsv.cvut.cz/~landa/.../grass/latlong-render/cs1.png
[2] http://gama.fsv.cvut.cz/~landa/.../grass/latlong-render/cs2.png

[3] http://gama.fsv.cvut.cz/~landa/.../grass/latlong-render/cs3.png
[4] http://gama.fsv.cvut.cz/~landa/.../grass/latlong-render/cs4.png

[5] http://gama.fsv.cvut.cz/~landa/.../grass/latlong-render/cs5.png
[6] http://gama.fsv.cvut.cz/~landa/.../grass/latlong-render/cs6.png

BTW with my patch render=g seems to work without any problem (also the
lowest boundary of Antarctica is rendered, strangely). But it is not
solving the problem. The problem should be fixed somewhere else (AFAIU
Glynn's and Hamish's notes).

Regards, Martin

2007/3/7, Markus Neteler <neteler@itc.it>:

Glynn Clements wrote on 03/07/2007 06:32 PM:
> ...
> Actually, this isn't a problem which can be "solved". What do you do
> if you *want* a polygon which spans 340° of longitude? How do you
> interpret a polygon which spans exactly 180°; which hemisphere does it
> cover?
>
> IOW, I don't think that we'll ever get this "right".
>

Well, to me
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png
looks much more reasonable than
http://mpa.itc.it/markus/tmp/admin98_oceans_buggy.png

Sorry for this stupid comment, but I still think that there is a problem.
And in this case it is a perfect -180 .. 180deg map. The rendering is
ok for 3/4th of the map but not the northern part (although there
is a north boundary in the map, see "fixed" map example).

Markus

_______________________________________________
grass-dev mailing list
grass-dev@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass-dev

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *

Hi,

I just committed a number of changes to GEM in the CVS.
Changes:

- removed all interaction on the console to be consistent with GRASS
command line tools behaviour. This means that users may now have to su
before running GEM in order to install into a system-wide GRASS directory
- removed/changed everything that was not POSIX compliant. GEM now
compiles fine under MINGW32/MSYS, although I did not yet get a chance to
test if it's working
- the binary is now called gem6 instead of gem to avoid conflicts with
the Ruby tool
- added a few options
- updated documentation

This also required a minor tweak of the real-install action in the main
GRASS Makefile so that it now picks up the 'gem6' binary from the 'gem' dir.

Hope this comes in time for the 6.3 preview release. Can't wait to see
that happen!

Best,

Benjamin

Markus Neteler wrote:

On Wed, Mar 07, 2007 at 02:03:58PM +0100, Martin Landa wrote:

Hi,

there is a significant problem in LatLong location. Try the following:

g.region n=80 s=-80 w=-170 e=170 res=1;
v.in.region out=reg;
g.region n=90 s=-90 w=-180 e=180 res=1;
d.erase;d.vect reg
[1] should be [2]

I prepared a simple patch to fix this bug.

I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
does not make sense to me... or am I wrong?

Martin

[1] http://gama.fsv.cvut.cz/~landa/.../grass/reg.png
[2] http://gama.fsv.cvut.cz/~landa/.../grass/reg2.png

Great work, Martin!

This patch cures the problem of
http://mpa.itc.it/markus/tmp/admin98_oceans_buggy.png
to
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png

Unrelated bug (?): The boundary box at the East end isn't
visible - is the display driver cutting off by 1 pixel from
East? The region is 90N, 90S, 180W, 180E, Latlong WGS84.
See admin98_oceans_fixed.png for illustration, generated
with d.out.png.

Markus

_______________________________________________
grass-dev mailing list
grass-dev@grass.itc.it
http://grass.itc.it/mailman/listinfo/grass-dev

--
Benjamin Ducke, M.A.
Archäoinformatik
(Archaeoinformation Science)
Institut für Ur- und Frühgeschichte
(Inst. of Prehistoric and Historic Archaeology)
Christian-Albrechts-Universität zu Kiel
Johanna-Mestorf-Straße 2-6
D 24098 Kiel
Germany

Tel.: ++49 (0)431 880-3378 / -3379
Fax : ++49 (0)431 880-7300
www.uni-kiel.de/ufg

Glynn Clements wrote on 03/08/2007 08:23 AM:

Glynn Clements wrote:

Actually, this isn't a problem which can be "solved". What do you do
if you *want* a polygon which spans 340° of longitude? How do you
interpret a polygon which spans exactly 180°; which hemisphere does it
cover?

IOW, I don't think that we'll ever get this "right".
    
BTW, people with far more resources than us manage to get this wrong:

  http://www.defensenews.com/story.php?F=2590456&C=america

"In less than 48 hours, F-22A contractor Lockheed Martin delivered a
software fix. An F-22A at Nellis successfully flew with the updated
software, Bergeson said.
"

We can still beat that :slight_smile:

Markus

Martin Landa wrote:

there is a significant problem in LatLong location. Try the following:

g.region n=80 s=-80 w=-170 e=170 res=1;
v.in.region out=reg;
g.region n=90 s=-90 w=-180 e=180 res=1;
d.erase;d.vect reg
[1] should be [2]

I prepared a simple patch to fix this bug.

I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
does not make sense to me... or am I wrong?

I've committed a change to v.in.region to add additional vertices if a
lat/lon region is wider than 179°, so such regions shouldn't get
turned inside-out by code which uses the "shortest route" maxim.

Also, I've modified D_polygon_clip (used by "d.vect render=c") to
handle longitude wrap. It doesn't handle polygons which contain a
pole, but the other rendering methods don't handle that either (in
fact, I doubt that many things *do* handle that case). OTOH, it should
handle polygons which make multiple "orbits" (e.g. an "apple peel"
spiral).

--
Glynn Clements <glynn@gclements.plus.com>

Glynn,

2007/3/9, Glynn Clements <glynn@gclements.plus.com>:

Martin Landa wrote:

> there is a significant problem in LatLong location. Try the following:
>
> g.region n=80 s=-80 w=-170 e=170 res=1;
> v.in.region out=reg;
> g.region n=90 s=-90 w=-180 e=180 res=1;
> d.erase;d.vect reg
> [1] should be [2]
>
> I prepared a simple patch to fix this bug.
>
> I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
> does not make sense to me... or am I wrong?

I've committed a change to v.in.region to add additional vertices if a
lat/lon region is wider than 179°, so such regions shouldn't get
turned inside-out by code which uses the "shortest route" maxim.

Also, I've modified D_polygon_clip (used by "d.vect render=c") to
handle longitude wrap. It doesn't handle polygons which contain a
pole, but the other rendering methods don't handle that either (in
fact, I doubt that many things *do* handle that case). OTOH, it should
handle polygons which make multiple "orbits" (e.g. an "apple peel"
spiral).

g.region n=90 s=-90 w=-180 e=180;
v.in.region out=reg

works well, thanks!

Trying to display world map, the problem with Antarctica still
remains, now it is not filled. Maybe "buggy" boundaries. Not sure.
Just for comment, when I enable (east1 - east2) > 360, the area is
filled correctly.

In summary,

render=g -> Antarctica filled wrongly
render=r -> OK (don't d.zoom -p)
render=d -> as render=r
render=c -> now not filled

The testing location is here if you are interested

http://gama.fsv.cvut.cz/~landa/.../grass/latlong.tar.gz

Martin

--
Glynn Clements <glynn@gclements.plus.com>

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *

Martin Landa wrote:

> > there is a significant problem in LatLong location. Try the following:
> >
> > g.region n=80 s=-80 w=-170 e=170 res=1;
> > v.in.region out=reg;
> > g.region n=90 s=-90 w=-180 e=180 res=1;
> > d.erase;d.vect reg
> > [1] should be [2]
> >
> > I prepared a simple patch to fix this bug.
> >
> > I am not sure whether it is OK. Anyway testing "(east1 - east2) > 180"
> > does not make sense to me... or am I wrong?
>
> I've committed a change to v.in.region to add additional vertices if a
> lat/lon region is wider than 179°, so such regions shouldn't get
> turned inside-out by code which uses the "shortest route" maxim.
>
> Also, I've modified D_polygon_clip (used by "d.vect render=c") to
> handle longitude wrap. It doesn't handle polygons which contain a
> pole, but the other rendering methods don't handle that either (in
> fact, I doubt that many things *do* handle that case). OTOH, it should
> handle polygons which make multiple "orbits" (e.g. an "apple peel"
> spiral).

g.region n=90 s=-90 w=-180 e=180;
v.in.region out=reg

works well, thanks!

Trying to display world map, the problem with Antarctica still
remains, now it is not filled. Maybe "buggy" boundaries. Not sure.
Just for comment, when I enable (east1 - east2) > 360, the area is
filled correctly.

In summary,

render=g -> Antarctica filled wrongly
render=r -> OK (don't d.zoom -p)
render=d -> as render=r
render=c -> now not filled

The changes to handle longitude wrapping are likely to discard
polygons which bound a pole.

More precisely: the euclidify() function traverses the list of
longitude values; if a value differs from the previous one by more
than ±180°, it has the appropriate multiple of 360° added to it to
bring it into range, so that all line segments span no more than 180°.

If the gap between the first and last values exceeds 180°, the
(presumed) polygon cannot be mapped to the Euclidean plane.

One way to look at is: if you adjust the first point to fall within
±180° of the final point, you then have to adjust the second point to
fall within ±180° of the first point, and so on, resulting in an
infinite loop.

Another way to look at it is that there is no way to cut the
cylindrical lat/lon surface so that it forms a plane without breaking
the polygon's boundary.

The testing location is here if you are interested

http://gama.fsv.cvut.cz/~landa/.../grass/latlong.tar.gz

I note that the largest polygon for Antarctica contains a "fix-up"
segment between the vertices:

179.9999 -89.9999
-179.9999 -89.9999

If I suppress the "shortest path" maxim for segments where |lat|>89.9°
(which will typically be fix-up for the pole), the polygon is
considered closed.

I also needed to coerce the initial values into the range
-180°<lon<180° (rather than 0°<lon<360°) to avoid leaving a blank
triangle. Essentially, the radii which (along with the -89.9999th
paralell) formed the cut were both being placed at the left-hand edge.

With those two changes, Antarctica rendered correctly. Hopefully,
that's likely to be good enough for most practical purposes.

--
Glynn Clements <glynn@gclements.plus.com>

Hi Glynn,

2007/3/9, Glynn Clements <glynn@gclements.plus.com>:

More precisely: the euclidify() function traverses the list of
longitude values; if a value differs from the previous one by more
than ±180°, it has the appropriate multiple of 360° added to it to
bring it into range, so that all line segments span no more than 180°.

If the gap between the first and last values exceeds 180°, the
(presumed) polygon cannot be mapped to the Euclidean plane.

One way to look at is: if you adjust the first point to fall within
±180° of the final point, you then have to adjust the second point to
fall within ±180° of the first point, and so on, resulting in an
infinite loop.

Another way to look at it is that there is no way to cut the
cylindrical lat/lon surface so that it forms a plane without breaking
the polygon's boundary.

> The testing location is here if you are interested
>
> http://gama.fsv.cvut.cz/~landa/.../grass/latlong.tar.gz

I note that the largest polygon for Antarctica contains a "fix-up"
segment between the vertices:

179.9999 -89.9999
-179.9999 -89.9999

If I suppress the "shortest path" maxim for segments where |lat|>89.9°
(which will typically be fix-up for the pole), the polygon is
considered closed.

I also needed to coerce the initial values into the range
-180°<lon<180° (rather than 0°<lon<360°) to avoid leaving a blank
triangle. Essentially, the radii which (along with the -89.9999th
paralell) formed the cut were both being placed at the left-hand edge.

With those two changes, Antarctica rendered correctly. Hopefully,
that's likely to be good enough for most practical purposes.

Great!, with render=c seems to work.

Thanks...

Martin

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *

Markus Neteler wrote on 03/07/2007 06:40 PM:

Glynn Clements wrote on 03/07/2007 06:32 PM:
  

...
Actually, this isn't a problem which can be "solved". What do you do
if you *want* a polygon which spans 340° of longitude? How do you
interpret a polygon which spans exactly 180°; which hemisphere does it
cover?

IOW, I don't think that we'll ever get this "right".
  
Well, to me
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png
looks much more reasonable than
http://mpa.itc.it/markus/tmp/admin98_oceans_buggy.png

Sorry for this stupid comment, but I still think that there is a problem.
And in this case it is a perfect -180 .. 180deg map. The rendering is
ok for 3/4th of the map but not the northern part (although there
is a north boundary in the map, see "fixed" map example).
  
Joy and happiness! After re-generating the oceans map (using the updated
v.in.region),
the rendering is correct now (using the standard renderer).

Now it looks like
http://mpa.itc.it/markus/tmp/admin98_oceans_fixed.png

Thanks for the fixes, Glynn!
Markus

Hi,

2007/3/9, Martin Landa <landa.martin@gmail.com>:

[snip]

> With those two changes, Antarctica rendered correctly. Hopefully,
> that's likely to be good enough for most practical purposes.

Great!, with render=c seems to work.

just note, I tried to add new vertex

v.edit map=cs tool=break coords=0,-89.999

and default render methods works also. Not important, just following
your notes;-)

Martin

Thanks...

Martin

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *

--
Martin Landa <landa.martin@gmail.com> * http://gama.fsv.cvut.cz/~landa *