Thanks for taking a look. Filed here: https://github.com/elasticsearch/elasticsearch/issues/5968
One more thing that doesn't seem to work, but I'm not sure there was an expectation that it would: usually the direction (whether points are listed clockwise or counter-clockwise) matters, since that's how you can tell what part is the inside of the polygon (at least that's how WKT does it). Skimming through the code surrounding pointInPolygon() I couldn't see a spot where that's factored in. Let me know if you want a separate issue filed for that as well. On Monday, April 28, 2014 6:40:46 PM UTC-7, Alexander Reelsen wrote: > > Hey there, > > please file a github issue for this one, to make sure it does not get lost > (havent checked the details, but looks like a valid bug from my birds eye > view). Thanks a lot! > > > --Alex > > > On Mon, Apr 28, 2014 at 7:41 PM, Pablo Castro <[email protected]<javascript:> > > wrote: > >> 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] <javascript:>. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/elasticsearch/598de712-4e0c-405d-9575-52216bbb8692%40googlegroups.com<https://groups.google.com/d/msgid/elasticsearch/598de712-4e0c-405d-9575-52216bbb8692%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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/62a8c832-682d-4d8a-8631-03b539d646df%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
