Shapely

GitHub-操作 上诉人 工作服

笛卡尔平面中几何对象的处理和分析。

https://c2.staticflickr.com/6/5560/31301790086_b3472ea4e9_c.jpg

shapely是一个BSD许可的python包,用于操作和分析平面几何对象。它是基于广泛部署的 GEOS (发动机) PostGISJTS (从中移植geos)库。shapely与数据格式或坐标系无关,但可以很容易地与包集成。有关详细信息,请参阅:

使用

这里是通过缓冲一个点来构建一个近似圆形补丁的典型示例。

>>> from shapely.geometry import Point
>>> patch = Point(0.0, 0.0).buffer(10.0)
>>> patch
<shapely.geometry.polygon.Polygon object at 0x...>
>>> patch.area
313.65484905459385

有关更多示例和指南,请参阅手册。

要求

Shapely 1.8要求

  • PYTHON>=3.6

  • GEOS>=3.3

安装整齐

可以从源分发版或几种内置分发版之一安装Shapely。

已建分布

对于那些不知道或不知道如何使用他们平台的编译器和pythonsdk的用户来说,构建发行版是唯一的选择,对于那些不想麻烦的用户来说也是一个不错的选择。

最新版本的Python和带有geospely的Windows版本的pipely可以获得最新版本的Python和pipely

$ pip install shapely

Shapely可以通过apt、yum和Homebrew等系统包管理工具获得,也可以由流行的Python发行版(如Canopy和Anaconda)提供。如果使用Conda包管理器安装Shapely,请确保使用Conda forge通道。

Windows用户还有另一个很好的安装选项:发布在https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely。可以使用pip通过指定整个URL来安装它们。

震源分布

如果您希望从源代码构建与依赖geos的其他模块(如cartopy或osgeo.ogr)的兼容性,或者希望使用项目控制盘中包含的不同版本的geos,则应首先在系统上安装geos库、cython和numpy(使用apt、yum、brew或其他方式),然后直接使用piP忽略二进制车轮。

$ pip install shapely --no-binary shapely

如果您已将geos安装到标准位置,geos config程序将用于获取编译器和链接器选项。如果geos config不在可执行文件上,则可以使用geos_config环境变量指定它,例如:

$ GEOS_CONFIG=/path/to/geos-config pip install shapely

整合

shapely不读取或写入数据文件,但它可以使用几种已知的格式和协议进行序列化和反序列化。shapely.wkb和shapely.wkt模块提供受Python pickle模块启发的转储程序和加载程序。

>>> from shapely.wkt import dumps, loads
>>> dumps(loads('POINT (0 0)'))
'POINT (0.0000000000000000 0.0000000000000000)'

shapely还可以使用类似dicts的geojson与其他python GIS包集成。

>>> import json
>>> from shapely.geometry import mapping, shape
>>> s = shape(json.loads('{"type": "Point", "coordinates": [0.0, 0.0]}'))
>>> s
<shapely.geometry.point.Point object at 0x...>
>>> print(json.dumps(mapping(s)))
{"type": "Point", "coordinates": [0.0, 0.0]}

开发和测试

在requirements-dev.txt中列出了开发形状的依赖项。生产装置不需要Cython和Numpy,仅用于开发。强烈建议使用虚拟环境。

$ virtualenv .
$ source bin/activate
(env)$ pip install -r requirements-dev.txt
(env)$ pip install -e .

该项目使用pytest运行Shapely的单元测试和doctest套件。

(env)$ python -m pytest

支持

有关使用shapely的问题,请访问 GIS StackExchange 使用“shapely”标签。

可以在https://github.com/toblerity/shapely/issues上报告错误。

信用

shapely由以下人员编写:

另请参见:https://github.com/toblerity/shapely/graphs/contributors

其他帮助来自:

  • Justin Bronn(Geodjango),以C型为灵感

  • 马丁·戴维斯(JTS)

  • Sandro Santilli、Mateusz Loskot、Paul Ramsey等人(GEOS项目)

