0

我正在尝试学习 Shapely,我最终想采用一系列 x,y 坐标并创建偏移或平行线。昨晚我之前发布了一个关于这个过程的问题,并意识到它可能令人困惑,所以让我重述它并尝试以更小的块来攻击它。我正在使用 Anaconda 运行 Windows 7 64 位。我已经安装了 Shapely 和 Shapefile 模块。我正在尝试创建一个 LineString;但是,每当我这样做时,都会出现错误。请找到代码:

from shapely.geometry import LineString

x1

Out[56]: 1633042.5200605541

y1

Out[57]: 700342.4999843091

x2

Out[58]: 1632943.7118592262

y2

Out[59]: 700441.360350892

LineString([(x1,y1),(x2,y2)])

Out[60]: 
Received invalid SVG data. 

这意味着“无效的 SVG 数据”是什么意思?难道我做错了什么。解决这个问题后,我可能还会有其他问题,但让我们一步一步来。我尝试将 x1,y1,x2,y2 转换为浮点数,但似乎没有帮助。

4

2 回答 2

1

这是一个错误,并且已修复。SVG 数据确实无效。升级到匀称>=1.5.6

于 2015-02-12T22:43:01.237 回答
0

从您的问题来看,您似乎是在 IPython (qt) 控制台中运行代码?该问题似乎与 Shapely 无关,而是 IPython 尝试将您渲染/绘制LineString为矢量图像(SVG 格式)的一些问题。

使用ipython qtconsole

In [1]: from shapely.geometry import LineString

In [2]: x = LineString([(16.3,7.0),(16.2,7.1)])

In [3]: x
Out[3]: 
Received invalid SVG data.

如果您要在“标准”IPython 控制台,甚至在标准 Python 解释器中运行相同的代码,您的代码应该可以正常工作。

仅使用ipython

In [1]: from shapely.geometry import LineString

In [2]: x = LineString([(16.3,7.0),(16.2,7.1)])

In [3]: x
Out[3]: <shapely.geometry.linestring.LineString at 0x113c30f60>

长话短说,您的原始代码一切正常;该错误只是 IPython 控制台无法绘制LineString. 所有其他 Shapely 操作应该不受影响。例如:

In [4]: list(x.coords)
Out[4]: [(16.3, 7.0), (16.2, 7.1)]

In [5]: x.length
Out[5]: 0.14142135623731025
于 2015-01-28T23:22:22.113 回答