def summarizeMap(mapDataFrame):
latlon = mapDataFrame[['meta_latitude','meta_longitude']]
latlon = latlon[pd.notnull(latlon['meta_latitude'])]
latlon = latlon[pd.notnull(latlon['meta_longitude'])]
minLat = np.amin(latlon['meta_latitude'])
maxLat = np.amax(latlon['meta_latitude'])
minLon = np.amin(latlon['meta_longitude'])
maxLon = np.amax(latlon['meta_longitude'])
if len(latlon) > 1:
latlon_map = np.histogram2d(x=latlon['meta_longitude'],y=latlon['meta_latitude'],bins=[36,18], range=[[minLon, maxLon], [minLat, maxLat]])
else:
latlon_map = np.histogram2d(x=[],y=[],bins=[36,18], range=[[-180, 180], [-90, 90]])
#define latlon map color bin info
percentiles, countRanges, fillColors = getMapBins(latlon_map[0], num_bins=10)
# range should be flexible to rules in DatasetSearchSummary
# latlon_map[0] is the lonxlat (XxY) array of counts; latlon_map[1] is the nx/lon bin starts; map[2] ny/lat bin starts
lonstepsize = (latlon_map[1][1]-latlon_map[1][0])/2
latstepsize = (latlon_map[2][1]-latlon_map[2][0])/2
maxMapCount = np.amax(latlon_map[0])
map_data = []
for lon_ix,lonbin in enumerate(latlon_map[0]):
for lat_ix,latbin in enumerate(lonbin):
#[latlon_map[2][ix]+latstepsize for ix,latbin in enumerate(latlon_map[0][0])]
lat = latlon_map[2][lat_ix]+latstepsize
lon = latlon_map[1][lon_ix]+lonstepsize
value = latbin
buffer=0.0001
#left-bottom, left-top, right-top, right-bottom, left-bottom
polygon = [[lon-lonstepsize+buffer,lat-latstepsize+buffer], [lon-lonstepsize+buffer,lat+latstepsize-buffer], [lon+lonstepsize-buffer,lat+latstepsize-buffer], [lon+lonstepsize-buffer,lat-latstepsize+buffer], [lon-lonstepsize,lat-latstepsize]]
bin_ix = np.amax(np.argwhere(np.array(percentiles)<=sp.percentileofscore(latlon_map[0].flatten(), value)))
fillColor = fillColors[bin_ix]
map_data.append({"lat":lat,"lon":lon,"count":value,"polygon":polygon, "fillColor":fillColor})
map_legend_info = {"ranges":countRanges, "fills":fillColors}
return (map_data,map_legend_info)
# Query Construction Helpers / Data Retrieval
# Based on a rule (field name, comparator and value), add a filter to a query object
# TODO add some better documentation here on what each type is
评论列表
文章目录