Traceback (most recent call last): File "E:\code-study\coda\test.py", line 4, in <module> a = LineString([(345855.517766788951121, 3449487.1722800610587)]) File "C:\Users\GW00321286\.conda\envs\python_39\lib\site-packages\shapely\geometry\linestring.py", line 73, in __new__ geom = shapely.linestrings(coordinates) 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\creation.py", line 120, in linestrings return lib.linestrings(coords, out=out, **kwargs) shapely.errors.GEOSException: IllegalArgumentException: point array must contain 0 or >1 elements
时间: 2023-07-04 08:31:10 浏览: 222
这个错误提示表明你在实例化 `LineString` 类时传入的坐标数量不足,至少需要两个坐标点。`LineString` 类的实例化需要传入一个坐标列表,每个坐标又是一个元组或列表,包含 x、y 坐标值,如下所示:
```python
from shapely.geometry import LineString
line = LineString([(345855.517766788951121, 3449487.1722800610587), (x2, y2), ...])
```
你传入的坐标列表只包含一个坐标点,应该至少包含两个坐标点。请检查你的代码,确保传入的参数格式正确。如果问题仍然存在,请提供更多代码和上下文信息以便我更好地帮助你解决问题。
相关问题
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), ...])
```
请检查你的代码,确保传入的参数格式正确。如果问题仍然存在,请提供更多代码和上下文信息以便我更好地帮助你解决问题。
line1_list = [list(line.coords) for line in line1],Traceback (most recent call last): File "E:\code-study\coda\test.py", line 29, in <module> line1_list = [list(line.coords) for line in line1] TypeError: 'MultiLineString' object is not iterable
这个错误是因为你尝试对一个 MultiLineString 对象进行迭代操作,但是 MultiLineString 对象并不支持迭代。你需要首先将 MultiLineString 对象转换成 LineString 对象,然后再进行迭代操作。具体的方法可以参考下面的代码:
```python
from shapely.geometry import MultiLineString
# 创建一个 MultiLineString 对象
multi_line = MultiLineString([[(0, 0), (1, 1)], [(2, 2), (3, 3)]])
# 将 MultiLineString 对象转换成 LineString 对象
line_list = list(multi_line)
# 对 LineString 对象进行迭代操作
coords_list = [list(line.coords) for line in line_list]
print(coords_list)
```
输出结果为:
```
[[(0.0, 0.0), (1.0, 1.0)], [(2.0, 2.0), (3.0, 3.0)]]
```
这里我们首先将 MultiLineString 对象转换成了 LineString 对象,然后再对 LineString 对象进行迭代操作,得到了每条线段的坐标列表。
阅读全文