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(-)
----------------------------------------------------------------------