[postgis-users] ST_area returning wrong results (and stretched polygon in the screen)
Ben Madin
lists at remoteinformation.com.au
Thu Jul 21 07:24:48 PDT 2011
Hi Nicolas,
I thought ST_Area should work with Geography types and return metres? Is this not so?
cheers
Ben
On 21/07/2011, at 9:34 PM, Nicolas Ribot wrote:
> On 21 July 2011 14:42, p valdes <p.valdes334 at gmail.com> wrote:
>> Hi,
>> I'm trying to calculate the area of a polygon, with strange results...
>>
>> First a description of the problem, the ugly details at the end of the post
>>
>> I have measured the perimeter of a pond. An irregular
>> polygon vaguely 'chop shaped' without holes or spikes
>> and closed (beginning and ending in the same point).
>> For simplification purposes let's suppose that I was
>> expecting something like the left shape...
>> well, I'm obtaining instead this:
>>
>> expected obtained
>> ------- ---
>> | | | |
>> | | | |
>> | |__ | |
>> | | | |
>> ----------- | |
>> | |
>> | |
>> | |_
>> -----
>>
>> The right shape is "not right". The polygon is clearly
>> stretched in the vertical North-South axis in the screen. The
>> satellite google map support that the real shape of
>> the pond is the first represented and I think the same...
>>
>> Well I could live with this, but there's two more nasty consequences.
>>
>> 1) If I take a point inside or related to the polygon
>> in a separated map layer the point is drawn OUTSIDE
>> and far away below the figure of the pond (note also that the
>> pond is printed much more big than expect, because the relative distance
>> between a and b is the same in both, and seems right). Graphically:
>>
>> expected obtained
>>
>> --*a ---
>> | | | |
>> | | | |
>> | | | |
>> | | | |
>> | | | |
>> | | | |
>> | | | |
>> | |_ | |_
>> -----*b ------
>>
>>
>>
>>
>>
>>
>> *a
>> *b
>>
>> Maybe a problem of the map viewer software, yes but the second
>> question is more serious:
>>
>> ST_distance calculates a distance between the "a" and "b" points of
>> about 160 m for this rectangle. A max length of 160 m for this pond
>> seems reasonable to me.
>>
>> but ST_area calculates an area for this polygon of almost 7 ha!, for a
>> polygon that could fit in a rectangle of about 160x50 m!.
>> I'm obtaining a faked area about seven times BIGGER than real, uh-oh...
>>
>> Its clear to me that I'm doing a very obvious and stupid mistake. I
>> greatly appreciated if you could take a look at the problem or suggest
>> any possible source of the error
>>
>> Thanks in advance
>>
>> pvaldes.
>>
>>
>>
>> .....................................................................
>> Details
>> ..................
>>
>> The points were registered with a garmin GPS as coordinates in degrees
>> (ie: 43.254 N -4.839 W)
>>
>> I'm using PostgreSQL 9.0.4
>> on i486-pc-linux-gnu, compiled by GCC gcc-4.6.real (Debian
>> 4.6.0-6) 4.6.1 20110428 (prerelease), 32-bit
>> (obtained as Debian package from an official repository)
>>
>> postgis-1.5.3
>> (downloaded and compiled from the tarfile at postgis.refractions.net)
>>
>> This is the table
>>
>> CREATE TABLE mytable(
>> ref serial PRIMARY KEY,
>> name varchar(80),
>> perimeter geography(POLYGON,4326)
>> );
>>
>> The polygon with lat/lon coords was loaded with something like:
>>
>> INSERT INTO mytable (perimeter, name)
>> VALUES (
>> ST_GeogFromText(
>> 'POLYGON((
>> -5.3850 43.230,
>> -5.3858 43.231,
>> -5.3859 43.245,
>> ...
>> -5.3850 43.230
>> ))', 4326),'myname');
>>
>> And this is the very simple query returning strange results
>>
>> SELECT st_area(mytable.perimeter)::double precision AS square_meters
>> FROM mytable
>> WHERE name = 'myname';
>>
>> I use pgsql2shp for obtaining a shapefile that I'm loading with thuban
>
>
> Hi,
> st_area works with data units, degrees in your case.
> So you are computing square degrees, which has no geographic meaning.
> You should project your data to a metric system and then perform area
> computation on the projected data.
> North of Spain corresponds to UTM 30N (SRID 32630).
>
> Nicolas
> _______________________________________________
> postgis-users mailing list
> postgis-users at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-users
More information about the postgis-users
mailing list