当前位置: 首页 > 知识库问答 >
问题:

GeoPandas在点上设置CRS

贺佑运
2023-03-14

给定以下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)

我需要设置CRS,就像我对另一个GeoDataFrame所做的那样(如下所示):

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")

……但运气不好。

一些重要的注意事项:

>

  • 上述.to_crs方法适用的另一个GeoDataFrame来自一个形状文件,geometry列用于多边形,而不是点。应用.to_crs方法后,其“几何”值如下所示:

    多边形((-5973.005380655156 3399.646267693398…当我使用hg GeoDataFrame尝试上面的方法时,它们看起来仍然像规则的lat/long坐标。

    如果/当这可行时,我将把这些点与多边形GeoDataFrame连接起来,以便绘制这两个点(多边形顶部的点)。

    当我在使用.to_crs方法之前先尝试连接GeoDataFrames,然后在点和多边形行上同时使用该方法时,会出现以下错误:

    ValueError:无法转换原始几何图形。请先在对象上设置crs。

    提前谢谢!

  • 共有3个答案

    赵宏达
    2023-03-14

    答案一直在这里:

    hg=hg.to_crs(c.crs)
    

    这将hg的crs设置为c的crs。

    唐彦
    2023-03-14

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

    gdf.crs="EPSG: 4326"

    不推荐使用早期格式

    裁判:https://geopandas.org/projections.html

    施梓
    2023-03-14

    Geopandas API得到了清理,现在工作没有惊喜。确保使用最新的稳定版本并阅读文档。

    使用其EPSG代码在GeoDataFrame上设置CRS就像

    gdf.set_crs(epsg=4326, inplace=True)
    

    其中,gdf是一个geopandas.geodataframe.geodataframe。注意显式的就地

    所以在上面的例子中,它将是:

    import pandas as pd
    from shapely.geometry import Point
    from geopandas import GeoDataFrame
    
    df = pd.DataFrame({'zip':[19152,19047],
                   'Lat':[40.058841,40.202162],
                   'Lon':[-75.042164,-74.924594]})
    
    geometry = [Point(xy) for xy in zip(df.Lon, df.Lat)]
    gdf = GeoDataFrame(df, geometry=geometry)
    
    gdf.set_crs(epsg=4326, inplace=True)
    # ^ comment out to get a "Cannot transform naive geometries" error below
    
    # project to merkator
    gdf.to_crs(epsg=3395)
    
         zip        Lat        Lon                          geometry
    0  19152  40.058841 -75.042164  POINT (-8353655.485 4846992.030)
    1  19047  40.202162 -74.924594  POINT (-8340567.652 4867777.107)
    

     类似资料:
    • 是否可以将焦点从更改为? 我尝试了以下方法: 但它不起作用。按Tab键或Enter键时,光标消失。

    • 我有一个EditText-Field,并为它设置了一个OnFocusChangeListener。当它失去焦点时,将调用一个方法,该方法用数据库中的EditText检查EditText的值。如果方法的return-value为true,则显示一个toast并且焦点应该再次回到EditText上。焦点应该总是回到EditText上,键盘应该显示,直到方法的return-value为false。 ed

    • 问题内容: 我让我的游戏在没有鼠标的情况下运行,因此不能使用指针。当玩家输球时将显示高分菜单。 这是我的代码 我努力了 但仍然没有专注于我的。 如何聚焦呢? 问题答案: 如果希望在GUI显示时集中精力,可以使用以下方法: 哪里会是你和你的。

    • 问题内容: 我尝试在Google Container Engine的群集节点上安装ElasticSearch(最新版本),但是ElasticSearch需要变量:>> 262144。 如果我ssh到每个节点并手动运行: 一切正常,但是任何新节点将没有指定的配置。 所以我的问题是: 有没有办法在引导时在每个节点上加载系统配置?Deamon Set并不是一个好的解决方案,因为在Docker容器中,系统

    • 我有一个JavaFX应用程序,它首先计算一些数据,然后在LineChart上添加datapoints。我想在节点上添加一个ClickListener,如果用户单击图上的任何节点,相应的值将出现在TableView或其他东西中。但我无法检索节点的值。 代码如下: EventListener的代码: 我还尝试在LineChart上设置监听器,但在事件-对象中找不到相应的节点信息,如value等。

    • 我是一个新的git和GitHub用户。我已经在Windows上使用GitHub一段时间了,但想尝试更多的命令行,同时学习如何在我想要改进的存储库上分叉和提交拉取请求。 我所看到的是,“上游”似乎被定义为不可用,我想了解发生了什么。我想当我想请求将我的更改拉入上游存储库时,这将是一个问题。 我在GitHub上分叉了存储库,然后将其克隆到我的计算机上: git克隆https://github.com/