You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by kw...@apache.org on 2017/09/22 06:03:56 UTC
[1/2] lucene-solr:branch_7x: LUCENE-7970: Add surface point on
bearing method to PlanetModel. Committed on behalf of Ignacio Vera.
Repository: lucene-solr
Updated Branches:
refs/heads/branch_7x 014fbf9e0 -> b99576a93
LUCENE-7970: Add surface point on bearing method to PlanetModel. Committed on behalf of Ignacio Vera.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/289e7467
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/289e7467
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/289e7467
Branch: refs/heads/branch_7x
Commit: 289e746793b0548c5c353dd36e6fecb57b208183
Parents: 7164360
Author: Karl Wright <Da...@gmail.com>
Authored: Fri Sep 22 02:01:00 2017 -0400
Committer: Karl Wright <Da...@gmail.com>
Committed: Fri Sep 22 02:03:30 2017 -0400
----------------------------------------------------------------------
.../lucene/spatial3d/geom/PlanetModel.java | 59 ++++++++++++++++++++
1 file changed, 59 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/289e7467/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/PlanetModel.java
----------------------------------------------------------------------
diff --git a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/PlanetModel.java b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/PlanetModel.java
index 5ef7889..11b285c 100644
--- a/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/PlanetModel.java
+++ b/lucene/spatial3d/src/java/org/apache/lucene/spatial3d/geom/PlanetModel.java
@@ -322,6 +322,65 @@ public class PlanetModel implements SerializableObject {
return c * A * (sigma - deltaSigma);
}
+ /** Compute new point given original point, a bearing direction, and an adjusted angle (as would be computed by
+ * the surfaceDistance() method above). The original point can be anywhere on the globe. The bearing direction
+ * ranges from 0 (due east at the equator) to pi/2 (due north) to pi (due west at the equator) to 3 pi/4 (due south)
+ * to 2 pi.
+ * @param from is the starting point.
+ * @param dist is the adjusted angle.
+ * @param bearing is the direction to proceed.
+ * @return the new point, consistent with the bearing direction and distance.
+ */
+ public GeoPoint surfacePointOnBearing(final GeoPoint from, final double dist, final double bearing) {
+ // Algorithm using Vincenty's formulae (https://en.wikipedia.org/wiki/Vincenty%27s_formulae)
+ // which takes into account that planets may not be spherical.
+ //Code adaptation from http://www.movable-type.co.uk/scripts/latlong-vincenty.html
+
+ double lat = from.getLatitude();
+ double lon = from.getLongitude();
+ double sinα1 = Math.sin(bearing);
+ double cosα1 = Math.cos(bearing);
+
+ double tanU1 = (1.0 - flattening) * Math.tan(lat);
+ double cosU1 = 1.0 / Math.sqrt((1.0 + tanU1 * tanU1));
+ double sinU1 = tanU1 * cosU1;
+
+ double σ1 = Math.atan2(tanU1, cosα1);
+ double sinα = cosU1 * sinα1;
+ double cosSqα = 1.0 - sinα * sinα;
+ double uSq = cosSqα * squareRatio;
+ double A = 1.0 + uSq / 16384.0 * (4096.0 + uSq * (-768.0 + uSq * (320.0 - 175.0 * uSq)));
+ double B = uSq / 1024.0 * (256.0 + uSq * (-128.0 + uSq * (74.0 - 47.0 * uSq)));
+
+ double cos2σM;
+ double sinσ;
+ double cosσ;
+ double Δσ;
+
+ double σ = dist / (c * A);
+ double σʹ;
+ double iterations = 0;
+ do {
+ cos2σM = Math.cos(2.0 * σ1 + σ);
+ sinσ = Math.sin(σ);
+ cosσ = Math.cos(σ);
+ Δσ = B * sinσ * (cos2σM + B / 4.0 * (cosσ * (-1.0 + 2.0 * cos2σM * cos2σM) -
+ B / 6.0 * cos2σM * (-3.0 + 4.0 * sinσ * sinσ) * (-3.0 + 4.0 * cos2σM * cos2σM)));
+ σʹ = σ;
+ σ = dist / (c * A) + Δσ;
+ } while (Math.abs(σ - σʹ) > Vector.MINIMUM_ANGULAR_RESOLUTION && ++iterations < 200);
+
+ double x = sinU1 * sinσ - cosU1 * cosσ * cosα1;
+ double φ2 = Math.atan2(sinU1 * cosσ + cosU1 * sinσ * cosα1, (1.0 - flattening) * Math.sqrt(sinα * sinα + x * x));
+ double λ = Math.atan2(sinσ * sinα1, cosU1 * cosσ - sinU1 * sinσ * cosα1);
+ double C = flattening / 16.0 * cosSqα * (4.0 + flattening * (4.0 - 3.0 * cosSqα));
+ double L = λ - (1.0 - C) * flattening * sinα *
+ (σ + C * sinσ * (cos2σM + C * cosσ * (-1.0 + 2.0 * cos2σM * cos2σM)));
+ double λ2 = (lon + L + 3.0 * Math.PI) % (2.0 * Math.PI) - Math.PI; // normalise to -180..+180
+
+ return new GeoPoint(this, φ2, λ2);
+ }
+
@Override
public boolean equals(final Object o) {
if (!(o instanceof PlanetModel))
[2/2] lucene-solr:branch_7x: Merge branch 'branch_7x' of
https://git-wip-us.apache.org/repos/asf/lucene-solr into branch_7x
Posted by kw...@apache.org.
Merge branch 'branch_7x' of https://git-wip-us.apache.org/repos/asf/lucene-solr into branch_7x
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b99576a9
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b99576a9
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b99576a9
Branch: refs/heads/branch_7x
Commit: b99576a937a1cfcbe5c023682fb021dc337ecb60
Parents: 289e746 014fbf9
Author: Karl Wright <Da...@gmail.com>
Authored: Fri Sep 22 02:03:37 2017 -0400
Committer: Karl Wright <Da...@gmail.com>
Committed: Fri Sep 22 02:03:37 2017 -0400
----------------------------------------------------------------------
.gitignore | 1 +
.../lucene/spatial-extras/pom.xml.template | 7 +
lucene/CHANGES.txt | 14 +
.../lucene/analysis/synonym/SynonymMap.java | 3 +-
.../apache/lucene/search/ConjunctionScorer.java | 4 +-
.../apache/lucene/search/TestConjunctions.java | 56 +-
.../lucene/search/TestIntRangeFieldQueries.java | 2 +-
lucene/ivy-versions.properties | 6 +-
.../lucene/document/LatLonBoundingBox.java | 231 +++++++
.../org/apache/lucene/document/LatLonPoint.java | 3 +-
.../search/TestLatLonBoundingBoxQueries.java | 299 ++++++++
lucene/site/xsl/index.xsl | 2 +-
lucene/spatial-extras/build.xml | 9 +
.../spatial/spatial4j/Geo3dBinaryCodec.java | 130 ++++
.../spatial/spatial4j/Geo3dCircleShape.java | 82 +++
.../spatial4j/Geo3dDistanceCalculator.java | 154 +++++
.../spatial/spatial4j/Geo3dPointShape.java | 78 +++
.../spatial/spatial4j/Geo3dRectangleShape.java | 163 +++++
.../lucene/spatial/spatial4j/Geo3dShape.java | 164 ++---
.../spatial/spatial4j/Geo3dShapeFactory.java | 396 +++++++++++
.../spatial4j/Geo3dSpatialContextFactory.java | 94 +++
.../apache/lucene/spatial/SpatialArgsTest.java | 12 +-
.../lucene/spatial/spatial4j/Geo3dRptTest.java | 193 ++----
.../Geo3dShapeRectRelationTestCase.java | 20 +-
.../Geo3dShapeSphereModelRectRelationTest.java | 29 +-
.../Geo3dShapeWGS84ModelRectRelationTest.java | 21 +
.../suggest/analyzing/AnalyzingSuggester.java | 6 +-
.../analyzing/AnalyzingSuggesterTest.java | 60 ++
.../java/org/apache/lucene/geo/GeoTestUtil.java | 5 +
.../search/BaseRangeFieldQueryTestCase.java | 10 +-
solr/CHANGES.txt | 10 +
.../apache/solr/ltr/model/LTRScoringModel.java | 4 +-
.../org/apache/solr/ltr/TestRerankBase.java | 12 +-
.../org/apache/solr/cloud/DeleteShardCmd.java | 1 +
.../org/apache/solr/cloud/DistributedQueue.java | 481 -------------
.../java/org/apache/solr/cloud/Overseer.java | 28 +-
.../cloud/OverseerCollectionMessageHandler.java | 11 +-
.../apache/solr/cloud/OverseerTaskQueue.java | 4 +-
.../java/org/apache/solr/cloud/RestoreCmd.java | 1 +
.../org/apache/solr/cloud/SplitShardCmd.java | 1 +
.../org/apache/solr/cloud/ZkController.java | 4 +-
.../apache/solr/cloud/ZkDistributedQueue.java | 489 +++++++++++++
.../org/apache/solr/handler/StreamHandler.java | 2 +
.../org/apache/solr/response/DocsStreamer.java | 87 +--
.../solr/response/RetrieveFieldsOptimizer.java | 130 ++++
.../apache/solr/search/SolrDocumentFetcher.java | 25 +-
.../facet/FacetFieldProcessorByHashDV.java | 11 +-
.../org/apache/solr/search/facet/HLLAgg.java | 1 +
.../org/apache/solr/search/facet/UniqueAgg.java | 1 +
.../solr/search/join/GraphPointsCollector.java | 1 +
.../ClassificationUpdateProcessorParams.java | 2 +-
.../processor/DistributedUpdateProcessor.java | 2 +-
.../processor/UpdateRequestProcessor.java | 1 +
.../org/apache/solr/cloud/DeleteShardTest.java | 4 +-
.../apache/solr/cloud/DistributedQueueTest.java | 15 +-
.../org/apache/solr/cloud/ForceLeaderTest.java | 4 +-
.../apache/solr/cloud/MultiThreadedOCPTest.java | 5 +-
.../org/apache/solr/cloud/OverseerTest.java | 22 +-
.../cloud/TestCloudJSONFacetJoinDomain.java | 75 +-
.../cloud/TestRandomRequestDistribution.java | 2 +-
.../response/TestRetrieveFieldsOptimizer.java | 56 ++
.../solr/search/facet/TestJsonFacets.java | 26 +
.../asciidoctor-ant-1.6.0-alpha.3.jar.sha1 | 1 -
.../asciidoctor-ant-1.6.0-alpha.5.jar.sha1 | 1 +
.../conf/solrconfig.xml | 1 -
solr/solr-ref-guide/src/blob-store-api.adoc | 5 +-
solr/solr-ref-guide/src/errata.adoc | 4 +-
.../src/major-changes-in-solr-7.adoc | 4 +-
solr/solr-ref-guide/src/metrics-reporting.adoc | 21 +-
.../src/performance-statistics-reference.adoc | 160 +++--
...rcloud-query-routing-and-read-tolerance.adoc | 3 +-
.../src/statistical-programming.adoc | 690 +++++++++++++++++++
solr/solr-ref-guide/src/stream-evaluators.adoc | 516 +++++++++++++-
.../src/streaming-expressions.adoc | 3 +-
.../solr-ref-guide/src/using-jmx-with-solr.adoc | 70 +-
.../solrj/io/eval/FactorialEvaluator.java | 54 ++
.../solrj/io/eval/MovingMedianEvaluator.java | 68 ++
.../solr/client/solrj/io/stream/LetStream.java | 27 +-
.../solr/common/cloud/DistributedQueue.java | 41 ++
.../solrj/io/stream/StreamExpressionTest.java | 32 +-
80 files changed, 4461 insertions(+), 1012 deletions(-)
----------------------------------------------------------------------