这项工作的主要部分是由一笔拨款资助的 Pleiades) 来自美国国家人文基金会(https://www.neh.gov).

变化

1.8.0(2021-10-25)

这是最终的1.8.0版本。自1.8rc2以来一直没有变化。

1.8rc2(2021-10-19)

建造:

添加了一个pyproject t.toml文件,以指定_VECTORIZED和_SPEDUPS模块(#1128)的构建依赖关系。要在没有这些构建依赖项的情况下正确安装,请使用您的构建工具禁用PEP517和518支持的功能。

错误修复:

  • PR#1042的一部分已被PR#1201还原,其中添加了要搜索的新的主GEOS库名称。

1.8rc1(2021-10-04)

不推荐使用:

BaseGeometry的Ally_Exact()方法已弃用。它令人困惑,将在2.0.0中删除。将改用equals_exact()方法。

错误修复:

  • 我们确保始终在_VECTORIZED之前导入_Speedups模块,以避免在装有Python3.8和3.9(#1184)的Windows上出现无法解释的情况。

1.8a3(2021-08-24)

不推荐使用:

已删除STRtree类弃用警告。2.0.0中的类将向后兼容1.8.0中的类。

错误修复:

  • 这个 __array_interface__ 只引发AttributeError,从Numpy 1.21(#1173)开始,所有其他异常都被弃用。

  • STRtree类现在在内部使用一对Item,Geom序列,而不是DICT(#1177)。

1.8a2(2021-07-15)

Python版本支持:

Shapely 1.8将只支持大于或等于3.6的版本。

新功能:

  • STRtree NEAREST*()方法现在接受一个可选参数,该参数指定从结果中排除输入几何图形(#1115)。

  • GeometryTypeError已添加到shapely.Error中,并一致引发,而不是版本1.7中的TypeError或ValueError。为了向后兼容,新异常将从版本2.0(#1099)之前的TypeError和Value Error派生。

  • STRtree类构造函数现在接受可选的第二个参数,即要存储在树中的对象序列。如果没有提供,几何图形的序列索引将被存储,如前所述(#1112)。

  • STRtree类有新的QUERY_GEOMS()、QUERY_ITEMS()、NEAREST_GEOM()和NEAREST_ITEM()方法(#1112)。QUERY()和NEAREST()方法仍然是QUERY_GEOMS()和NEAREST_GEOM()的别名。

错误修复:

  • 我们不再尝试加载libc来获取Linux上的免费函数,而是从全局符号表获取它。

  • 在传递空几何体geos_getCoordSeq()时打印的GEOS错误消息通过从不传递空几何体(#1134)来避免。

  • 现在只能按照PEP 3135(#1109)中描述的方式使用Python的内置Super()。

  • 仅在存在的情况下加载Conda GEOS DLL(在Windows上)(#1108)。

  • 将/opt/home brew/lib添加到要搜索GEOS共享库的目录列表中。

  • 添加了新的库搜索路径,以帮助使用CX_FREAK创建应用程序。

1.8a1(2021-03-03)

Shapely 1.8.0将是一个过渡版本。有一些错误修复和新功能,但主要是关于2.0.0中即将发生的更改的警告。预计还会有几个1.8.0之前的预发行版。有关如何更新代码(https://shapely.readthedocs.io/en/latest/migration.html).的更多详细信息,请参阅Shapely 1.8/2.0的迁移指南

Python版本支持:

Shapely 1.8将只支持大于等于3.5的版本(#884)。

不推荐使用:

版本2.0.0中将删除以下函数以及几何属性和方法。

  • ops.cascaded_union

  • 几何图形.Empty()

  • 几何图形.ctype和 .__array_interface__

  • 多零件几何图形 .__len__

  • 设置几何对象的自定义属性

几何图形对象在2.0.0版中将变得不可变。

STRtree类将在2.0.0中完全更改。确切的未来API还没有确定,但将在1.8.0发布之前决定。

当使用这些功能中的任何一个时,将在1.8a1中发出弃用警告。

几何体对象上的.to_wkb()和.to_wkt()方法已被删除。

新功能:

  • 将Normize()方法添加到几何体类,公开GEOSNormal算法(#1090)。

  • 使用每个节点10个项目的容量初始化STRtree(#1070)。

  • 使用AuditWare版本<3.1重新定位到shapely/.libs的加载库,或使用>=3.1的AuditWare版本重新定位到Shapely.libs的加载库。

  • shapely.ops.沃罗诺图()计算几何或几何集合的Voronoi图(#833,#851)。

  • shapely.validation.make_有效()修复了无效的几何图形(#883)

错误修复:

  • 对于pyinstaller,我们现在处理环境中多个GEOS库的情况,例如Fiona和rasterio轮子与Shapely(#1071)共同安装时。

  • Ops.Split功能现在按触摸拆分,以消除使用多部分拆分器和单部分拆分器(#1034)的结果之间令人困惑的差异。

  • 有关ops.substring中顶点的重复和顺序的几个问题已修复(#1008)。

包:

  • 上传到PyPI的车轮将包括GEOS 3.9.1。

1.7.1(2020-08-20)

  • STRtree 现在安全地实现pickle协议(#915)。

  • 已为添加文档 minimum_clearance (875,874)。

  • STRtree.__del__() 我们不打电话 GEOSSTRtree_destroy 当lgeos模块在出口处被拆除时(#897,#830)。

  • 文件 overlaps() 方法已更正(#920)。

  • 在中更正测试 shapely.geometry.base.BaseGeometry.empty() 以消除内存泄漏,如ţ745中报告的那样。

  • Get free()不是来自libc,而是来自进程全局符号(#891),修复了OS X 10.15和10.16上出现的一个错误。

  • 从复杂行中提取子串变得更加正确(#848,#849)。

  • 通过准备输入几何体(#871),可以加快复杂几何体的拆分。

  • 修复函数argtypes(#866)连接中的错误。

  • 改进了STRtree用法的文档(#857)。

  • 改进了对GeoJSON坐标中的空列表或列表列表的处理(#852)。

  • polylabel算法现在可以处理多边形孔(#851,#817)。

1.7.0(2020-01-28)

这是最后的1.7.0版本。自17亿1年以来没有任何变化。

17亿欧元(2020年1月13日)

第一个beta版。

1.7a3(2019年12月31日)

新功能:

  • 缓冲区操作现在可以是单侧(#806,#727)。

错误修复:

  • 将/usr/local/lib添加到要搜索GEOS共享库(#795)的目录列表中。

  • 操作子字符串现在,当给定的起始位置大于结束位置(#628)时,返回一条坐标线,其坐标为从端到前的顺序。

  • 实施 __bool__() 对于几何体基类,以便 bool(geom) 返回的逻辑补码 geom.is_empty (754页)。

  • 删除在GEOS版本字符串中找到的类似于版本的字符串数的断言。可能是2到3个。

1.7A2(2019年6月21日)

  • 最近的邻居搜索已添加到strtree(668)。

  • 不允许将多多边形序列作为多多边形构造函数的参数,解析为588。

  • 已删除的自动售货机 functools 以前用于支持python 2.5的函数。

错误修复:

  • 在OS X(735)上使用已安装的二进制滚轮时,避免重新加载geos共享库,从而解决问题553。

  • shapely.ops.orient函数现在可以定位多个多边形和几何集合以及多边形(733)。

  • 现在可以从点对象序列以及X、Y序列序列(732)构建多边形。

  • 空多边形的外部现在等于空线性环(731)。

  • 空点对象的bounds属性现在返回一个空元组,与其他几何类型(723)一致。

  • 当非字符串值传递给WKT加载器时,分段错误被700避免。

  • 当子行字符串与行字符串的开头重合时,ops.substring失败已被修复(658)。

  • 通过655防止在空的行字符串上插入分段错误。

  • 在PolyLabel算法(644)中添加了矩形多边形的一个缺少的特殊情况。

  • 可以从linestring(638)创建linearring。

  • 准备好的大地测量验证条件已在632年收紧,以修复631年报告的缺陷。

  • 尝试插入空几何体不再导致分段错误,引发 ValueError 取而代之的是(α653)。

1.7A1(2018年7月29日)

新功能:

  • python版本检查由包安装脚本进行。shapely 1.7只支持python版本2.7和3.4+(610)。

  • 增加了一个新的 EmptyGeometry 支持geopandas的类(514)。

  • 新增 shapely.ops.substring 功能(459)。

  • 新增 shapely.ops.clip_by_rect 功能(583)。

  • 使用系统“Meipass”中指示的DLL来支持pyinstaller冻结的应用程序(523)。

  • shapely.wkb.dumps 现在接受一个 srid 整型关键字参数,用于在输出数据(593)中写入包含空间引用ID的WKB数据。

错误修复:

  • shapely.geometry.shape 现在可以封送空的geojson表示(573)。

  • 尝试执行以下操作时引发异常 preparePreparedGeometry (α577,α595)。

  • 关键字参数已从几何图形对象的 wkt getter属性(581,594)。

1.6.4.post1(2018-01-24)

  • 修复这个更改日志中损坏的标记,这将恢复pypi上格式良好的自述文件。

1.6.4(2018-01-24)

  • 处理A TypeError 当几何结构被拆掉时(473,528)。

1.6.3(2017年12月9日)

  • 当访问空多边形(450)的地理界面时,不再引发attributeError。

  • asShape 现在处理映射中的空坐标为 shape (542)。请注意 asShape 可能会在以后的shapely版本中被弃用。

  • 在速度模式下检查LineString坐标的长度,防止仅使用一个坐标(546)的LineString时发生崩溃。

1.6.2(2017年10月30日)

  • 已经发布了1.6.2.post1版本来修复上传到pypi的macosx轮子的问题。

1.6.2(2017年10月26日)

  • 现在,通过一个端点拆分一个linestring将成功,而不是失败 ValueError (524,533)。

  • 缺少几何图形的文档 overlaps 已添加谓词(522)。

1.6.1(2017年9月1日)

  • 避免 STRTree 通过维护对添加几何图形的引用,由于悬空引用(505)导致崩溃。

  • 在报告对CTypes的调用时降低要调试的日志级别 CDLL() 这不会成功,会被重新尝试(515)。

  • 澄清:需要空几何对象的应用程序,如geopandas,应该使用 BaseGeometry() 而不是 Point()Polygon() . 安 EmptyGeometry 类已添加到主开发分支中,并将在下一个非bugfix版本中可用。

1.6.0(2017年8月21日)

shapely 1.6.0向现有几何类和新函数添加新属性( split()polylabel() )到shapely.ops模块。异常被整合到一个形状良好的模块中。错误模块和日志记录实践得到了改进。根据numpy,shapely的可选功能现在被收集到一个名为“矢量化”的需求集中,这些功能可以像 pip install shapely[vectorized] .

在1.6.0上的大部分工作都是为了改进项目的构建和打包脚本,并最小化运行时依赖性。现在,shapely将打包仅在构建期间使用,并且不再在运行时调用geos-config实用程序。

除了下面的alpha和beta预发行版中列出的更改外,项目还进行了以下更改:

  • 项目文档现在托管在https://shapely.readthedocs.io/en/latest/上。

感谢大家使用、推广和为这个完美的项目做出贡献。

1.6B5(2017年8月18日)

错误修复:

  • 将单个坐标传递给 LineString() 如果禁用加速,则会像启用加速一样引发ValueError。这解决了509。

1.6B4(2017年2月15日)

错误修复:

  • 隔离供应商目录中的供应商化包装,删除过时的dist信息,并从项目需求中删除包装(解决468)。

16立方(2016-12-31)

错误修复:

  • 源自geos通知处理程序的日志消息级别从警告降低到信息(447)。

  • 允许在没有numpy(444)的情况下再次导入加速。

1.6B2(2016-12-12)

新功能:

  • 添加对形状和关联函数的几何集合的支持(422)。

1.6B1(2016-12-12)

错误修复:

  • 为空点和线串(403)实现uu array_u interface_uuu。

1.6A3(2016-12-01)

错误修复:

  • 删除numpy(431)的意外硬要求。

包:

  • 将numpy放入名为“矢量化”(431)的可选需求集中。

1.6A2(2016-11-09)

错误修复:

  • 形状不再配置登录 geos.py (α415)。

重构:

  • 合并例外情况 shapely.errors .

  • UnsupportedGEOSVersionError 当geos<3.3.0(407)时升高。

包:

  • 增加了新的类库搜索路径以帮助 Python (413)。

  • 当没有设置GEOS配置env var时,现在将绕过GEOS配置。这允许在Linux系统上配置形状良好的构建,无论出于何种原因,这些系统都不包括geos-config程序(322)。

1.6A1(2016年9月14日)

新功能:

  • 当geos后端不支持调用的方法(216)时,将引发从notimplementederror派生的新错误,并显示一条更有用的消息。

  • 这个 project() LineString方法已扩展到线性化几何体(286)。

  • 一个新的 minimum_rotated_rectangle 属性已添加到基本几何体类()。

  • 一个新的 shapely.ops.polylabel() 已添加函数。它计算一个适合标记凹多边形的点(395)。

  • 一个新的 shapely.ops.split() 已添加函数。它通过另一个较小尺寸的几何体来分割一个几何体:一条线一条线,一点一条线(293,371)。

  • Polygon.from_bounds() 从边界坐标(392)构造多边形。

  • 增加了对numpy 1.4.1测试的支持(301)。

  • 支持从python对象的空列表(397,404)创建各种空几何图形。

重构:

  • 从开关 SingleSidedBuffer()OffsetCurve() 对于GEOS>=3.3(270)。

  • Cython加速现在默认启用(252)。

包:

  • 包装16.7是一种安装依赖项,由供应商提供(314)。

  • 增加了制造Manylinux1车轮的基础设施(391)。

  • 系统的 geos-config 程序现在只有在 setup.py 不会在模块的正常使用过程中执行(244)。

  • 添加新的库搜索路径以帮助pyinstaller(382)和windows(343)。

1.5.17(2016年8月31日)

  • 错误修复:消除gemo_factory()(408)中的内存泄漏。

  • 修正错误:去掉平行偏移中的负距离,注意右手偏移线的顶点是相反的(284)。

1.5.16(2016-05-26)

  • 错误修复:取消拾取几何对象时消除内存泄漏(384,385)。

  • 错误修复:在尝试酸洗准备好的几何图形时防止崩溃,提高 PicklingError 取而代之的是(α386)。

  • 打包:OS X轮子中的扩展模块现在只上载到pypi link libgeos_c.dylib(您可以使用 otool -L shapely/vectorized/_vectorized.so

1.5.15(2016年3月29日)

  • 错误修复:使用uintptr_t来存储指针,而不是在geos.pxi中使用long,以防止溢出错误(372,373)。请注意,此错误修复被错误地报告为在1.5.14中进行,但没有。

1.5.14(2016年3月27日)

  • 错误修复:使用 type() 而不是 isinstance() 在评估几何相等性时,防止基类和派生类的实例被误认为等于(317)。

  • 错误修复:确保在构造函数没有参数(332,333)时创建空几何图形。

  • 错误修复:通过不依赖 __file__ 属性(342,377)。

  • 错误修复:确保空多边形的计算结果为 == (α355)。

  • 错误修复:过滤掉在创建和加载strtrees(345,348)时可能导致segfaults的空几何体。

  • 错误修复:不再尝试重用已经由Rasterio或Fiona在OS X上加载的geos dll(374,375)。

1.5.13(2015年10月9日)

  • 将geos共享库的安装和运行时发现和加载恢复到版本1.5.9(326)时的状态。

  • 在OS X上,我们尝试重用可能通过导入fiona或rasterio加载的任何geos共享库,以避免涉及geos abstractstrtree(324,327)的错误。

1.5.12(2015年8月27日)

  • 从libgeos.py(312)中删除根记录器的配置。

  • 跳过Windows上的测试回退(308)。

  • 在删除区域设置测试(308)时,在Windows上调用setLocale(locale.lc ou all,“”),而不是resetlcale()。

  • 修复Sphinx警告(309)。

  • 将.cache,.idea,.pyd,.pdb添加到.gitignore(310)。

1.5.11(2015年8月23日)

  • 删除1.5.10(305)中增加的包装模块要求。distutils无法使用“rc”解析版本,但是如果我们坚持使用“a”和“b”,就可以了。

1.5.10(2015年8月22日)

  • 猴补丁亲合模块绝对参考(299)。

  • 提升relate()中的拓扑错误,而不是崩溃(294、295、303)。

1.5.9(2015年5月27日)

  • 修复64位加速兼容性(274)。

1.5.8(2015年4月29日)

  • 安装文件编码错误修复(254)。

  • 支持pyinstaller(261)。

  • 主要准备几何操作修复窗口(268,269)。

  • OS X二进制车轮的主要修复程序(262)。

1.5.7(2015年3月16日)

  • 测试并修复错误和通知处理程序(249)。

1.5.6(2015年2月2日)

  • 修正设置回归(232,234)。

  • SVG表示改进(233,237)。

1.5.5(2015年1月20日)

  • 要还原的清单更改geox.pxi(231)。

1.5.4(2015年1月19日)

  • 固定的OS X二进制车轮库加载路径(224)。

1.5.3(2015年1月12日)

  • 多边形(223)中的固定所有权和潜在内存泄漏。

  • 更广泛的释放双轮操作系统X。

1.5.2(2015年1月4日)

  • 如果不满足geos依赖项,安装失败,防止更新中断(218,219)。

1.5.1(2014年12月4日)

  • 恢复几何散列(209)。

1.5.0(2014年12月2日)

  • 仿射变换加速(197)。

  • new`=`丰富的比较(195)。

  • 几何集合构造函数(200)。

  • ops.snap()由geossnap(201)支持。

  • 拓扑无效情况下更清晰的例外(203)。

1.4.4(2014-11-02)

  • 将numpy float32 vals正确转换为coords(186)。

1.4.3(2014年10月1日)

  • 修正wkb writer中的endianness错误(174)。

1.4.2(2014年9月29日)

  • 固定栓1.4.1释放(176)。

1.4.1(2014年9月23日)

  • 返回对GEOS 3.2的支持(176,178)。

1.4.0(2014年9月8日)

  • IPython的内联图像协议的SVG表示。

  • 高效快速的矢量化contains()。

  • 将mitre_limit默认值更改为5.0;用0.0(139)提高valueerror。

  • 允许在加速的linestring ctor(152)中混合元组和点。

  • 新strtree类(73)。

  • 添加ops.nearest_points()(147)。

  • 更快地从其他对象(克隆)创建几何对象(165)。

  • 从包装中移除测试。

1.3.3(2014年7月23日)

  • 允许单个零件几何作为ops.cacacadded_union()(135)的参数。

  • 支持线性化(112)的仿射变换。

1.3.2(2014-05-13)

  • 让lineString()获取一系列点(130)。

1.3.1(2014年4月22日)

  • 退出时更可靠的代理清理(106)。

  • 在所有平台上加载更强大的DLL(114)。

1.3.0(2013年12月31日)

  • 包括对python 3.2和3.3(56)的支持,最低版本现在是2.6。

  • 切换到geos wkt/wkb reader/writer api,更改默认值以启用三维输出尺寸,并切换到“trim”wkt output for geos>=3.3.0。

  • 使用geos版本而不是geos c api版本来确定库功能(65)。

1.2.19(2013年12月30日)

  • 添加缓冲样式选项(55)。

1.2.18(2013年7月23日)

  • 添加shapely.ops.transform。

  • 允许集合构造函数中的空序列(49,50)。

  • 多多边形中的单个多边形。u geo_u interface_uuu更改为元组以匹配多边形。u geo_u interface_uuu(51)。

  • 添加shapely.ops.polygonize_full(57)。

1.2.17(2013-01-27)

  • 通过将对geos序列化程序的调用移动到后一个模块,避免在wkt/wkb和geometry.base之间进行循环导入。

  • 拆线时设置“NDIM”(问题6)。

  • 不要将DLL安装到python的dll目录(37)。

  • 添加仿射变换的亲和模块(31)。

  • 修复用pypy(40,41)阻止安装的名称错误。

1.2.16(2012年9月18日)

  • 添加ops.unary_union函数。

  • 当geos capi>=(1,7,0)时,别名ops.cascaded_union to ops.unary_union。

  • 将geos_version_string属性添加到shapely.geos。

  • 确保在访问子几何图形时设置父几何图形。

  • 当从repo构建时,如果缺少、过时或构建目标为“sdist”,则使用cython生成u speedups.c。

  • 无效的自相交线性环的is_简单谓词现在返回 False .

  • 从repo中删除version.txt,它现在由distutils安装脚本编写,值为shapely.uuuuversionuuuuuuuuuu。

1.2.15(2012年6月27日)

  • 在方法链接测试中消除数值敏感性(Debian Bug 663210)。

  • 说明随机缓冲测试点的级联联合是多边形或多多边形(Debian Bug_666655)。

  • 如果安装了Cython,可以使用它来加速。

  • 避免在geos c api版本字符串中绊倒SVN版本号。

1.2.14(2012年1月23日)

  • 几何图形的coords属性现在是可切片的,生成坐标值列表。

  • 同构集合现在是可切片的,生成一个相同类型的新集合。

1.2.13(2011年9月16日)

  • 修正了GEOS引用2GB以上内存时32位系统加速时的错误。

  • 添加形状。uu version_uuu属性。

  • 更新手册。

1.2.12(2011年8月15日)

  • 根据需要使用VC7或VC9构建Windows发行版。

  • 关于加速失败的详细报告。

  • 修复1.2.11中断裂的准备好的几何结构。

  • 不要安装1.2.11

1.2.11(2011年8月4日)

  • 退出时忽略attributeError。

  • PYPY 1.5支持。

  • 防止在准备好的几何破碎机上操作(12)。

  • 可选的Cython窗口加速。

  • Linux 3平台支持。

1.2.10(2011年5月9日)

  • 增加可选的赛马加速。

  • add is_cww谓词到linearing。

  • 添加强制多边形方向的函数。

  • 禁用在等待打包工作的Windows上生成加速。

1.2.9(2011年3月31日)

  • 删除额外的全局导入。

  • 将示例移动到shapely.examples。

  • 为矩形多边形添加box()构造函数。

  • 修复外来进口。

1.2.8(2011年12月3日)

  • 新的平行偏移法(6)。

  • 支持python 2.4。

1.2.7(2010-11-05)

  • 支持Windows鸡蛋。

1.2.6(2010年10月21日)

  • 空集合的gems属性生成[]而不是valueerror(3)。

  • 坐标和几何类型的属性具有与上面相同的行为。

  • 确保Z值贯彻到操作产品中(4)。

1.2.5(2010年9月19日)

  • 停止分发文档/构建。

  • 在Linux平台的test_dlls.py中包括库回退。

1.2.4(2010-09-09)

  • 当没有方法的后端支持时引发attributeError。

  • 如果无法找到并加载libgeos.so(或变体),则引发oserrror。

  • 在find_库不起作用的Linux平台上添加geos_c dll加载支持。

1.2.3(2010-08-17)

  • 添加映射函数。

  • 修复geos<3.1的geosvalidreason符号的问题。

1.2.2(2010年7月23日)

  • 添加代表性点法。

1.2.1(2010-06-23)

  • 奇异多边形的固定边界。

  • 添加了shapely.validation.explain validity函数(226)。

1.2(2010-05-27)

  • 最终版本。

1.2RC2(2010-05-26)

  • 将示例和测试添加到manifest.in。

  • 发布候选2。

1.2RC1(2010-05-25)

  • 发布候选。

1.2B7(2010年4月22日)

  • 与新的空几何体状态相关联的内存泄漏已修复。

1.2B6(2010年4月13日)

  • 已修复损坏的几何集合。

1.2B5(2010年4月9日)

  • 对象可以由同一类型的其他对象构造,从而进行复制。可以从对象序列构建集合,也可以进行复制。

  • 集合现在是其组件对象的迭代器。

  • 使用笛卡尔软件包的手动图形的新代码。

1.2B4(2010年3月19日)

  • 添加对“Sunos5”平台的支持。

1.2b3(2010年2月28日)

  • 仅提供GEOS C API>=1.5的简化实现。

1.2B2(2010年2月19日)

  • 修复1.2b1(212)中引入的级联_联合错误。

1.2b1(2010年2月18日)

  • 更新自述文件。从setup.py中删除cruft。添加一些1.2版本的元数据,这些元数据与所需的python版本(>=2.5,<3)和外部依赖关系(libgeos_c>=3.1)有关。

1.2A6(2010年2月9日)

  • 为x和y值的单独数组添加访问器(210)。

托多:在这里填补空白

1.2A1(2010年1月20日)

  • WKB编写器的正确原型设计,避免64位系统上的错误(191)。

  • 原型libgeos_c的功能可以让py2exe应用程序以适当的方式导入(189)。

1.2分支机构(2009-09-19)

1.0.12(2009年4月9日)

  • 修复拓扑和谓词描述符持有的引用。

1.0.11(2008年11月20日)

  • 在geos 2.2.3中解决bug,geoscoordseq getodinate未正确导出(178)。

1.0.10(2008年11月17日)

  • 修复了在1.0.8版本(176)中与geos 2.2.3的兼容性。

1.0.9(2008年11月16日)

  • 查找并加载MacPorts libgeos。

1.0.8(2008年11月1日)

  • 填写geos函数结果和参数类型,以防止64位拱门出现故障。

1.0.7(2008年8月22日)

  • 多边形环现在与父环的尺寸相同(168)。

  • 消除了多边形中的参考循环(169)。

1.0.6(2008年7月10日)

  • 固定多多边形数据的适应。

  • 在前面从二进制谓词引发异常。

  • 开始分发新的Windows DLL(166)。

1.0.5(2008年5月20日)

  • 增加了对地理多边形器功能的访问。

  • 将不足的坐标元组传递给Linearing构造函数(164)时引发异常。

1.0.4(2008-05-01)

  • 解开python和拓扑平等(163)。

  • add shape(),一个从地理接口提供程序复制坐标的工厂。除非您确实需要在外部形状存储坐标以便在其他代码中有效使用,否则将使用而不是asshape()。

  • 在适配器(163)中缓存地理几何图形。

1.0.3(2008年4月9日)

  • 调用geos函数时不要释放gil(158)。

  • 在链接多个GEO操作员时防止故障(159)。

1.0.2(2008年2月26日)

  • 修复多边形环的尺寸损失(155)。

1.0.1(2008年2月8日)

  • 允许链接涉及坐标序列和几何部分的表达式(151)。

  • 防止坐标访问器的异常使用(152)。

  • 坐标序列现在实现numpy数组协议(153)。

1.0(2008年1月18日)

  • 最终版本。

1.0 RC2(2008-01-16)

  • 为149添加临时解决方案。

1.0 RC1(2008-01-14)

  • 第一个候选版本

常见问题解答

我使用pip在conda环境中安装了Shapely。为什么不动呢?

小于2.0的Shapely版本使用ctype加载一个GEOS共享库。用户在其系统上拥有多个GEOS库副本的情况并不少见。加载正确的代码很复杂,而且有许多与平台相关的GEOS库加载错误。该项目在为从PyPI安装的Shape包查找正确的GEOS库方面的支持尤其不足 into 一个康达环境。我们建议Conda用户总是从Conda-Forge获得健康的身体。

shapely使用的算法有参考资料吗?

一般来说,shapely的谓词和操作都是从 GEOS 以及 JTS Topology Suite . 见 JTS FAQ 用于描述JTS算法的参考。

我在一个有Z坐标的几何体上使用了.buffer()。Z坐标到哪里去了?

中的缓冲区算法 GEOS 是纯二维的,并丢弃任何Z坐标。GEOS算法通常就是这样。