我正在尝试学习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转换为浮点数,但它似乎没有帮助。
答案 0 :(得分:1)
这是一个错误,并已修复。 SVG数据确实无效。升级到Shapely> = 1.5.6
答案 1 :(得分: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