GeoPandas在点数

时间:2016-08-15 19:35:29

标签: 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)

我需要像使用另一个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")

......但没有运气。

一些重要说明:

  1. 上面.to_crs方法工作的另一个GeoDataFrame来自一个形状文件,几何列是多边形而不是点。 它的几何形状'在应用.to_crs方法后,值看起来像这样:

    POLYGON((-5973.005380655156 3399.646267693398 ...当我使用hg GeoDataFrame尝试上述内容时,它们仍然看起来像常规的纬度/经度坐标。

  2. 如果/当这个问题解决了,我会将这些点与多边形GeoDataFrame连接起来,以便绘制两者(多边形顶部的点)。

  3. 当我尝试在使用.to_crs方法之前首先连接GeoDataFrames,然后我一次在点和多边形行上使用该方法时,我收到以下错误:

    ValueError:无法转换天真的几何。请先在对象上设置一个crs。

  4. 提前致谢!

3 个答案:

答案 0 :(得分:9)

截至2018年,在GeoPandas中设置CRS非常简单:

gdf.crs = {'init' :'epsg:4326'}

其中gdfgeopandas.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)

答案 1 :(得分:5)

在GeoPandas中设置CRS的格式现在为

gdf.crs = "EPSG:4326"

不推荐使用较早的格式

ref:https://geopandas.org/projections.html

答案 2 :(得分:2)

答案一直是here

hg=hg.to_crs(c.crs)

这将hg的crs设置为c。

的crs