[GRASS-dev] G_area_of_polygon through ctypes return 0.0

Hi all,

I'm not able to compute the area of a polygon using G_area_of_polygon,

I define a square with coords: [(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]) with:

from pygrass.vector.geometry import Boundary
bound = Boundary(points=[(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)])

Check the content of the C structure, with:

for i in xrange(bound.c_points.contents.n_points):

... print i, " (%.1f, %.1f)" % (bound.c_points.contents.x[i],
bound.c_points.contents.y[i])
...
0 (0.0, 0.0)
1 (0.0, 2.0)
2 (2.0, 2.0)
3 (2.0, 0.0)
4 (0.0, 0.0)

It seems ok to me, now use the G_area_polygon function...

import grass.lib.gis as libgis
libgis.G_area_of_polygon(bound.c_points.contents.x,

... bound.c_points.contents.y,
... bound.c_points.contents.n_points)
0.0

Why G_area_of_polygon doesn't return 4.0? What is it wrong?

Best regards

Pietro

Hi,

2013/1/20 Pietro <peter.zamb@gmail.com>:

I'm not able to compute the area of a polygon using G_area_of_polygon,

try to call before G_area_of_polygon() fn
G_begin_polygon_area_calculations(). It should help.

Martin

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

On Sun, Jan 20, 2013 at 5:33 PM, Martin Landa <landa.martin@gmail.com> wrote:

Hi,

2013/1/20 Pietro <peter.zamb@gmail.com>:

I'm not able to compute the area of a polygon using G_area_of_polygon,

try to call before G_area_of_polygon() fn
G_begin_polygon_area_calculations(). It should help.

Thank you Martin!
it's working :slight_smile:

libgis.G_begin_polygon_area_calculations()

1

libgis.G_area_of_polygon(bound.c_points.contents.x,

... bound.c_points.contents.y,
... bound.c_points.contents.n_points)
4.0

Hi,

good to know. I noted this in documentation (r54720) supposing that
this is always true.

Please, try things like these note in documentation.

Vaclav

On 20 January 2013 17:42, Pietro <peter.zamb@gmail.com> wrote:

On Sun, Jan 20, 2013 at 5:33 PM, Martin Landa <landa.martin@gmail.com> wrote:

Hi,

2013/1/20 Pietro <peter.zamb@gmail.com>:

I'm not able to compute the area of a polygon using G_area_of_polygon,

try to call before G_area_of_polygon() fn
G_begin_polygon_area_calculations(). It should help.

Thank you Martin!
it's working :slight_smile:

libgis.G_begin_polygon_area_calculations()

1

libgis.G_area_of_polygon(bound.c_points.contents.x,

... bound.c_points.contents.y,
... bound.c_points.contents.n_points)
4.0
_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev