Opened 20 months ago
Last modified 10 months ago
#5235 new enhancement
A problem in unit handling in Geography type
Reported by: | sergeyt | Owned by: | pramsey |
---|---|---|---|
Priority: | medium | Milestone: | PostGIS 3.5.0 |
Component: | postgis | Version: | 3.2.x |
Keywords: | geography | Cc: | sergeyt |
Description
Geography type does not take into account units of the GCS. It assumes the units to be the degrees. There are some GCS that use other units. For example, 4807 (https://spatialreference.org/ref/?search=epsg:4807) uses grads instead of degrees. Here is a bug: Perform distance on two points defined in 4326 SELECT ST_Distance(
'SRID=4326;POINT(0 0)'::geography, 'SRID=4326;POINT(1 0)'::geography );
Result is 111319.49079327, which is expected on degree at equator.
Transform the points to 4807 and calculate the distance: SELECT ST_Distance(
ST_Transform('SRID=4326;POINT(0 0)', 4807)::geography, ST_Transform('SRID=4326;POINT(1 0)', 4807)::geography );
Result is 123687.23083618. This is 10% larger than expected.
Transformation from 4326 SELECT ST_AsText(ST_Transform('SRID=4326;POINT(0 0)', 4807)); produces a point in GRADS: "POINT(-2.596322435214223 -0.003215804261427)". Cast to geography apparently does not convert it to degrees.
So either the geography operator should do conversion of grads to degrees or the Geography type itself should be taking into account the units of the GCS.
Change History (3)
comment:1 by , 19 months ago
Milestone: | PostGIS PostgreSQL → PostGIS 3.2.4 |
---|
comment:2 by , 18 months ago
Milestone: | PostGIS 3.2.4 → PostGIS 3.4.0 |
---|
comment:3 by , 10 months ago
Milestone: | PostGIS 3.4.0 → PostGIS 3.5.0 |
---|---|
Type: | defect → enhancement |
This feels more like a feature enhancement.