Liuvenas
Liuvenas

Reputation: 1

Pydeck ScatterplotLayer in Streamlit Maps All Points are set to (0,0) Even with Valid Coordinates

Description

I'm working with a Pydeck ScatterplotLayer in Streamlit to display geographic points on a map. However, all points are being plotted at the coordinate (0, 0) (latitude 0, longitude 0), even though my data contains valid latitude and longitude values.

Here’s a brief outline of my setup:

Code:

from pprint import pprint

import numpy as np

import streamlit as st
import pandas as pd
import pydeck as pdk

# Load the dataset
file_path = 'maps/data/processed/locations.proc.tsv'
data = pd.read_csv(file_path, sep='\t')


# Only select necessary columns and ensure they are Arrow-compatible
valid_data = data.dropna(subset=['Multi-site institution - Latitude', 'Multi-site institution - Longitude'])
valid_data['Institution Name'] = valid_data['Institution Name'].astype(str)
valid_data['Multi-site institution - Latitude'] = pd.to_numeric(valid_data['Multi-site institution - Latitude'], errors='coerce')
valid_data['Multi-site institution - Longitude'] = pd.to_numeric(valid_data['Multi-site institution - Longitude'], errors='coerce')

# Prepare the cleaned data for Pydeck
map_data = valid_data[['Institution Name', 'Multi-site institution - Latitude', 'Multi-site institution - Longitude']].dropna()

# Convert DataFrame to list of dicts for pydeck
map_data.loc[:,"coordinates"]= map_data['Multi-site institution - Latitude'].astype(str) +","+ map_data['Multi-site institution - Longitude'].astype(str)


# Create pydeck Deck object
view_state = pdk.ViewState(
    latitude=map_data['Multi-site institution - Latitude'].mean(),
    longitude=map_data['Multi-site institution - Longitude'].mean(),
    zoom=5,
    pitch=40
)

st.write(map_data)

# Render the map with pydeck
layer=pdk.Layer(
        'ScatterplotLayer',
        data=map_data,
        # get_position="[Multi-site institution - Latitude, Multi-site institution - Longitude]",
        get_position=[map_data.columns[-2],map_data.columns[-3]],
        get_radius=5000,
        get_fill_color=[255, 0, 0],  # Red points for visibility
        pickable=True,
        auto_highlight=True
    )
r = pdk.Deck(
    layers=[
        layer
    ],
    initial_view_state=view_state,
    tooltip={
        "html": "<b>{Institution Name}</b>",
        "style": {"backgroundColor": "steelblue", "color": "white"}
    }
)
r.to_html("smth.html")
st.pydeck_chart(r)

Issue:

Has anyone faced a similar issue with pydeck setting all coordinates to zero? Any advice or troubleshooting steps would be appreciated. I am going to shoot my self with a door knob...

Data (tsv):

Foundation year Institution Name    Institutional website   Multi-site institution - City   Multi-site institution - Latitude   Multi-site institution - Longitude
1457    Albert-Ludwigs-Universität Freiburg http://www.uni-freiburg.de/ Freiburg im Breisgau    47.993544   7.84595
1386    Ruprecht-Karls-Universität Heidelberg   http://www.uni-heidelberg.de/   Heidelberg  49.411282   8.706172
1818    Universität Hohenheim   http://www.uni-hohenheim.de Stuttgart   48.711712   9.211786

Upvotes: 0

Views: 66

Answers (0)

Related Questions