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

无法使用geopandas转换到Mercator投影

庄阿苏
2023-03-14

我正在尝试使用Geopandas和Matplotlib绘制西班牙地图。我使用的是您在下面看到的GeoJSON文件,其中的几何体是地理坐标(EPSG 4326)

我想在墨卡托投影中绘制地图,但当我尝试使用

df.to_crs({'init': 'epsg:3395'})

我收到一个错误说:

RuntimeError: b'no arguments in initialization list'

我已按照本手册中的说明进行操作http://geopandas.org/projections.html. 其中指出,如果geopandas数据帧不与CRS的信息一起计算,则必须对其进行定义。但这不是问题所在。

这是我目前掌握的代码

import geopandas as gpd
%matplotlib inline
import matplotlib.pyplot as plt

geojson_url = 'https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/spain-provinces.geojson'
df = gpd.read_file(geojson_url)

如果我运行以下命令:

df.crs

我收到以下响应(这意味着geopandas数据帧具有关于CRS的信息)

{'init': 'epsg:4326'}

然后

df = df.to_crs({'init': 'epsg:3395'})

返回一个错误

我错过了什么?提前谢谢。

共有1个答案

徐昕
2023-03-14

您似乎正在使用较旧版本的geopandas和pyproj。我建议升级到最新版本,这样做可以:

>>> import geopandas
>>> geopandas.__version__
'0.5.0'
>>> import pyproj
>>> pyproj.__version__
'2.2.0'
>>> geojson_url = 'https://raw.githubusercontent.com/codeforamerica/click_that_hood/master/public/data/spain-provinces.geojson'
>>> df = geopandas.read_file(geojson_url)
>>> df.crs
{'init': 'epsg:4326'}
>>> df2 = df.to_crs({'init': 'epsg:3395'})
>>> df2.crs
{'init': 'epsg:3395'}
 类似资料:
  • 问题内容: 我想从数据库中获取价值,就我而言,我曾经从数据库中获取价值,但是却遇到了这个错误 这是我的代码 任何帮助将是荣幸:) @raffian,你的意思是这样吗? 问题答案: 问题是 这将返回一个 对象数组 列表 (Object []), 其中包含表中每一列的标量值。Hibernate将使用ResultSetMetadata推断返回的标量值的实际顺序和类型。 解 相关连结 使用迭代器

  • 问题内容: 为什么在我的程序中触发java.lang.ClassCastException? java.lang.ClassCastException:[Ljava.lang.Object; 无法转换为com.App.Equip] 该查询返回已回答(在CheckLists calsse中找到)但尚未由Equip对象回答的清单的列表 -这是代码: -我的java类: 我想将我的SQl查询的结果格式化

  • 我试图找出点是否在闭合多边形中(在这个问题中:查找数据框中的点是否在多边形中,并为点指定多边形名称),但我意识到可能有另一种方法可以做到这一点: 我有这个数据框 我想把它转换成 对积分也这样做: 到 我从来没有使用过geopandas,在这里有点不知所措。 因此,我的问题是:如何从pandas数据帧到具有geopandas属性的数据帧? 感谢你的洞察力!

  • 我将一个具有lat/lon的数据集转换为geopandas数据帧(我们称之为gpd)。gpd没有CRS,我试图使用以下方法将此gpd投影到“EPSG:3857”: gpd=对crs的gpd(“EPSG:3857”) 我得到一个错误,说“无法转换原始几何体。请先在对象上设置一个CRS”。这是否意味着,对于任何没有CRS的gpd,我必须首先为其分配CRS,然后将其重新投影到我感兴趣的CRS,例如,从4

  • 问题内容: 我有包含我的上下文的课程。但是,当我编译时,在这一行中出现了另一个类: 类: 错误: AndroidManifest.xml: 问题答案: 您需要在清单中指定以使用自定义应用程序。 这是完整的

  • 问题内容: 我正在使用spring通过bean创建对象。现在,我尝试使用aop创建相同的对象,并且我无法将$ Proxy强制转换为SaleRoom异常。 先前的xml是: 我使用以下代码创建销售: 这是新的xml: Aspect日志记录类: 我正在使用相同的代码通过aop创建bean。并且在线程“主”中得到异常java.lang.ClassCastException:$ Proxy11无法转换为a