【问题标题】:Reproject GeoDataframe not converting geometry properly重新投影 GeoDataframe 未正确转换几何
【发布时间】:2023-03-09 02:08:01
【问题描述】:

我正在使用 Geopandas 通过读取已投影到 EPSG:3735(俄亥俄州南平面,美国英尺)的 shapefile (.shp) 来创建地理数据框。现在我想将另一个地理数据框加入到这个中。第二个地理数据框是通过读取 .csv 文件创建的,该文件包含 lon、lat 格式的 x、y 坐标。所以我将第二个地理数据框的 crs 定义为 EPSG:4326 (WGS 1984)。要使用空间连接功能,两个geodataframe的crs需要相同,所以我尝试使用to_crs将第一个geodatafame重新投影到EPSG:4326。在重新投影之前,Geodataframe gdf ​​如下所示:

TAZ County AreaType District FAZ SHAPE_Leng SHAPE_Area ID zone_type geometry
1656 2261 029 1 248 16 46500.252569 1.147235e+08 2261 OD POLYGON ((1286831.480 474763.929, 1286845.315 ...

如果我写:

gdf_proj = gdf.to_crs("EPSG:4326")

结果原来是这样的:

TAZ County AreaType District FAZ SHAPE_Leng SHAPE_Area ID zone_type geometry
1656 2261 029 1 248 16 46500.252569 1.147235e+08 2261 OD POLYGON ((inf inf, inf inf, inf inf, inf inf, ...

我还尝试将第二个 gdf ​​从 EPSG:4326 转换为 EPSG:3735,但第二个 gdf ​​中的点几何图形也将变为 Point(inf, inf)。我不确定这里有什么问题。任何人都可以提出一种在地理数据框中重新拒绝多边形的好方法吗?

我只是稍后尝试了其他一些 crs。其中一些会起作用(不会变成无限),例如 3785、3035。我还尝试了其他一些 State Plane PCS,但其中一些起作用,而另一些不起作用。俄亥俄州南部 (3735) 和北部 (3734) 不工作。印第安纳东部 (2965) 不工作,但西部 (2966) 工作。 NAD83 GCS (4269) 的项目也无法正常工作。

【问题讨论】:

  • 您的数据框格式错误。您的几何图形仅存在一行并且位于错误的列中
  • @PaulH 数据框不是问题。这只是因为我发布问题时的编辑。我是堆栈溢出的新手,所以也许我在编辑时做错了。但是python中的数据框本身没有问题。

标签: projection geopandas


【解决方案1】:

您可以检查的是gdf 是否设置了正确的坐标系。你可以通过gdf.crs 做到这一点。如果不是 EPSG:3735,而是其他东西,这可能会导致您看到的无穷大。

如果它是错误的,那么调查原因可能是有意义的。但无论如何,您都可以用set_crs 覆盖错误的值:

gdf = gdf.set_crs("EPSG:3735")
gdf_proj = gdf.to_crs("EPSG:4326")

【讨论】:

  • 感谢您的回答,但我认为这不是问题所在。 gdf的crs是3735。其实我今天只是尝试了一些其他的crs。其中一些可以工作(不会变成无限),例如 3785、3035。我还尝试了其他一些 State Plane PCS,但其中一些可以工作,而另一些则不能。俄亥俄州南部 (3735) 和北部 (3734) 不工作。印第安纳东部 (2965) 不工作,但西部 (2966) 工作。 NAD83 GCS (4269) 的项目也无法正常工作。这很奇怪,我不知道是不是只有我有这个问题。
【解决方案2】:

我想我只是想通了。与其使用 WGS 1984 (4326) 从 .csv 文件初始化第二个 gdf,不如将​​其设置为 NAD 1983 (4269)。 GCS 都使用 lat 和 long,所以我猜从一个转换到另一个会造成一些麻烦。然后,我可以使用to_crsgdfEPSG:4269 转换为EPSG:3735,因为3735 是使用NAD83 的PCS。所以我想在使用 Geopandas 中的其他 GCS 将数据从一个 GCS 直接投影到另一台 PCS 时可能会引起一些麻烦。我没有检查源代码,但为了避免类似的问题,如果目标 crs 在另一个 GCS 中,我会说在尝试使用 to_crs 进行投影时要小心。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-06
    • 2012-10-30
    • 2021-12-04
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多