首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用X,Y和弦在Geopandas的绘图中添加一个基图

使用X,Y和弦在Geopandas的绘图中添加一个基图
EN

Stack Overflow用户
提问于 2022-10-19 18:03:06
回答 2查看 42关注 0票数 0

我在地图上添加一个基本地图有困难。我的地理数据是用X和Y的一串点的和弦来创建的。

代码语言:javascript
复制
gdf = geo.GeoDataFrame(
df, geometry=gpd.points_from_xy(df['X'], df['Y']))

gdf.set_crs(epsg=3857)

看起来像这样:

在使用上下文获取基本地图之后,我无法正确地显示基本地图。和弦应该显示密西西比河流域的底部。

代码语言:javascript
复制
ax = gdf.plot(color="red", figsize=(9, 9))
cx.add_basemap(ax, zoom=0, crs= gdf.crs)

如果我的代码有什么问题,请告诉我,为什么它没有出现。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2022-10-19 18:31:45

看起来您的数据位于WGS84 84/EPSG:4326(即lat/lon)坐标中。所以我认为你把geopandas.GeoDataFrame.set_crsgeopandas.GeoDataFrame.to_crs混淆了,它告诉地质公园数据的CRS是什么,而geopandas.GeoDataFrame.to_crs则把数据从当前的CRS转换成你指定的新的CRS。另外,请注意,在默认情况下,这些操作都不是就地的。所以我觉得你想:

代码语言:javascript
复制
gdf = geo.GeoDataFrame(
    df, geometry=gpd.points_from_xy(df['X'], df['Y'])
)

gdf = gdf.set_crs("epsg:4326")

gdf_mercator = gdf.to_crs("epsg:3857")
票数 0
EN

Stack Overflow用户

发布于 2022-10-19 18:40:44

这和迈克尔·德尔加多的回答是一样的。在GeoDataFrame构建时声明CRS比较简单。还要确保您使用的是正确的CRS。

米维

代码语言:javascript
复制
import geopandas as gpd
import geopandas as geo
import pandas as pd
import contextily as cx

# construct a dataframe with X and Y of some points in US
places = gpd.read_file(
    gpd.datasets.get_path("naturalearth_cities"),
    mask=gpd.read_file(gpd.datasets.get_path("naturalearth_lowres")).loc[
        lambda d: d["iso_a3"].eq("USA")
    ],
)
df = pd.DataFrame({"X": places.geometry.x, "Y": places.geometry.y})

# user code, state CRS at construction time
gdf = geo.GeoDataFrame(
    df, geometry=gpd.points_from_xy(df["X"], df["Y"]), crs="epsg:4326"
)
ax = gdf.plot(color="red", figsize=(9, 9))
cx.add_basemap(ax, zoom=0, crs=gdf.crs)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74129976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档