Dan*_*ty2 9 python-3.x geopandas
给定以下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)
Run Code Online (Sandbox Code Playgroud)
我需要像使用另一个GeoDataFrame一样设置CRS(像这样):
c=c.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
Run Code Online (Sandbox Code Playgroud)
我试过这个:
crs={'init': 'epsg:3857'}
Run Code Online (Sandbox Code Playgroud)
还有这个:
hg=hg.to_crs("+init=epsg:3857 +ellps=GRS80 +datum=GGRS87 +units=mi +no_defs")
Run Code Online (Sandbox Code Playgroud)
......但没有运气.
一些重要的说明:
上面.to_crs方法工作的另一个GeoDataFrame来自一个形状文件,几何列是多边形而不是点.在应用.to_crs方法后,其"几何"值看起来像这样:
POLYGON((-5973.005380655156 3399.646267693398 ...当我用hg GeoDataFrame尝试上面的内容时,它们仍然看起来像常规的纬度/经度坐标.
如果/当这个结果出来时,我会用多边形GeoDataFrame连接这些点,以便绘制两个(多边形顶部的点).
当我在使用.to_crs方法之前首先尝试连接GeoDataFrames,然后我一次在点和多边形行上使用该方法时,我收到以下错误:
ValueError:无法转换朴素几何.请先在对象上设置crs.
提前致谢!
Ufo*_*fos 17
截至2018年,在GeoPandas中设置CRS非常简单:
gdf.crs = {'init' :'epsg:4326'}
Run Code Online (Sandbox Code Playgroud)
这里gdf
是一个geopandas.geodataframe.GeoDataFrame
所以在上面的例子中它将是:
h=pd.DataFrame({'zip':[19152,19047],
'Lat':[40.058841,40.202162],
'Lon':[-75.042164,-74.924594]})
geometry = [Point(xy) for xy in zip(h.Lon, h.Lat)]
hg = GeoDataFrame(h, geometry=geometry)
hg.crs = {'init' :'epsg:4326'}
# ^ comment out to get a "Cannot transform naive geometries" error below
# project to merkator
hg.to_crs({'init': 'epsg:3395'})
Lat Lon zip geometry
0 40.058841 -75.042164 19152 POINT (-8353655.484505325 4846992.030409531)
1 40.202162 -74.924594 19047 POINT (-8340567.65197276 4867777.107279473)
Run Code Online (Sandbox Code Playgroud)
小智 8
GeoPandas 中设置 CRS 的格式现在是
gdf.crs = "EPSG:4326"
较早的格式已弃用
参考:https : //geopandas.org/projections.html
归档时间: |
|
查看次数: |
8607 次 |
最近记录: |