首页 > 编程问答 >写入羽毛或镶木地板文件格式时出现 Geopandas 错误 - UnsupportedGEOSVersionError:“iso”选项至少需要 GEOS 3.10.0

写入羽毛或镶木地板文件格式时出现 Geopandas 错误 - UnsupportedGEOSVersionError:“iso”选项至少需要 GEOS 3.10.0

时间:2024-07-26 09:00:25浏览次数:12  
标签:python anaconda parquet geopandas feather

当尝试将 pandas 地理数据帧“gdf”写入羽毛文件格式时,我收到错误消息 UnsupportedGEOSVersionError: The “iso”选项至少需要 GEOS 3.10.0

gdf.to_feather("California_Buildings.feather")

我环境中当前的 GEOS 版本是 3.12.1 应该满足这个要求...尽管我没有直接在代码中导入 GEOS,因为 write_feather 是一个 geopandas 函数。我有什么遗漏的吗? *编辑添加 - geopandas.show_versions() 的输出:

SYSTEM INFO
-----------
python     : 3.11.7 | packaged by Anaconda, Inc. | (main, Dec 15 2023, 18:05:47) [MSC v.1916 64 bit (AMD64)]
executable : C:\Users\AWertheim\anaconda3\python.exe
machine    : Windows-10-10.0.22631-SP0

GEOS, GDAL, PROJ INFO
---------------------
GEOS       : 3.8.0
GEOS lib   : None
GDAL       : 3.6.2
GDAL data dir: None
PROJ       : 9.3.1
PROJ data dir: C:\Users\AWertheim\anaconda3\Library\share\proj

PYTHON DEPENDENCIES
-------------------
geopandas  : 0.14.2
numpy      : 1.26.4
pandas     : 2.1.4
pyproj     : 3.6.1
shapely    : 2.0.1
fiona      : 1.9.5
geoalchemy2: None
geopy      : None
matplotlib : 3.8.0
mapclassify: 2.5.0
pygeos     : None
pyogrio    : None
psycopg2   : None
pyarrow    : 14.0.2
rtree      : 1.0.1

此处的完整错误消息:

UnsupportedGEOSVersionError               Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_52736\3260101815.py in <cell line: 0>()
      1 #Feather
      2 start = time.time()
----> 3 test_file.to_feather("California_Buildings.feather")
      4 #og_file.to_feather("California_Buildings.feather")
      5 #pyarrow.feather.write_feather(og_file, "California_Buildings.feather")

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\geopandas\geodataframe.py in to_feather(self, path, index, compression, schema_version, **kwargs)
   1161         from geopandas.io.arrow import _to_feather
   1162 
-> 1163         _to_feather(
   1164             self,
   1165             path,

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\geopandas\io\arrow.py in _to_feather(df, path, index, compression, schema_version, **kwargs)
    392 
    393     path = _expand_user(path)
--> 394     table = _geopandas_to_arrow(df, index=index, schema_version=schema_version)
    395     feather.write_feather(table, path, compression=compression, **kwargs)
    396 

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\geopandas\io\arrow.py in _geopandas_to_arrow(df, index, schema_version)
    274                 )
    275                 break
--> 276     df = df.to_wkb(**kwargs)
    277 
    278     table = Table.from_pandas(df, preserve_index=index)

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\geopandas\geodataframe.py in to_wkb(self, hex, **kwargs)
   1012         # Encode all geometry columns to WKB
   1013         for col in df.columns[df.dtypes == "geometry"]:
-> 1014             df[col] = to_wkb(df[col].values, hex=hex, **kwargs)
   1015 
   1016         return df

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\geopandas\array.py in to_wkb(geoms, hex, **kwargs)
    192     if not isinstance(geoms, GeometryArray):
    193         raise ValueError("'geoms' must be a GeometryArray")
--> 194     return vectorized.to_wkb(geoms._data, hex=hex, **kwargs)
    195 
    196 

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\geopandas\_vectorized.py in to_wkb(data, hex, **kwargs)
    193 def to_wkb(data, hex=False, **kwargs):
    194     if compat.USE_SHAPELY_20:
--> 195         return shapely.to_wkb(data, hex=hex, **kwargs)
    196     elif compat.USE_PYGEOS:
    197         return pygeos.to_wkb(data, hex=hex, **kwargs)

~\AppData\Local\ESRI\conda\envs\arcgispro-py3-clone\Lib\site-packages\shapely\io.py in to_wkb(geometry, hex, output_dimension, byte_order, include_srid, flavor, **kwargs)
    185         raise TypeError("flavor only accepts scalar values")
    186     if lib.geos_version < (3, 10, 0) and flavor == "iso":
--> 187         raise UnsupportedGEOSVersionError(
    188             'The "iso" option requires at least GEOS 3.10.0'
    189         )

