File "E:\code-study\coda\crossing\TEST.py", line 52, in <module> df["geometry"] = df["geometry"].apply(wkt.loads) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pandas\core\series.py", line 4771, in apply return SeriesApply(self, func, convert_dtype, args, kwargs).apply() File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pandas\core\apply.py", line 1123, in apply return self.apply_standard() File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pandas\core\apply.py", line 1174, in apply_standard mapped = lib.map_infer( File "pandas\_libs\lib.pyx", line 2924, in pandas._libs.lib.map_infer File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\wkt.py", line 22, in loads return shapely.from_wkt(data) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\io.py", line 286, in from_wkt return lib.from_wkt(geometry, invalid_handler, **kwargs) TypeError: Expected bytes or string, got MultiLineString
时间: 2023-07-17 08:01:43 浏览: 406
根据错误消息,看起来是在使用 `wkt.loads` 函数时出现了错误。它期望的输入是字节或字符串,但实际上传入的是 MultiLineString 类型的几何对象。
要解决这个问题,您可以尝试使用 `wkb.loads` 函数,它接受二进制格式(WKB)的几何数据。可以通过将 `wkb.dumps` 函数应用于 MultiLineString 类型的几何对象来获取 WKB 格式的数据。以下是一种可能的解决方案:
```python
import geopandas as gpd
from shapely import wkb
# 读取Geopandas数据
gdf = gpd.read_file('your_data.geojson')
# 将MultiLineString几何对象转换为WKB格式
gdf['geometry'] = gdf['geometry'].apply(lambda x: wkb.dumps(x))
# 将WKB格式的几何数据转换回几何对象
gdf['geometry'] = gdf['geometry'].apply(lambda x: wkb.loads(x))
# 打印结果
print(gdf)
```
在这段代码中,我们首先将 MultiLineString 类型的几何对象转换为 WKB 格式,然后再将其转换回几何对象。请确保将 'your_data.geojson' 替换为您自己的 Geopandas 数据文件路径。
相关问题
Traceback (most recent call last): File "E:\code-study\coda\test.py", line 10, in <module> gdf = gpd.GeoSeries(geometry= [bowtie]) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\geopandas\geoseries.py", line 208, in __init__ s = pd.Series(data, index=index, name=name, **kwargs) TypeError: __init__() got an unexpected keyword argument 'geometry'
这个错误是因为您在使用GeoSeries时传递了一个名为"geometry"的参数,该参数不在GeoSeries的__init__函数的参数列表中。请检查您的代码,查看是否在使用GeoSeries时正确地指定了参数。如果您确实需要使用名为"geometry"的参数,请检查您所使用的geopandas版本是否支持该参数。如果不支持,请升级geopandas版本或使用其他参数来代替。
Traceback (most recent call last): File "E:\code-study\coda\test.py", line 3, in <module> a = LineString(345855.517766788951121, 3449487.1722800610587) TypeError: __new__() takes from 1 to 2 positional arguments but 3 were given
这个错误提示表明你在实例化 `LineString` 类时传入了多余的参数。`LineString` 类的实例化需要传入一个坐标列表作为参数,如下所示:
```python
from shapely.geometry import LineString
line = LineString([(345855.517766788951121, 3449487.1722800610587), (x2, y2), ...])
```
请检查你的代码,确保传入的参数格式正确。如果问题仍然存在,请提供更多代码和上下文信息以便我更好地帮助你解决问题。
阅读全文