给定以下 GeoDataFrame:
h=pd.DataFrame({'zip':[19152,19047],
'Lat':[40.058841,40.202162],
'Lon':[-75.042164,-74.924594]})
crs='none'
geometry = [Point(xy) for xy in zip(h.Lon, h.Lat)]
hg = GeoDataFrame(h, crs=crs, geometry=geometry)
hg
Lat Lon zip geometry
0 40.058841 -75.042164 19152 POINT (-75.042164 40.058841)
1 40.202162 -74.924594 19047 POINT (-74.924594 40.202162)
我需要像设置另一个GeoDataFrame一样设置CRS(就像这样):
c=c.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
我尝试过这个:
crs={'init': 'epsg:3857'}
和这个:
hg=hg.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
...但没运气。
一些重要的注意事项:
另一个GeoDataFrame使用以上.to_crs方法有效的原因是它来自一个形状文件,其几何列是多边形而不是点。 应用.to_crs方法后,其 'geometry' 值如下所示:
POLYGON ((-5973.005380655156 3399.646267693398... 而当我尝试将其应用于hg GeoDataFrame时,它们仍然看起来像常规的经纬度坐标。
如果这样行得通,我将连接这些点与多边形GeoDataFrame以便同时绘制两者(点在多边形上方)。
当我尝试先连接GeoDataFrames,然后同时对点和多边形行应用.to_crs方法时,我会出现以下错误:
ValueError: Cannot transform naive geometries. Please set a crs on the object first.
提前感谢您!
GeoDataFrame(df, geometry=geometry, crs='EPSG:4326')
也可以工作。 - Ufos0.8.2
)上运行。您所说的“不再有效”是什么意思?您使用的Python和Geopandas版本是什么? - Ufos