hackathon / geospatial_analyzer.py
Ashar086's picture
Create geospatial_analyzer.py
ce86e4b verified
raw
history blame
2.14 kB
import streamlit as st
import pandas as pd
import plotly.express as px
class GeospatialAnalyzer:
def analyze_geospatial_data(self, df):
lat_columns = [col for col in df.columns if 'lat' in col.lower()]
lon_columns = [col for col in df.columns if 'lon' in col.lower()]
if len(lat_columns) > 0 and len(lon_columns) > 0:
lat_column = st.selectbox("Select latitude column", lat_columns)
lon_column = st.selectbox("Select longitude column", lon_columns)
map_type = st.selectbox("Select map type", ["Scatter Mapbox", "Density Mapbox"])
if map_type == "Scatter Mapbox":
self.create_scatter_mapbox(df, lat_column, lon_column)
elif map_type == "Density Mapbox":
self.create_density_mapbox(df, lat_column, lon_column)
else:
st.write("No latitude and longitude columns found in the dataset.")
def create_scatter_mapbox(self, df, lat_column, lon_column):
st.subheader("Scatter Mapbox")
color_column = st.selectbox("Select color column (optional)", ["None"] + df.columns.tolist())
size_column = st.selectbox("Select size column (optional)", ["None"] + df.columns.tolist())
fig = px.scatter_mapbox(df,
lat=lat_column,
lon=lon_column,
color=None if color_column == "None" else color_column,
size=None if size_column == "None" else size_column,
zoom=3)
fig.update_layout(mapbox_style="open-street-map")
st.plotly_chart(fig)
def create_density_mapbox(self, df, lat_column, lon_column):
st.subheader("Density Mapbox")
fig = px.density_mapbox(df,
lat=lat_column,
lon=lon_column,
zoom=3,
radius=10)
fig.update_layout(mapbox_style="open-street-map")
st.plotly_chart(fig)