[ 
https://issues.apache.org/jira/browse/LUCENENET-431?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13060571#comment-13060571
 ] 

Digy commented on LUCENENET-431:
--------------------------------

Hi Olle,

{code}
        static double TransformLat(double lat)
        {
            var PI = 3.14159265358979323846;
            return (Math.Atan(Math.Exp((lat * 180 / 20037508.34) / 180 * PI)) / 
PI * 360 - 90) * 100000;
        }


        static double TransformLon(double lon)
        {
            return (lon * 180 / 20037508.34) * 100000;
        }

....

private double _lat = TransformLat(55.6880508001);
private double _lng = TransformLon(13.5871808352); // This passes: 13.6271808352

....

     private void AddData(IndexWriter writer)
        {
            AddPoint(writer, "Within radius", TransformLat(55.6880508001), 
TransformLon(13.5717346673));
            AddPoint(writer, "Within radius", TransformLat(55.6821978456), 
TransformLon(13.6076183965));
            AddPoint(writer, "Within radius", TransformLat(55.673251569), 
TransformLon(13.5946697607));
            AddPoint(writer, "Close but not in radius", 
TransformLat(55.8634157297), TransformLon(13.5497731987));
            AddPoint(writer, "Faar away", TransformLat(40.7137578228), 
TransformLon(-74.0126901936));

            writer.Commit();
            writer.Close();
        }
{code}

When I change your code as above, it seems to work(According to above functions 
yours 4th point should be 11 miles away).

If this works for all your cases, we can think of a patch for Spatial.Net.
(Don't ask what these two functions do, since I found them somewhere in 
OpenLayers project :) )
Maybe someone can explain these "projection" issues(if this really is the case).

DIGY



> Spatial.Net Cartesian won't find docs in radius in certain cases
> ----------------------------------------------------------------
>
>                 Key: LUCENENET-431
>                 URL: https://issues.apache.org/jira/browse/LUCENENET-431
>             Project: Lucene.Net
>          Issue Type: Bug
>          Components: Lucene.Net Contrib
>    Affects Versions: Lucene.Net 2.9.4
>         Environment: Windows 7 x64
>            Reporter: Olle Jacobsen
>              Labels: spatialsearch
>
> To replicate change Lucene.Net.Contrib.Spatial.Test.TestCartesian to the 
> following witch should return 3 results.
> Line
> 42: private double _lat = 55.6880508001;
> 43: private double _lng = 13.5871808352; // This passes: 13.6271808352
> 73: AddPoint(writer, "Within radius", 55.6880508001, 13.5717346673);
> 74: AddPoint(writer, "Within radius", 55.6821978456, 13.6076183965);
> 75: AddPoint(writer, "Within radius", 55.673251569, 13.5946697607);
> 76: AddPoint(writer, "Close but not in radius", 55.8634157297, 13.5497731987);
> 77: AddPoint(writer, "Faar away", 40.7137578228, -74.0126901936);
> 130: const double miles = 5.0;
> 156: Console.WriteLine("Distances should be 3 " + distances.Count);
> 157: Console.WriteLine("Results should be 3 " + results);
> 159: Assert.AreEqual(3, distances.Count); // fixed a store of only needed 
> distances
> 160: Assert.AreEqual(3, results);

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to