You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Bill Bell (JIRA)" <ji...@apache.org> on 2009/09/11 06:03:58 UTC

[jira] Issue Comment Edited: (LUCENE-1781) Large distances in Spatial go beyond Prime MEridian

    [ https://issues.apache.org/jira/browse/LUCENE-1781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12753956#action_12753956 ] 

Bill Bell edited comment on LUCENE-1781 at 9/10/09 9:03 PM:
------------------------------------------------------------

Not exactly.

testPrimeM() should be fixed by the new LLRect.java. It goes over 90 degrees, and LLRect.java pole flips. If this is not working with the new LLRect, there is something wrong with that.

testAntiM() creates a case that should fail. This condition needs to be fixed. The case is: You are located in Hawaii and you should see:

Marshall Island Airfield",7.06, 171.2
Midway Island",25.7, -171.7

It only shows the Midway Island, since it is still in the same hemisphere (it did not go from -171 to 171 (the Anti-Meridien), This case also errors since the upper right is also going over the pole. So it also is testing testPrimeM(). If we reduce the miles to 3500 it tests only these 2 points. Since it does not show Marshall Island, the Local Lucene is not working right. Once this case works people we can release it.

Here are my thoughts on a fix:

LLRect does calculate the right box across anti-meridien. The issue is elsewhere. Either we have multiple boxes, or check.

    [junit] boxCorners: ur 43.242262719615994,-123.073340742054
    [junit] boxCorners: cnt 21.6032207,-158.0
    [junit] boxCorners: ll -5.189678558944157,177.24228397256368




      was (Author: billnbell):
    Not exactly.

testPrimeM() should be fixed by the new LLRect.java. It goes over 90 degrees, and LLRect.java pole flips. If this is not working with the new LLRect, there is something wrong with that.

testAntiM() creates a case that should fail. This condition needs to be fixed. The case is: You are located in Hawaii and you should see:

Marshall Island Airfield",7.06, 171.2
Midway Island",25.7, -171.7

It only shows the Midway Island, since it is still in the same hemisphere (it did not go from -171 to 171 (the Anti-Meridien), This case also errors since the upper right is also going over the pole. So it also is testing testPrimeM(). If we reduce the miles to 3500 it tests only these 2 points. Since it does not show Marshall Island, the Local Lucene is not working right. Once this case works people we can release it.

Here are my thoughts on a fix:

We need to get the ll to work across 180 degree point. It currently uses a straight compare, but this also needs to flip for example:  -179 + 2 = 179 longitude.



  
> Large distances in Spatial go beyond Prime MEridian
> ---------------------------------------------------
>
>                 Key: LUCENE-1781
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1781
>             Project: Lucene - Java
>          Issue Type: Bug
>          Components: contrib/spatial
>    Affects Versions: 2.9
>         Environment: All
>            Reporter: Bill Bell
>            Assignee: Michael McCandless
>             Fix For: 3.1
>
>         Attachments: LLRect.java, LLRect.java, LUCENE-1781.patch, LUCENE-1781.patch, TestCartesian.java, TestCases.diff
>
>
> http://amidev.kaango.com/solr/core0/select?fl=*&json.nl=map&wt=json&radius=5000&rows=20&lat=39.5500507&q=honda&qt=geo&long=-105.7820674
> Get an error when using Solr when distance is calculated for the boundary box past 90 degrees.
> Aug 4, 2009 1:54:00 PM org.apache.solr.common.SolrException log
> SEVERE: java.lang.IllegalArgumentException: Illegal lattitude value 93.1558669413734
>         at org.apache.lucene.spatial.geometry.FloatLatLng.<init>(FloatLatLng.java:26)
>         at org.apache.lucene.spatial.geometry.shape.LLRect.createBox(LLRect.java:93)
>         at org.apache.lucene.spatial.tier.DistanceUtils.getBoundary(DistanceUtils.java:50)
>         at org.apache.lucene.spatial.tier.CartesianPolyFilterBuilder.getBoxShape(CartesianPolyFilterBuilder.java:47)
>         at org.apache.lucene.spatial.tier.CartesianPolyFilterBuilder.getBoundingArea(CartesianPolyFilterBuilder.java:109)
>         at org.apache.lucene.spatial.tier.DistanceQueryBuilder.<init>(DistanceQueryBuilder.java:61)
>         at com.pjaol.search.solr.component.LocalSolrQueryComponent.prepare(LocalSolrQueryComponent.java:151)
>         at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:174)
>         at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
>         at org.apache.solr.core.SolrCore.execute(SolrCore.java:1328)
>         at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:341)
>         at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:244)
>         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
>         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
>         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
>         at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:857)
>         at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:565)
>         at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1509)
>         at java.lang.Thread.run(Thread.java:619)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org