几何对象、谓词和操作
项目描述
笛卡尔平面中几何对象的操作和分析。
Shapely 是一个 BSD 许可的 Python 包,用于操作和分析平面几何对象。它基于广泛部署的GEOS(PostGIS的引擎)和JTS(从中移植 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
有关更多示例和指导,请参阅手册。
要求
匀称 1.8 要求
蟒蛇> = 3.6
GEOS >=3.3
匀称地安装
Shapely 可以从源分发或几种内置分发中的一种安装。
内置发行版
对于没有或不知道如何使用其平台的编译器和 Python SDK 的用户来说,内置发行版是唯一的选择,对于不想打扰的用户来说也是一个不错的选择。
Linux、OS X 和 Windows 用户可以使用最新版本的 pip (8+) 从 Python 包索引中获得带有 GEOS 的 Shapely Wheels:
$ pip install shapely
Shapely 可通过 apt、yum 和 Homebrew 等系统包管理工具获得,也由 Canopy 和 Anaconda 等流行的 Python 发行版提供。如果您使用 Conda 包管理器安装 Shapely,请务必使用 conda-forge 通道。
Windows 用户还有另一个不错的安装选项: https ://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely 上发布的轮子。这些可以通过指定整个 URL 使用 pip 安装。
源分布
如果您想从源代码构建 Shapely 以与依赖于 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 还可以使用类似 GeoJSON 的 dicts 与其他 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]}
开发和测试
开发 Shapely 的依赖项列在 requirements-dev.txt 中。生产安装不需要 Cython 和 Numpy,仅用于开发。强烈建议使用虚拟环境。
$ virtualenv .
$ source bin/activate
(env)$ pip install -r requirements-dev.txt
(env)$ pip install -e .
该项目使用 pytest 来运行 Shapely 的单元测试和文档测试套件。
(env)$ python -m pytest
支持
可以在GIS StackExchange上使用“shapely”标签询问有关使用 Shapely 的问题。
学分
Shapely由以下人员编写:
Adi Shavit < adishavit @ gmail 。com >
阿尔贝托·鲁比亚莱斯 < arubiales11 @ gmail 。com >
艾伦·阿代尔 <艾伦. 米。阿代尔@gmail 。com >
安德鲁·布莱基 < ablakey @ gmail 。com >
安迪弗里兰< andy @ andyfreeland 。净>
爱丽儿卡多里<爱丽儿@arielsartistry 。com >
Aron Bierbaum < aronbierbaum @ gmail 。com >
Bart Broere < 2715782+bartbroere @用户。不回复。github 。com >
Bas Couwenberg < sebastic @ xs4all 。nl >
本比斯利<代码@musicinmybrain。净>
本杰明·鲁特 <本。诉_ 根@gmail 。 _ com >
伯特兰热维斯 <伯特兰。热尔维斯 亲@gmail 。 _ com >
Bhavika Tekwani < 4955119+bhavika @用户。不回复。github 。com >
Bi0T1N < Bi0T1N @用户。不回复。github 。com >
布兰登伍德< btwood @ geometeor 。com >
查德霍金斯< cwh @ chadwhawkins 。com >
基督教先验< cprior @ gmail 。com >
基督教探索 < github @ cquest 。组织>
克里斯托夫·普拉达尔 <克里斯托夫. 普拉达尔@inria 。 _ FR >
丹巴斯顿< dbaston @ gmail 。com >
丹马尔< danmahr23 @ gmail 。com >
Daniele Esposti < expobrain @ users 。不回复。github 。com >
David Swinkels < davidswinkelss @ gmail 。com >
丹尼斯·里科夫 < rykovd @ gmail 。com >
欧文·斯特伦堡 < e . w 。斯特伦堡@gmail 。com >
Felix Divo < 4403130+felixdivo @ users 。不回复。github 。com >
Felix Yan< felixonmars @ archlinux 。组织>
菲利普费尔南德斯 < ocefpaf @ gmail 。com >
弗雷德里克朱诺 <弗雷德里克. 朱诺@camptocamp 。_ com >
加比·达瓦尔 <灰熊。尼奥@gmail 。_ com >
汉内斯< kannes @用户。不回复。github 。com >
亨利沃尔肖 <亨利. 沃尔肖@gmail 。 _ com >
霍华德·巴特勒 < hobu . 公司@gmail 。 _ com >
雅各布·瓦瑟曼 < jwasserman @ gmail 。com >
Jaeha Lee < jaehaaheaj @ gmail 。com >
詹姆斯·道格拉斯 < jamesdouglassusa @ gmail 。com >
James Gaboardi < jgaboardi @ gmail 。com >
詹姆斯·兰姆 < jaylamb20 @ gmail 。com >
詹姆斯麦克布莱德< jdmcbr @ gmail 。com >
詹姆斯斯宾塞 <詹姆斯. 小号_ 斯宾塞@gmail 。 _ com >
杰米霍尔< jamie1212 @ gmail 。com >
杰森桑福德 <杰森. 桑福德@mapmyfitness 。_ com >
Jeethu Rao< jeethu @ jeethurao . com >
Jeremiah England < 34973839+Jeremiah-England @ users 。不回复。github 。com >
王金坤< mejkunw @ gmail 。com >
约翰 Euphrosine < proppy @ aminche 。com >
约翰内斯 Schönberger < jschoenberger @ demuc 。德>
乔纳森 Schoonhoven < jschoonhoven @ lyft 。com >
Joris Van den Bossche < jorisvandenbossche @ gmail 。com >
约书亚·阿诺特 < josh @ snorfalorpagus 。净>
胡安·路易斯·卡诺·罗德里格斯 < juanlu @ satellogic 。com >
贾斯汀申克 <申克。贾斯汀@gmail 。 _ com >
Kai Lautaportti < dokai @ b426a367-1105-0410-b9ff-cdf4ab011145 >
凯尔西·乔达尔< kjordahl @ enthought 。com >
凯文·沃斯特 < wursterk @ gmail 。com >
康斯坦丁 Veretennicov < kveretennicov @ gmail 。com >
Koshy Thomas < koshy1123 @ gmail 。com >
克里斯蒂安·埃弗斯 < kristianevers @ gmail 。com >
凯尔巴伦< kylebarron2 @ gmail 。com >
莱安德罗·利马 < leadro @ limaesilva 。com 。br >
卢卡斯 < uhho @ users 。不回复。github 。com >
卢克·李 < durdenmisc @ gmail 。com >
Maarten Vermeyen <马丁. vermeyen @ rwo 。弗兰德伦_ 成为>
马克·詹森<詹森@terrestris 。德>
Marco De Nadai <我@marcodena。它>
马修 <马修。尼维尔@gmail 。_ com >
马特阿莫斯<马特。阿莫斯@mapzen 。_ com >
马蒂亚斯·坎茨 < mcuntz @用户。不回复。github 。com >
MejstrikRudolf < 68251685+MejstrikRudolf @用户。不回复。github 。com >
迈克尔 K <迈克尔-K @用户。不回复。github 。com >
米歇尔布兰卡德 <米歇尔。布兰卡@数据。古夫。FR >
迈克·塔夫斯 < mwtoews @ gmail 。com >
莫里斯花呢 <花呢。莫里斯@gmail 。 _ com >
Naveen Michaud-Agrawal < naveen . michaudagrawal @ gmail 。com >
奥利弗 Tonnhofer < olt @ bogosoft 。com >
Paveł Tyślacki < tbicr @ users 。不回复。github 。com >
彼得·萨格森 < psagers 。github @忽略。净>
菲尔·埃尔森 <佩尔森。酒吧@gmail 。 _ com >
皮埃尔·帕奇< villerupt @ gmail 。com >
Raja Gangopadhya < raja . gangopadhya @ridewithvia 。 _ com >
Ricardo Zilleruelo < 51384295+zetaatlyft @ users 。不回复。github 。com >
人头马Phelipot < remy-phelipot @用户。不回复。github 。com >
S Murthy < sr-murthy @ users 。不回复。github 。com >
Sampo Syrjanen < sampo . syrjanen @这里。com >
Samuel Chin < samuelchin91 @ gmail 。com >
肖恩·吉利斯 <肖恩. 吉利斯@gmail 。_ com >
索博列夫尼基塔<邮件@sobolevn。我>
Stephan Hügel < urschrei @ gmail 。com >
史蒂夫 M. 金<史蒂夫@气候。com >
又名松泽太郎。btm < btm @技术。电子邮件。奈。日本>
Thibault Deutsch <蒂博。德语@gmail 。_ com >
托马斯格拉蒂尔< thomas_gratier @雅虎。FR >
Thomas Kluyver < takowl @ gmail 。com >
蒂姆·盖茨 <蒂姆。盖茨@iress 。 _ com >
托拜厄斯绍尔温 <托拜厄斯. sauerwein @ camptocamp 。com >
汤姆卡鲁索 < carusot42 @ gmail 。com >
汤姆克兰西 < 17627475+clncy @用户。不回复。github 。com >
王爱勇< gepcelway @ gmail 。com >
将五月< williamcmay @ live 。com >
扎卡里洁具 <扎卡里。洁具@gmail 。 _ com >
aharfoot < aharfoot @用户。不回复。github 。com >
bstadlbauer < 11799671+bstadlbauer @用户。不回复。github 。com >
克劳斯<克劳斯@我。com >
clefrks < 33859587+clefrks @用户。不回复。github 。com >
大卫-ssec <大卫. 锄头@ssec 。_ 威斯克_ 教育>
georgeouzou < geothrock @ gmail 。com >
giumas < gmasetti @ ccom 。嗯。教育>
joelostblom < joelostblom @用户。不回复。github 。com >
ljwolf <列维。约翰_ 狼@gmail 。 _ com >
心灵<灰熊。尼奥@gmail 。_ com >
rsmb < rsmb @用户。不回复。github 。com >
shongololo < garethsimons @ me 。com >
solarjoe < walterwhite666 @ googlemail 。com >
sshuair < sshuair @ gmail 。com >
斯蒂芬沃斯利 < 49274989+斯蒂芬沃斯利@用户。不回复。github 。com >
另请参阅:https ://github.com/shapely/shapely/graphs/contributors 。
其他帮助来自:
Justin Bronn (GeoDjango) 获取 ctypes 的灵感
马丁戴维斯 (JTS)
Sandro Santilli、Mateusz Loskot、Paul Ramsey 等人(GEOS 项目)
这项工作的主要部分得到了美国国家人文基金会 ( https://www.neh.gov ) 的资助(用于Pleiades)。
变化
1.8.4 (2022-08-17)
Bug修复:
新的 c_geom_p 类型导致回归并已被删除 (#1487)。
1.8.3 (2022-08-16)
弃用:
STRtree 类将在 2.0.0 中更改,并且与 1.8.x 版本中的类不兼容。此更改废弃了 1.8a3(下)中的弃用公告。
打包:
PyPI 上发布的 1.8.3 的轮子包括 GEOS 3.10.3。
Bug修复:
GEOSMinimumClearance 的签名已更正,修复了影响 aarch64-darwin 的问题 (#1480)
更正了返回和 arg 类型,并对面积、长度和距离属性进行了更严格的处理。
在调用 GEOS 函数时创建了一个新的 c_geom_p 类型来替换 c_void_p (#1479)。
GEOS 3.10.3 中修复了一个不正确的多边形线交叉点 (#1427),它将包含在发布到 PyPI 的轮子中。
GEOS 缓冲区参数现在被破坏,修复了内存泄漏 (#1440)。
1.8.2 (2022-05-03)
使多边形和多多边形按定义闭合,如线性环。解决#1246。
在 macos 上执行 conda env 检查之前对 GEOS 执行冻结的应用程序检查,就像我们在 linux 上所做的一样 (#1301)。
修复 #1098 中报告的最近点中 GEOS 坐标序列的泄漏。
1.8.1.post1 (2022-02-17)
此发布后解决了 1.8.1 源代码分发中的一个缺陷。1.8.1.post1 sdist 中不包含 .c 文件,并且需要 Cython 从源代码构建和安装。
1.8.1 (2022-02-16)
打包:
PyPI 上发布的 1.8.1 的轮子包括 GEOS 3.10.2。这个版本是迄今为止最好的 GEOS 版本。与以前版本相比的行为差异被认为是改进。
我们将首次发布 macos_arm64 的轮子(请参阅 PR #1310)。
Python版本支持:
Shapely 1.8.1 适用于 Python 3.6-3.10。
Bug修复:
需要 Cython >= 0.29.24 以支持 Python 3.10 (#1224)。
修复 array_interface_base (#1235)。
1.8.0 (2021-10-25)
这是最终的 1.8.0 版本。自 1.8rc2 以来没有任何变化。
1.8rc2 (2021-10-19)
建造:
添加了一个 pyproject.toml 文件来指定 _vectorized 和 _speedups 模块的构建依赖项(#1128)。要在没有这些构建依赖项的情况下顺利安装,请使用禁用 PEP 517 和 518 支持的构建工具的功能。
Bug修复:
PR #1042 的一部分,它添加了一个新的主要 GEOS 库名称以供搜索,已被 PR #1201 还原。
1.8rc1 (2021-10-04)
弃用:
BaseGeometry 的 most_exact() 方法已被弃用。它令人困惑,将在 2.0.0 中删除。而是使用 equals_exact() 方法。
Bug修复:
我们确保始终在 _vectorized 之前导入 _speedups 模块,以避免在 Windows 上使用 Python 3.8 和 3.9 (#1184) 出现无法解释的情况。
1.8a3 (2021-08-24)
弃用:
STRtree 类弃用警告已被删除。2.0.0 中的类将向后兼容 1.8.0 中的类。
Bug修复:
__array_interface__ 仅引发 AttributeError,从 Numpy 1.21 (#1173) 开始不推荐使用所有其他异常。
STRtree 类现在在内部使用一对 item、geom 序列而不是 dict (#1177)。
1.8a2 (2021-07-15)
Python版本支持:
Shapely 1.8 将仅支持 Python 版本 >= 3.6。
新的功能:
STRtree 最近*() 方法现在采用一个可选参数,指定从结果中排除输入几何 (#1115)。
GeometryTypeError 已添加到 shapely.errors 中,并且会持续引发,而不是 1.7 版中的 TypeError 或 ValueError。为了向后兼容,新异常将派生自 TypeError 和 Value 错误,直到版本 2.0 (#1099)。
STRtree 类构造函数现在采用可选的第二个参数,即要存储在树中的对象序列。如果没有提供,几何的序列索引将像以前一样被存储(#1112)。
STRtree 类具有新的 query_geoms()、query_items()、nearest_geom() 和nearest_item() 方法 (#1112)。query() 和nearest() 方法仍然是query_geoms() 和nearest_geom() 的别名。
Bug修复:
我们不再尝试加载 libc 来获取 Linux 上的 free 函数,而是从全局符号表中获取。
GEOS_getCoordSeq() 传递空几何时打印的 GEOS 错误消息通过从不传递空几何 (#1134) 来避免。
Python 的内置 super() 现在仅按照 PEP 3135 (#1109) 中的描述使用。
如果 conda GEOS dll 存在(在 Windows 上),则仅加载它(#1108)。
将 /opt/homebrew/lib 添加到要搜索 GEOS 共享库的目录列表中。
添加了新的库搜索路径以帮助使用 cx_Freeze 创建应用程序。
1.8a1 (2021-03-03)
Shapely 1.8.0 将是一个过渡版本。有一些错误修复和新功能,但主要是关于 2.0.0 中即将发生的更改的警告。预计 1.8.0 之前还有几个预发布版本。有关如何更新代码的更多详细信息,请参阅 Shapely 1.8 / 2.0 的迁移指南 ( https://shapely.readthedocs.io/en/latest/migration.html )。
Python版本支持:
Shapely 1.8 将仅支持 Python 版本 >= 3.5 (#884)。
弃用:
以下函数和几何属性和方法将在 2.0.0 版本中删除。
ops.cascaded_union
几何 .empty()
几何 .ctypes 和 .__array_interface__
多部分几何.__len__
在几何对象上设置自定义属性
几何对象将在 2.0.0 版本中变得不可变。
STRtree 类将在 2.0.0 中完全改变。确切的未来 API 尚未确定,但将在 1.8.0 发布之前确定。
当使用这些功能中的任何一个时,将在 1.8a1 中发出弃用警告。
几何对象上已弃用的 .to_wkb() 和 .to_wkt() 方法已被删除。
新的功能:
向几何类添加 normalize() 方法,公开 GEOSNormalize 算法 (#1090)。
初始化 STRtree,每个节点的容量为 10 个项目 (#1070)。
通过 auditwheel 版本 < 3.1 重新定位到 shapely/.libs 或通过 auditwheel 版本 >= 3.1 重新定位到 Shapely.libs 的加载库。
shapely.ops.voronoi_diagram() 计算几何或几何集合的 Voronoi 图(#833、#851)。
shapely.validation.make_valid() 修复无效的几何图形 (#883)
Bug修复:
对于 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__()中 ,当 lgeos 模块在退出时已被拆除(#897、#830)时,我们防止调用GEOSSTRtree_destroy 。
更正了重叠()方法的文档(#920)。
更正shapely.geometry.base.BaseGeometry.empty()中的测试,以消除内存泄漏,就像 #745 中报告的那样。
不是从 libc 而是从进程全局符号 (#891) 中获取 free(),修复了在 OS X 10.15 和 10.16 上出现的错误。
从复杂行中提取子字符串变得更加正确(#848、#849)。
通过准备输入几何 (#871) 加快了复杂几何的拆分。
修复函数 argtypes 连接中的错误 (#866)。
改进了 STRtree 使用的文档 (#857)。
改进了对 GeoJSON 坐标中的空列表或列表列表的处理 (#852)。
多标签算法现在考虑了多边形孔(#851,#817)。
1.7.0 (2020-01-28)
这是最终的 1.7.0 版本。自 1.7b1 以来没有任何变化。
1.7b1 (2020-01-13)
第一个测试版。
1.7a3 (2019-12-31)
新的功能:
缓冲操作现在可以是单面的(#806、#727)。
Bug修复:
将 /usr/local/lib 添加到要搜索 GEOS 共享库的目录列表 (#795)。
当给定一个大于结束位置的开始位置时,ops.substring 现在会返回一条以端到端顺序排列的坐标行 (#628)。
为几何基类实现__bool__()以便bool(geom)返回geom.is_empty (#754) 的逻辑补码。
删除对在 GEOS 版本字符串中找到的类似版本的字符串数量的断言。它可能是 2 或 3。
1.7a2 (2019-06-21)
最近邻搜索已添加到 STRtree (#668)。
不允许 MultiPolygon 序列作为 MultiPolygon 构造函数的参数,解决 #588。
删除了以前用于支持 Python 2.5 的供应商化functools函数。
Bug修复:
在 OS X (#735) 上使用已安装的二进制轮时避免重新加载 GEOS 共享库,解决问题 #553。
shapely.ops.orient 函数现在可以定向多个多边形和几何集合以及多边形(#733)。
现在可以从点对象序列以及 x、y 序列序列构建多边形 (#732)。
空多边形的外部现在等于空线性环 (#731)。
空点对象的 bounds 属性现在返回一个空元组,与其他几何类型一致 (#723)。
#700 避免了将非字符串值传递给 WKT 加载器时的分段错误。
当子线串与线串的开头重合时, ops.substring 的失败已得到修复 (#658)。
#655 防止了在空线串上插值的分段错误。
多标签算法(#644)中添加了矩形多边形缺失的特殊情况。
LinearRing 可以从 LineString (#638) 创建。
准备好的几何验证条件已在 #632 中收紧,以修复 #631 中报告的错误。
尝试插入空几何不再导致分段错误,而是引发ValueError (#653)。
1.7a1 (2018-07-29)
新的功能:
Python 版本检查由包设置脚本进行。Shapely 1.7 仅支持 Python 版本 2.7 和 3.4+ (#610)。
添加了一个新的EmptyGeometry类来支持 GeoPandas (#514)。
添加了新的shapely.ops.substring函数 (#459)。
添加了新的shapely.ops.clip_by_rect函数 (#583)。
使用 sys._MEIPASS' 中指示的 DLL 来支持 PyInstaller 冻结的应用程序 (#523)。
shapely.wkb.dumps现在接受srid整数关键字参数来写入 WKB 数据,包括输出数据中的空间参考 ID (#593)。
Bug修复:
shapely.geometry.shape现在可以编组空的 GeoJSON 表示 (#573)。
尝试准备PreparedGeometry (#577, #595)时会 引发异常。
关键字参数已从几何对象的wkt属性获取器中删除(#581、#594)。
1.6.4.post1 (2018-01-24)
修复此更改日志中损坏的标记,从而恢复我们在 PyPI 上格式良好的自述文件。
1.6.4 (2018-01-24)
处理几何体被拆除时可能发生的TypeError (#473, #528)。
1.6.3 (2017-12-09)
访问空多边形的 __geo_interface__ 时不再引发 AttributeError (#450)。
asShape现在像shape一样处理映射中的空坐标(#542)。请注意,asShape可能会在 Shapely 的未来版本中被弃用。
在速度模式下检查 LineString 坐标的长度,防止在使用只有一个坐标的 LineStrings 时发生崩溃 (#546)。
1.6.2 (2017-10-30)
已发布 1.6.2.post1 版本以解决上传到 PyPI 的 macosx 轮子的问题。
1.6.2 (2017-10-26)
现在将线串按其端点之一拆分将成功,而不是因ValueError失败(#524,#533)。
添加了缺少几何重叠谓词的文档 (#522)。
1.6.1 (2017-09-01)
通过维护对添加的几何图形的引用,避免由于悬空引用(#505)导致STRTree崩溃。
当报告对 ctypes CDLL()的调用不成功并被重试时,降低日志级别以进行调试 (#515)。
澄清:像 GeoPandas 这样需要空几何对象的应用程序应该使用BaseGeometry()而不是Point()或Polygon()。在主开发分支中添加了一个 EmptyGeometry类,并将在下一个非错误修复版本中提供。
1.6.0 (2017-08-21)
Shapely 1.6.0 为现有几何类添加了新属性,并将新函数(split()和polylabel())添加到 shapely.ops 模块。异常被合并到 shapely.errors 模块中,并且日志记录实践得到了改进。Shapely 的依赖于 Numpy 的可选功能现在被收集到一个名为“vectorized”的需求集中,这些可以像pip install shapely[vectorized]一样安装。
1.6.0 的大部分工作旨在改进项目的构建和打包脚本,并最大限度地减少运行时依赖性。现在,Shapely 将打包打包以仅在构建期间使用,并且不再在运行时调用 geos-config 实用程序。
除了下面列出的 alpha 和 beta 预发布的更改之外,该项目还进行了以下更改:
项目文档现在托管在 https://shapely.readthedocs.io/en/latest/上。
感谢大家使用、推广和贡献 Shapely 项目。
1.6b5 (2017-08-18)
Bug修复:
现在,在禁用加速的情况下将单个坐标传递给LineString()会引发 ValueError,就像启用加速时一样。这解决了#509。
1.6b4 (2017-02-15)
Bug修复:
隔离 _vendor 目录中的供应商包装,删除过时的 dist-info,并从项目需求中删除包装(解决 #468)。
1.6b3 (2016-12-31)
Bug修复:
源自 GEOS 通知处理程序的日志消息级别从 WARNING 降低到 INFO (#447)。
允许在没有 Numpy 的情况下再次导入加速 (#444)。
1.6b2 (2016-12-12)
新的功能:
添加对 GeometryCollection 到 shape 和 asShape 函数的支持 (#422)。
1.6b1 (2016-12-12)
Bug修复:
为空点和线串实现了 __array_interface__ (#403)。
1.6a3 (2016-12-01)
Bug修复:
删除 Numpy (#431) 的意外硬要求。
打包:
将 Numpy 放入名为“vectorized”的可选需求集中(#431)。
1.6a2 (2016-11-09)
Bug修复:
Shapely 不再配置登录geos.py (#415)。
重构:
合并shapely.errors中的异常。
当 GEOS < 3.3.0 (#407) 时会引发UnsupportedGEOSVersionError 。
打包:
添加了新的库搜索路径以协助 Anaconda (#413)。
现在,当设置 NO_GEOS_CONFIG 环境变量时,将绕过 geos-config。这允许在不包括 geos-config 程序 (#322) 的 Linux 系统上配置 Shapely 构建。
1.6a1 (2016-09-14)
新的功能:
当 GEOS 后端不支持调用的方法 (#216) 时,会引发从 NotImplementedError 派生的新错误,并提供更有用的消息。
LineString的project()方法已扩展到 LinearRing 几何图形 (#286)。
新的minimum_rotated_rectangle属性已添加到基本几何类 (#354)。
添加了一个新的shapely.ops.polylabel()函数。它计算一个适合标记凹多边形的点(#395)。
添加了一个新的shapely.ops.split()函数。它通过另一个较小尺寸的几何体分割一个几何体:逐线、逐线(#293、#371)。
Polygon.from_bounds()从边界坐标(#392)构造一个多边形。
添加了对使用 Numpy 1.4.1 进行测试的支持 (#301)。
支持从 Python 对象的空列表(#397、#404)创建各种空几何。
重构:
对于 GEOS >= 3.3 (#270),从SingleSidedBuffer()切换到OffsetCurve( )。
Cython 加速现在默认启用 (#252)。
打包:
打包 16.7 是一个设置依赖项,已供应商化 (#314)。
添加了用于构建 manylinux1 轮子的基础设施 (#391)。
系统的geos-config程序现在只在setup.py 执行时检查,在模块的正常使用期间从不检查 (#244)。
添加了新的库搜索路径以协助 PyInstaller (#382) 和 Windows (#343)。
1.5.17 (2016-08-31)
错误修复:消除 geom_factory() (#408) 中的内存泄漏。
错误修复:删除 parallel_offset 中负距离的提及,并注意右手偏移线的顶点是反转的 (#284)。
1.5.16 (2016-05-26)
错误修复:消除几何对象时的内存泄漏(#384、#385)。
错误修复:在尝试腌制准备好的几何图形时防止崩溃,改为引发PicklingError (#386)。
打包:OS X 轮子中的扩展模块现在仅上传到 PyPI 链接 libgeos_c.dylib(您可以使用 otool -L shapely /vectorized/_vectorized.so验证并与以前的版本进行比较)。
1.5.15 (2016-03-29)
错误修复:使用 uintptr_t 在 _geos.pxi 中存储指针而不是 long,防止溢出错误 (#372, #373)。请注意,此错误修复被错误地报告为已在 1.5.14 中进行,但事实并非如此。
1.5.14 (2016-03-27)
错误修复:在评估几何相等时使用type()而不是isinstance(),防止基类和派生类的实例被误认为相等 (#317)。
错误修复:确保在构造函数没有参数时创建空几何(#332,#333)。
错误修复:通过不依赖 __file__属性(#342、#377)更好地支持 Windows 上的应用程序“冻结”。
错误修复:确保空多边形评估为== (#355)。
错误修复:在创建和加载 STRtree 时过滤掉可能导致段错误的空几何(#345、#348)。
错误修复:不再尝试在 OS X 上重用已由 Rasterio 或 Fiona 加载的 GEOS DLL(#374、#375)。
1.5.13 (2015-10-09)
将 GEOS 共享库的设置和运行时发现以及加载恢复到版本 1.5.9 (#326) 的状态。
在 OS X 上,我们尝试重用任何可能通过导入 Fiona 或 Rasterio 加载的 GEOS 共享库,以避免涉及 GEOS AbstractSTRtree (#324, #327) 的错误。
1.5.12 (2015-08-27)
从 libgeos.py (#312) 中删除根记录器的配置。
在 Windows 上跳过 test_fallbacks (#308)。
拆除语言环境测试时,在 Windows 上调用 setlocale(locale.LC_ALL, “”) 而不是 resetlocale() (#308)。
修复 Sphinx 警告 (#309)。
添加 .cache、.idea、.pyd、.pdb 到 .gitignore (#310)。
1.5.11 (2015-08-23)
删除 1.5.10 (#305) 中添加的打包模块要求。Distutils 无法使用 'rc' 解析版本,但如果我们坚持使用 'a' 和 'b' 就可以了。
1.5.10 (2015-08-22)
绝对引用的猴子补丁亲和性模块 (#299)。
在相关()中引发 TopologicalError 而不是崩溃(#294、#295、#303)。
1.5.9 (2015-05-27)
修复 64 位加速兼容性 (#274)。
1.5.8 (2015-04-29)
设置文件编码错误修复 (#254)。
支持 pyinstaller (#261)。
为 Windows 准备的主要几何操作修复 (#268, #269)。
OS X 二进制轮的主要修复 (#262)。
1.5.7 (2015-03-16)
测试和修复有缺陷的错误和通知处理程序 (#249)。
1.5.6 (2015-02-02)
修复设置回归(#232、#234)。
SVG 表示改进(#233、#237)。
1.5.5 (2015-01-20)
MANIFEST 更改以恢复 _geox.pxi (#231)。
1.5.4 (2015-01-19)
修复了 OS X 二进制轮库加载路径 (#224)。
1.5.3 (2015-01-12)
修复了多边形化(#223)中的所有权和潜在的内存泄漏。
为 OS X 更广泛地发布二进制轮子。
1.5.2 (2015-01-04)
如果不满足 GEOS 依赖项,则安装失败,防止更新损坏(#218,#219)。
1.5.1 (2014-12-04)
恢复几何散列(#209)。
1.5.0 (2014-12-02)
仿射变换加速(#197)。
新==丰富的比较 (#195)。
几何集合构造函数(#200)。
由 GEOSSnap (#201) 支持的 ops.snap()。
在拓扑无效的情况下更清晰的异常(#203)。
1.4.4 (2014-11-02)
将 numpy float32 val 正确转换为坐标 (#186)。
1.4.3 (2014-10-01)
修复 WKB 编写器中的字节顺序错误 (#174)。
1.4.2 (2014-09-29)
修复失败的 1.4.1 版本 (#176)。
1.4.1 (2014-09-23)
恢复对 GEOS 3.2 的支持(#176、#178)。
1.4.0 (2014-09-08)
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-07-23)
允许单部分几何体作为 ops.cacaded_union() (#135) 的参数。
支持 LinearRings (#112) 的仿射变换。
1.3.2 (2014-05-13)
让 LineString() 采用一系列点 (#130)。
1.3.1 (2014-04-22)
退出时更可靠的代理清理 (#106)。
在所有平台上加载更强大的 DLL (#114)。
1.3.0 (2013-12-31)
包括对 Python 3.2 和 3.3 (#56) 的支持,最低版本现在是 2.6。
切换到 GEOS WKT/WKB 读取器/写入器 API,将默认值更改为启用 3D 输出尺寸,并为 GEOS >=3.3.0“修剪”WKT 输出。
使用 GEOS 版本而不是 GEOS C API 版本来确定库功能(#65)。
1.2.19 (2013-12-30)
添加缓冲样式选项(#55)。
1.2.18 (2013-07-23)
添加 shapely.ops.transform。
在集合构造函数中允许空序列(#49、#50)。
MultiPolygon.__geo_interface__ 中的单个多边形更改为元组以匹配 Polygon.__geo_interface__ (#51)。
添加 shapely.ops.polygonize_full (#57)。
1.2.17 (2013-01-27)
通过将对 GEOS 序列化程序的调用移至后一个模块,避免 wkt/wkb 和 geometry.base 之间的循环导入。
在 unpickling 时设置 _ndim(问题 #6)。
不要将 DLL 安装到 Python 的 DLL 目录 (#37)。
添加仿射变换的亲和模块(#31)。
修复阻止使用 PyPy 安装的 NameError(#40、#41)。
1.2.16 (2012-09-18)
添加 ops.unary_union 函数。
当 GEOS CAPI >= (1,7,0) 时,将 ops.cascaded_union 别名为 ops.unary_union。
将 geos_version_string 属性添加到 shapely.geos。
确保在访问子几何时设置了父级。
在缺少、陈旧或构建目标为“sdist”时从 repo 构建时使用 Cython 生成 _speedups.c。
无效的自相交线性环的 is_simple 谓词现在返回False。
从 repo 中删除 VERSION.txt,它现在由 distutils 设置脚本编写,值为 shapely.__version__。
1.2.15 (2012-06-27)
消除方法链测试中的数值敏感性(Debian 错误 #663210)。
将随机缓冲测试点的级联并集考虑为多边形或多多边形(Debian 错误 #666655)。
如果安装了 Cython,请使用它来构建加速。
避免在 GEOS C API 版本字符串中遇到 SVN 修订号。
1.2.14 (2012-01-23)
几何图形的 coords 属性现在是可切片的,产生一个坐标值列表。
同构集合现在可以切片,产生相同类型的新集合。
1.2.13 (2011-09-16)
修复了 GEOS 引用超过 2GB 的内存时 32 位系统的加速错误。
添加 shapely.__version__ 属性。
更新手册。
1.2.12 (2011-08-15)
根据需要使用 VC7 或 VC9 构建 Windows 发行版。
关于加速失败的更详细的报告。
修复了在 1.2.11 中损坏的准备好的几何图形。
不要安装 1.2.11
1.2.11 (2011-08-04)
退出期间忽略 AttributeError。
PyPy 1.5 支持。
防止对准备好的几何破坏器(#12)进行操作。
适用于 Windows 的可选 Cython 加速。
Linux 3 平台支持。
1.2.10 (2011-05-09)
添加可选的 Cython 加速。
将 is_cww 谓词添加到 LinearRing。
添加强制多边形方向的功能。
在 Windows 待处理的打包工作上禁用加速构建。
1.2.9 (2011-03-31)
删除额外的 glob 导入。
将示例移至 shapely.examples。
为矩形多边形添加 box() 构造函数。
修复无关的导入。
1.2.8 (2011-12-03)
新的 parallel_offset 方法(#6)。
支持 Python 2.4。
1.2.7 (2010-11-05)
支持 Windows 鸡蛋。
1.2.6 (2010-10-21)
空集合的 geoms 属性产生 [] 而