in granule_ingester/granule_ingester/writers/ElasticsearchStore.py [0:0]
def determine_geo(cls, bbox: TileSummary.BBox) -> str:
lat_min = cls._format_latlon_string(bbox.lat_min)
lat_max = cls._format_latlon_string(bbox.lat_max)
lon_min = cls._format_latlon_string(bbox.lon_min)
lon_max = cls._format_latlon_string(bbox.lon_max)
# If lat min = lat max and lon min = lon max, index the 'geo' bounding box as a POINT instead of a POLYGON
if lat_min == lat_max and lon_min == lon_max:
geo = 'POINT({} {})'.format(lon_min, lat_min)
# If lat min = lat max but lon min != lon max, or lon min = lon max but lat min != lat max, then we essentially have a line.
elif lat_min == lat_max or lon_min == lon_max:
geo = 'LINESTRING({} {}, {} {})'.format(lon_min, lat_min, lon_max, lat_min)
# All other cases should use POLYGON
else:
geo = 'POLYGON(({} {}, {} {}, {} {}, {} {}, {} {}))'.format(lon_min, lat_min,
lon_max, lat_min,
lon_max, lat_max,
lon_min, lat_max,
lon_min, lat_min)
return geo