def determine_geo()

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