[GRASS-dev] [GRASS GIS] #3356: v.to.db: incorrect area calculations in lat-long location
GRASS GIS
trac at osgeo.org
Wed Jun 7 02:01:50 PDT 2017
#3356: v.to.db: incorrect area calculations in lat-long location
--------------------------+-----------------------------------
Reporter: mlennert | Owner: grass-dev@…
Type: defect | Status: new
Priority: normal | Milestone: 7.4.0
Component: Vector | Version: svn-trunk
Resolution: | Keywords: v.to.db area lat-long
CPU: Unspecified | Platform: Unspecified
--------------------------+-----------------------------------
Comment (by mmetz):
Replying to [comment:6 mlennert]:
> Replying to [comment:5 annakrat]:
>
> > But the area computation problem must be somewhere in
[https://grass.osgeo.org/programming7
> >/area__poly1_8c.html#af6f1f53bacc34249be98006c95369695
G_ellipsoid_polygon_area], probably related
> > to very small numbers, but I couldn't pinpoint the problem. There is
something specific about this
> > polygon, when I draw a similar one, it gives more reasonable results.
>
> So, yes, this definitely seems to be a precision issue, but at this
stage I can't really see where in the source code, and don't have much
time to delve into it in greater detail. Maybe MarkusM has an idea ?
The problem seems to be in G_ellipsoid_polygon_area() at
[https://trac.osgeo.org/grass/browser/grass/trunk/lib/gis/area_poly1.c#L161
L161]. If dy is much smaller than dx, dx / dy becomes very large and
erroneus values might sneak in. A simple solution could be to set dy to
zero if dy is very small, but then how to define "very small"?
Interestingly, dx must not be snapped to zero, otherwise I get complete
nonsense results for the test shapefile.
--
Ticket URL: <https://trac.osgeo.org/grass/ticket/3356#comment:7>
GRASS GIS <https://grass.osgeo.org>
More information about the grass-dev
mailing list