From 5315a69c00f01481e26817e1e093daf0866a0116 Mon Sep 17 00:00:00 2001 From: ebuckley Date: Wed, 3 Oct 2018 14:51:33 +1300 Subject: [PATCH] support queries across anti-meridian line - the envelope query would have values above 180, which is not valid CQL --- ckanext/spatial/plugin.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/ckanext/spatial/plugin.py b/ckanext/spatial/plugin.py index e2d73df3..78777905 100644 --- a/ckanext/spatial/plugin.py +++ b/ckanext/spatial/plugin.py @@ -317,6 +317,9 @@ def _params_for_solr_spatial_field_search(self, bbox, search_params): +spatial_geom:"Intersects(ENVELOPE({minx}, {miny}, {maxx}, {maxy})) ''' + if bbox['maxx'] > 180: + bbox['maxx'] = -180 + (bbox['maxx'] - 180) + search_params['fq_list'] = search_params.get('fq_list', []) search_params['fq_list'].append('+spatial_geom:"Intersects(ENVELOPE({minx}, {maxx}, {maxy}, {miny}))"' .format(minx=bbox['minx'], miny=bbox['miny'], maxx=bbox['maxx'], maxy=bbox['maxy']))