UnsupportedGEOSVersionError: The "iso" option requires at least GEOS 3.10.0
'''


I tried geopandas.write_feather(), as well as pyarrow.feather.write_feather(). Both resulted in error messages.

错误信息实际上表明了你使用的 GEOS 版本是 3.8.0,而不是 3.12.1。尽管你的系统中可能安装了 GEOS 3.12.1,但你的 Python 环境似乎链接到了旧版本。

要解决这个问题,你可以尝试以下方法:

  1. 升级 Geopandas: 首先尝试将 Geopandas 升级到最新版本。这可能会自动解决版本冲突。你可以使用以下命令进行升级: pip install --upgrade geopandas

  2. 重新安装 Geopandas 及其依赖项: 如果升级不起作用,请尝试重新安装 Geopandas 及其依赖项。这将确保所有内容都使用一致的 GEOS 版本安装。你可以使用以下命令进行操作: pip uninstall geopandas pip install geopandas

  3. 手动指定 GEOS 路径: 如果上述方法不起作用,你可能需要手动指定 GEOS 库的路径。首先,你需要找到 GEOS 3.12.1 安装的位置。然后,你可以使用以下环境变量设置路径: import os os.environ['GEOS_LIBRARY_PATH'] = '/path/to/geos/library' /path/to/geos/library 替换为 GEOS 库的实际路径。

  4. 创建新的 Conda 环境: 作为最后的手段,你可以尝试创建一个新的 Conda 环境,并安装 Geopandas 及其依赖项。这将创建一个干净的环境,不太可能出现版本冲突。

完成这些步骤后,请再次运行 geopandas.show_versions() 以确认 GEOS 版本已更新到 3.10.0 或更高版本。之后,你应该能够毫无问题地将 GeoDataFrame 写入 Feather 文件。

标签:python,anaconda,parquet,geopandas,feather
From: 78507007

相关文章

  • python学习之闭包与装饰器
    一、闭包闭包允许一个函数访问并操作函数外部的变量(即父级作用域中的变量),即使在该函数外部执行。特性:(1)外部函数嵌套内部函数。(2)外部函数可以返回内部函数。(3)内部函数可以访问外部函数的局部变量。defout():print("我是外层")n=10defins():......
  • 如何正确处理Python中的可选功能
    我正在开发实现科学模型的python包,我想知道处理可选功能的最佳方法是什么。这是我想要的行为:如果无法导入某些可选依赖项(例如,在无头机器上绘制模块),我想在我的类中禁用使用这些模块的功能,警告用户如果他尝试使用它们以及所有这些,而不会破坏执行。所以下面的脚本在任何情况下......
  • 在Python中,对于一个数字列表,如何找到具有最大和的数字的连续子集范围?
    输入的一个示例可能是nums1=[-1,4,-3,5,-5]nums2=[-1,4]我想知道这里什么可能是有效的解决方案。谢谢。defmax_subarray_sum_range(nums):"""找到数字列表中具有最大和的连续子集范围。Args:nums:数字列表。Returns:一个包含最大和子集起......
  • 如何安装mysqlclient 1.4.6? (Python 3.6)MacO?
    我安装pipinstallmysqlclient==1.4.6--no-cache-dir但是出现错误:ld:library'ssl'notfoundclang:error:linkercommandfailedwithexitcode1(use-vtoseeinvocation)error:command'clang'failedwithexitstatus......
  • Numpythonic 方式从所需的时间步长和窗口大小构造窗口向量
    给定参数timestep=2window_size=3我已经展平了大小为9的时间序列向量。内容是:arr=np.array([1,2,3,4,5,6,7,8,9])如何使用这些参数重塑/构造窗口时间序列?我希望输出具有形状unknown,window_size)所以,它的输出将是这样的矩阵:windowed_arr=np......
  • Python - 检测字母模式而不迭代所有可能的组合
    对于可能不太有用的标题,我表示歉意,我不知道如何将这个问题总结为一句话。我正在尝试计算Python3.10中一个单词有多少个“单位”长。一个“单位”是(C表示辅音,V表示元音)CV或VC或C或V(后两者仅在没有配对时使用)可以制作)。例如,“件”将为三个单位......
  • scipy.fft (Python) 结果和 FFTW (C) 结果之间的微小差异
    我正在尝试使用C中的FFTW从Python中的一些已知工作代码重新创建结果。我发现结果中有一些小错误。scipy.fft我的输入数据是真实的3d,尺寸=(294,294,294)。我的scipy.fft调用如下所示:我的fftw代码如下所示这个:complex_data_out=scipy.fft.fftn......
  • 使用 Python 生成多页 PDF 报告,其中包含表格、页眉、页脚和可调整单元格数据(使用 repo
    我想在Python中生成带有表格、页眉、页脚和可调整单元格数据的多页PDF报告(使用reportlab)但是,由于奇怪的原因,字体大小并没有随着表格内容而改变......我尝试在这里改变:('FONTSIZE',(0,1),(-1,-1),24),#内容的字体大小但什么也没发生importtimefromreportlab......
  • Python 和 ReportLab。如何更改 Table 对象中的字体和字体大小?
    我需要更改表对象(ReportLab)中特定单元格的文本样式。据我了解,它可以通过TableStayle类完成,但我找不到示例。my_table=Table(data,colWidths=column_widths,rowHeights=row_heghts)my_colour_black=[0,0,0]my_colour_ligt_gray=[0.8,0.8,0.8]my_colour_gra......
  • 如何在Python中查找字符串中所有出现的子字符串,同时忽略某些字符?
    我想找到所有出现的子字符串,同时忽略某些字符。我怎样才能在Python中做到这一点?示例:long_string='thisisat`es"t.Doesthetestwork?'small_string="test"chars_to_ignore=['"','`']print(find_occurrences(long_string,small_string......