这是我的代码:
import pandas as pd
import geoplot as gplt
import geopandas as gpd
import geoplot.crs as gcrs
import contextily
df = pd.read_csv('dataframe_master.csv', index_col='id')
crs = {'init': 'epsg:4326'}
geometry = [geometry.Point(xy) for xy in zip(df['latitude'], df['longitude'])]
df_geo = gpd.GeoDataFrame(df_geo, crs=crs, geometry=geometry)
test = df_geo[:200000]
test = test.to_crs(epsg=3857)
ax = test.plot(marker='o', markersize=1)
contextily.add_basemap(ax)
plt.show()它生成了这个图像:image,它没有显示背景图,看起来有点扭曲。
我的坐标数据最初是用RD坐标标准(EPSG:28992)制作的,我用以下代码将其转换为EPSG:4326:
lon_l = []
lat_l = []
p1 = Proj(init='epsg:28992')
p2 = Proj(proj='latlong',datum='WGS84')
for row in range(len(df)):
lon, lat, z = transform(p1, p2, df.iloc[row, 7], df.iloc[row, 8], 0.0)
lon_l.append(lon)
lat_l.append(lat) 我通过与一些在线转换器进行比较,对经度纬度输出进行了健全性检查,并且输出指向正确的位置。
我尝试了这个解决方案:https://gis.stackexchange.com/questions/348339/using-crs-epsg3857-but-misalignment-between-stamen-background-and-coordinates-o,以防我的转换缺少“towgs84”部分,但图像看起来仍然是一样的,只是颜色略有不同。
发布于 2020-10-07 19:42:35
我想通了!在构建几何图形时,我应该将经度列在纬度之前。
geometry = [geometry.Point(xy) for xy in zip(df['longitude'], df['latitude'])]https://stackoverflow.com/questions/64240127
复制相似问题