You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by "Martin Desruisseaux (JIRA)" <ji...@apache.org> on 2017/05/02 12:27:04 UTC

[jira] [Updated] (SIS-155) Area calculation on ellipsoid

     [ https://issues.apache.org/jira/browse/SIS-155?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Desruisseaux updated SIS-155:
------------------------------------
    Fix Version/s:     (was: 0.8)

> Area calculation on ellipsoid
> -----------------------------
>
>                 Key: SIS-155
>                 URL: https://issues.apache.org/jira/browse/SIS-155
>             Project: Spatial Information Systems
>          Issue Type: New Feature
>          Components: Referencing
>            Reporter: Martin Desruisseaux
>            Assignee: Martin Desruisseaux
>
> We need a method for calculating the area inside a polygon on the ellipsoid. Some useful references:
> * [Algorithm to find the area of a polygon|http://www.mathopenref.com/coordpolygonarea2.html] in Cartesian coordinate system.
> * [Ellipsoidal area computations of large terrestrial objects|http://www.geodyssey.com/papers/ggelare.html]
> * [Some algorithms for polygons on a sphere|http://trs-new.jpl.nasa.gov/dspace/bitstream/2014/40409/3/JPL%20Pub%2007-3%20%20w%20Errata.pdf]
> * [Addenda for C. F. F. Karney, Algorithms for Geodesics|http://geographiclib.sourceforge.net/geod-addenda.html]
> This algorithm for Cartesian coordinate system can be adapted to spherical coordinate systems by replacing the area sum by (note that this replacement uses vertical strips instead than horizontal ones):
> {code:java}
> s += (λ2 - λ1) * (2 + sin(φ1) + sin(φ2));
> {code}
> and the final answer by:
> {code:java}
> area = abs(s * r² / 2);
> {code}
> The _r_ value could be approximated to the authalic radius (the radius of a hypothetical sphere having the same surface than the ellipsoid). However the _Ellipsoidal Area Computations of Large Terrestrial Objects_ article seems to use a more local approximation, where _a_ and _b_ are semi-major and semi-minor axis lengths:
> {code:java}
> s = sin(φ)
> c = cos(φ)
> r = (a²b) / (a²c² + b²s²)
> {code}
> This task is for writing down some ideas. We probably need to read the above-cited article and other internet resources more carefully. In particular we need some more analytical analysis for determining how [rhumb lines|http://en.wikipedia.org/wiki/Rhumb_line] are handled in the above-cited resources. This would affect polygon segments of more than 100 km.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)