예제 #1
0
def convert(response, category_formatter=str):
    """

    :param response:
    :return:
    """
    if hasattr(response.aggregations, "categories"):
        for category in response.aggregations.categories:
            for bucket in category.grids:
                x, y = lnglat_to_meters(bucket.centroid.location.lon,
                                        bucket.centroid.location.lat)
                yield {
                    "lon": bucket.centroid.location.lon,
                    "lat": bucket.centroid.location.lat,
                    "x": x,
                    "y": y,
                    "c": bucket.centroid.count,
                    "t": category_formatter(category.key),
                }
    else:
        for bucket in response.aggregations.grids:
            lon = bucket.centroid.location.lon
            lat = bucket.centroid.location.lat
            x, y = lnglat_to_meters(lon, lat)
            yield {
                "lon": lon,
                "lat": lat,
                "x": x,
                "y": y,
                "c": bucket.centroid.count
            }
 def project_to_meters(self, df, x, y):
     try:
         df.loc[:, "x_meters"], df.loc[:, "y_meters"] = lnglat_to_meters(
             df[x], df[y])
         geometry = [Point(xy) for xy in zip(df.x_meters, df.y_meters)]
         web_merc = {"init": "epsg:3857"}
         return gpd.GeoDataFrame(df, crs=web_merc, geometry=geometry)
     except:
         print(
             """Could not project specified coordinate fields to meters. Make sure the X Field and Y Field
               values have been set correctly.\n""")
예제 #3
0
def convert_composite(response, categorical, filter_buckets,
                      histogram_interval, category_type, category_format):
    if categorical and filter_buckets == False:
        # Convert a regular terms aggregation
        for bucket in response:
            for category in bucket.categories:
                lon, lat = geotile_bucket_to_lonlat(bucket)
                x, y = lnglat_to_meters(lon, lat)

                raw = category.key
                # Bin the data
                if histogram_interval is not None:
                    # Format with pynumeral if provided
                    if category_format:
                        label = "%s-%s" % (
                            pynumeral.format(float(raw), category_format),
                            pynumeral.format(
                                float(raw) + histogram_interval,
                                category_format),
                        )
                    else:
                        label = "%s-%s" % (float(raw),
                                           float(raw) + histogram_interval)
                else:
                    if category_type == "number":
                        try:
                            label = pynumeral.format(to_32bit_float(raw),
                                                     category_format)
                        except ValueError:
                            label = str(raw)
                    else:
                        label = str(raw)
                yield {
                    "lon": lon,
                    "lat": lat,
                    "x": x,
                    "y": y,
                    "c": category.doc_count,
                    "t": label,
                }
    elif categorical and filter_buckets == True:
        # Convert a filter bucket aggregation
        for bucket in response:
            for key in bucket.categories.buckets:
                category = bucket.categories.buckets[key]
                if category.doc_count > 0:
                    lon, lat = geotile_bucket_to_lonlat(bucket)
                    x, y = lnglat_to_meters(lon, lat)

                    if category_type == "number":
                        try:
                            label = pynumeral.format(to_32bit_float(key),
                                                     category_format)
                        except ValueError:
                            label = str(key)
                    else:
                        label = str(key)

                    yield {
                        "lon": lon,
                        "lat": lat,
                        "x": x,
                        "y": y,
                        "c": category.doc_count,
                        "t": label,
                    }
    else:
        # Non-categorical
        for bucket in response:
            lon, lat = geotile_bucket_to_lonlat(bucket)
            x, y = lnglat_to_meters(lon, lat)
            yield {
                "lon": lon,
                "lat": lat,
                "x": x,
                "y": y,
                "c": bucket.doc_count
            }
예제 #4
0
def transform_coords(df):
    df = df.copy()
    df.loc[:, 'longitude'], df.loc[:, 'latitude'] = \
        du.lnglat_to_meters(df.longitude,df.latitude)
    return df
예제 #5
0
def to_meters(row):
    return lnglat_to_meters(row["LON"], row["LAT"])
export = partial(export_image, background=background, export_path="export")
#cm = partial(colormap_select, reverse=(background!="black"))
cm = partial(colormap_select, reverse=(background != "black"))

display(HTML("<style>.container {width:100%} !important; }</style>"))

cvs = ds.Canvas(plot_width, plot_height, *FFM)
agg = cvs.points(new_df, 'RECHTSWERT', 'HOCHWERT')

export(tf.shade(agg, cmap=cm(fire, 0.4), how='log'),
       "Frankfurt_Baumbestand_nach_2000")

# In[17]:

from datashader.utils import lnglat_to_meters
df.loc[:, 'lon'], df.loc[:, 'lat'] = lnglat_to_meters(df.lon, df.lat)

# In[12]:

import holoviews as hv
from holoviews.element.tiles import EsriImagery
from holoviews.operation.datashader import datashade
#from datashader.utils import lnglat_to_meters
hv.extension('bokeh')
from colorcet import fire

#df.loc[:, 'lon'], df.loc[:, 'lat'] = lnglat_to_meters(df.lon,df.lat)
map_tiles = EsriImagery().opts(alpha=0.5,
                               width=900,
                               height=600,
                               bgcolor='black')