import pydeck as pdk import pandas as pd import geopandas as gpd def hexagon_map(data_url, path_save): # print('LEÍDO CON PANDAS') # df = pd.read_json(data_url) # bounding_box = df.total_bounds # print('El bounding box es: ', bounding_box) print('------------------------------------------------------------------------------------') print('LEÍDO CON GEOPANDAS') df = gpd.read_file(data_url) df = df[df['npuntos'] != 0] df.reset_index(drop=True, inplace=True) max_npuntos = df['npuntos'].max() bounding_box = df.total_bounds print('El bounding box es: ', bounding_box) # El bounding box total es una tupla con las coordenadas (minx, miny, maxx, maxy) x_array = [bounding_box[0], bounding_box[2]] y_array = [bounding_box[1], bounding_box[3]] # y_array = [bounding_box[0], bounding_box[2]] # x_array = [bounding_box[1], bounding_box[3]] x_min = min(x_array) x_max = max(x_array) y_min = min(y_array) y_max = max(y_array) # Define a layer to display on a map layer = pdk.Layer( "H3HexagonLayer", df, pickable=True, stroked=True, filled=True, extruded=True, get_elevation="npuntos*10", get_hexagon="index", get_fill_color=f"[255, 255-(npuntos*255/{max_npuntos}), 255-(npuntos*255/{max_npuntos}), 180]", get_line_color=[0, 0, 0], line_width_min_pixels=5 ) # Set the viewport location view_state = pdk.ViewState(latitude=((y_min+y_max)/2), longitude=((x_min+x_max)/2), zoom=10, bearing=0, pitch=30) # Render r = pdk.Deck(layers=[layer], initial_view_state=view_state, tooltip={"text": "Count: {npuntos}"}) r.to_html(path_save) return path_save hexagon_map('https://sd1.d3.ipsilum.com/files_uploaded/hexagons8.geojson', '/home/data3/master_folder/htmls/hexagonos8_prueba.html') #hexagon_map('https://sd1.d24.ipsilum.com/0_PYTHON/H3/gpd_hexagons12.geojson', '/home/data3/master_folder/htmls/hexagonos12.html')