C:\Users\GW00321286\.conda\envs\python_39\python.exe E:\code-study\coda\test.py Traceback (most recent call last): File "E:\code-study\coda\test.py", line 13, in <module> c = gpd.GeoSeries(hits) 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) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pandas\core\series.py", line 454, in __init__ data = com.maybe_iterable_to_list(data) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pandas\core\common.py", line 308, in maybe_iterable_to_list return list(obj) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\prepared.py", line 32, in contains return self.context.contains(other) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\geometry\base.py", line 658, in contains return _maybe_unpack(shapely.contains(self, other)) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\decorators.py", line 77, in wrapped return func(*args, **kwargs) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\predicates.py", line 540, in contains return lib.contains(a, b, **kwargs) TypeError: One of the arguments is of incorrect type. Please provide only Geometry objects.
时间: 2023-08-27 08:22:14 浏览: 48
根据你提供的信息,这是一个 Python 报错信息,其中指出了发生错误的位置在 test.py 文件的第 13 行。错误是由于在 GeoPandas 库的 GeoSeries 对象中传入了错误的参数类型导致的。具体来说,错误信息指出传入了一个非几何对象作为参数,而 GeoSeries 对象只能接受几何对象作为参数。建议检查代码,确保在 GeoSeries 对象中只传入几何对象。
相关问题
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
根据错误消息,看起来是在使用 `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 26, in <module> gdf['geometry'] = gdf['geometry'].to_crs(out_proj) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\geopandas\geoseries.py", line 1124, in to_crs self.values.to_crs(crs=crs, epsg=epsg), index=self.index, name=self.name File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\geopandas\array.py", line 767, in to_crs crs = CRS.from_user_input(crs) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pyproj\crs\crs.py", line 440, in from_user_input return CRS(value, **kwargs) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\pyproj\crs\crs.py", line 290, in __init__ raise CRSError("Invalid CRS input: {!r}".format(projparams)) pyproj.exceptions.CRSError: Invalid CRS input: Proj('+proj=utm +zone=51 +datum=WGS84 +units=m +no_defs', preserve_units=True)
这个错误是由于你传入的投影参数字符串不符合 pyproj 库的要求导致的。你需要保证传入的投影参数字符串是符合 proj 库的要求的,如果你不确定 proj 库怎么使用,可以参考 proj 库的官方文档。另外,你也可以使用 geopandas 中的 `crs` 属性来设置投影参数,例如:
```python
import geopandas as gpd
# 读取数据
gdf = gpd.read_file('data.shp')
# 设置投影参数
gdf.crs = 'EPSG:4326'
# 转换坐标系
out_proj = 'EPSG:32651'
gdf = gdf.to_crs(out_proj)
```
这样就可以将数据从 WGS84 坐标系转换为 UTM Zone 51N 坐标系了。