You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Karl Wright (JIRA)" <ji...@apache.org> on 2015/05/17 12:45:59 UTC
[jira] [Comment Edited] (LUCENE-6487) Add WGS84 capability to geo3d
support
[ https://issues.apache.org/jira/browse/LUCENE-6487?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14547124#comment-14547124 ]
Karl Wright edited comment on LUCENE-6487 at 5/17/15 10:45 AM:
---------------------------------------------------------------
What I propose to do is introduce a planet model, as follows:
{code}
public class PlanetModel {
// Surface of the planet:
// x^2/a^2 + y^2/b^2 + z^2/c^2 = 1.0
// Scaling factors are a,b,c.
public final double inverseA;
public final double inverseB;
public final double inverseC;
public final double inverseASquared;
public final double inverseBSquared;
public final double inverseCSquared;
// We do NOT include radius, because all computations in geo3d are in radians, not meters.
/** Planet model corresponding to sphere. */
public static final PlanetModel SPHERE = new PlanetModel(1.0,1.0,1.0);
/** Planet model corresponding to WGS84 */
public final static double WGS84_FLATTENING = 1.0/298.257223563;
// For WGS84, the flattening is applied how? Given we still want to scale by mean earth radius in meters, what gets scaled
// and how? Ask Nicholas.
public static final PlanetModel WGS84 = new PlanetModel(1.0 - WGS84_FLATTENING, 1.0 - WGS84_FLATTENING, 1.0);
public PlanetModel(final double a, final double b, final double c) {
this.inverseA = 1.0 / a;
this.inverseB = 1.0 / b;
this.inverseC = 1.0 / c;
this.inverseASquared = inverseA * inverseA;
this.inverseBSquared = inverseB * inverseB;
this.inverseCSquared = inverseC * inverseC;
}
}
{code}
~nknize@gmail.com: is this correct?
was (Author: kwright@metacarta.com):
What I propose to do is introduce a planet model, as follows:
{code}
public class PlanetModel {
// Surface of the planet:
// x^2/a^2 + y^2/b^2 + z^2/c^2 = 1.0
// Scaling factors are a,b,c.
public final double inverseA;
public final double inverseB;
public final double inverseC;
public final double inverseASquared;
public final double inverseBSquared;
public final double inverseCSquared;
// We do NOT include radius, because all computations in geo3d are in radians, not meters.
/** Planet model corresponding to sphere. */
public static final PlanetModel SPHERE = new PlanetModel(1.0,1.0,1.0);
/** Planet model corresponding to WGS84 */
public final static double WGS84_FLATTENING = 1.0/298.257223563;
// For WGS84, the flattening is applied how? Given we still want to scale by mean earth radius in meters, what gets scaled
// and how? Ask Nicholas.
public static final PlanetModel WGS84 = new PlanetModel(1.0 - WGS84_FLATTENING, 1.0 - WGS84_FLATTENING, 1.0);
public PlanetModel(final double a, final double b, final double c) {
this.inverseA = 1.0 / a;
this.inverseB = 1.0 / b;
this.inverseC = 1.0 / c;
this.inverseASquared = inverseA * inverseA;
this.inverseBSquared = inverseB * inverseB;
this.inverseCSquared = inverseC * inverseC;
}
}
{code}
> Add WGS84 capability to geo3d support
> -------------------------------------
>
> Key: LUCENE-6487
> URL: https://issues.apache.org/jira/browse/LUCENE-6487
> Project: Lucene - Core
> Issue Type: Improvement
> Components: modules/spatial
> Reporter: Karl Wright
>
> WGS84 compatibility has been requested for geo3d. This involves working with an ellipsoid rather than a unit sphere. The general formula for an ellipsoid is:
> x^2/a^2 + y^2/b^2 + z^2/c^2 = 1
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org