-
-
Notifications
You must be signed in to change notification settings - Fork 2.8k
Fix GeoPandas dataset compatibility for naturalearth_cities #5420
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix GeoPandas dataset compatibility for naturalearth_cities #5420
Conversation
Update documentation examples to work with both GeoPandas < 1.0 and >= 1.0. The old gpd.datasets.get_path() method was removed in GeoPandas 1.0. This fix: - Tries the old method first (for backward compatibility) - Falls back to geodatasets package for GeoPandas >= 1.0 - Includes a URL fallback if geodatasets is not available Fixes plotly#4778
...DataFrame\n\nRemoves URL fallback to prevent CI build failures in restricted environments.\nKeeps compatibility with GeoPandas <1.0 and >=1.0, and avoids extra deps.
Thanks for the PR! We'll try to review this as we have time. This seems to be related to #4782.
@LiamConnors
LiamConnors
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the PR! I have added a few comments. Let me know if you have any questions.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This dataset doesn't currently exist on geodatasets, so this will never be successful even with geopandas >=1.0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As 'naturalearth.cities' does not exist on geodatasets, I think the best thing to do here would be to have just the example of the dataframe created using GeoDataFrame, like you show in the except block, but with some real cities.
So something like
import plotly.express as px import geopandas as gpd from shapely.geometry import Point geo_df = gpd.GeoDataFrame({ 'name': ['London', 'Paris', 'Berlin', 'Madrid', 'Rome'], 'geometry': [ Point(-0.13, 51.51), Point(2.35, 48.86), Point(13.41, 52.52), Point(-3.70, 40.42), Point(12.50, 41.90), ] }, crs="EPSG:4326") fig = px.scatter_map(geo_df, lat=geo_df.geometry.y, lon=geo_df.geometry.x, hover_name="name", zoom=3) fig.show()
And something similar for the scatter-plots-on-maps example
emilykl
commented
Nov 24, 2025
@LiamConnors Any reason not to simply require geopandas>=1.0? I'm not sure if we need to provide examples for both old and new geopandas.
LiamConnors
commented
Nov 25, 2025
@LiamConnors Any reason not to simply require
geopandas>=1.0? I'm not sure if we need to provide examples for both old and new geopandas.
I agree. It doesn't need to be compatible with old geopandas. Instead of having an example that creates theGeoDataFrame in the code, it would also be fine to just use one of the available datasets in geodatasets even if that won't work with earlier versions of geopandas.
Uh oh!
There was an error while loading. Please reload this page.
Closes #5289
Update documentation examples to support both GeoPandas < 1.0 and >= 1.0.
Context: GeoPandas 1.0 removed the datasets accessor used in
gpd.datasets.get_path("naturalearth_cities").Changes:
geodatasetspackage for GeoPandas >= 1.0geodatasetsis not availableFiles updated:
Docs-only change.