Using Elasticsearch 1.1.1. I'm seeing geo_polygon behave oddly when the 
input polygon cross the date line. From a quick look at 
GeoPolygonFilter.GeoPolygonDocSet.pointInPolygon it doesn't seem that this 
is explicitly handled. 

The reproduce this create an index/mapping as:

POST /geo

{ "mappings": { "docs": { "properties": { "p": { "type": "geo_point" } } } 
} }

Upload a document:

PUT /geo/docs/1

{ "p": { "lat": 40, "lon": 179 } }

Search with a polygon that's a box around the uploaded point and that 
crosses the date line:

POST /geo/docs/_search

{
  "filter": { "geo_polygon": { "p": { "points": [
      { "lat": 42, "lon": 178 },
      { "lat": 39, "lon": 178 },
      { "lat": 39, "lon": -179 },
      { "lat": 42, "lon": -179 },
      { "lat": 42, "lon": 178 }
  ] } } }
}

ES returns 0 results. If I use a polygon that stays to the west of the date 
line I do get results:

{
  "filter": { "geo_polygon": { "p": { "points": [
      { "lat": 42, "lon": 178 },
      { "lat": 39, "lon": 178 },
      { "lat": 39, "lon": 179.5 },
      { "lat": 42, "lon": 179.5 },
      { "lat": 42, "lon": 178 }
  ] } } }
}

Also, if I use a bounding box query with the same coordinates as the 
initial polygon, it does work:

{
  "filter": { "geo_bounding_box": { "p": 
    { "top_left": { "lat": 42, "lon": 178 },
       "bottom_right": { "lat": 39, "lon": -179 }
     }
  } }
}

It seems that this code needs to either split the check into east and west 
checks or normalize the input values. Am I missing something? 

Thanks
-pablo

-- 
You received this message because you are subscribed to the Google Groups 
"elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elasticsearch/598de712-4e0c-405d-9575-52216bbb8692%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to