1Metadata-Version: 2.1 2Name: Shapely 3Version: 1.8.0 4Summary: Geometric objects, predicates, and operations 5Home-page: https://github.com/Toblerity/Shapely 6Author: Sean Gillies 7Author-email: sean.gillies@gmail.com 8Maintainer: Sean Gillies 9Maintainer-email: sean.gillies@gmail.com 10License: BSD 11Description: ======= 12 Shapely 13 ======= 14 15 |github-actions| |appveyor| |coveralls| 16 17 .. |github-actions| image:: https://github.com/Toblerity/Shapely/workflows/Tests%20(Linux)/badge.svg 18 :target: https://github.com/Toblerity/Shapely/actions 19 20 .. |appveyor| image:: https://ci.appveyor.com/api/projects/status/github/Toblerity/Shapely?branch=master&svg=true 21 :target: https://ci.appveyor.com/project/frsci/shapely?branch=master 22 23 .. |coveralls| image:: https://coveralls.io/repos/github/Toblerity/Shapely/badge.svg?branch=master 24 :target: https://coveralls.io/github/Toblerity/Shapely?branch=master 25 26 Manipulation and analysis of geometric objects in the Cartesian plane. 27 28 .. image:: https://c2.staticflickr.com/6/5560/31301790086_b3472ea4e9_c.jpg 29 :width: 800 30 :height: 378 31 32 Shapely is a BSD-licensed Python package for manipulation and analysis of 33 planar geometric objects. It is based on the widely deployed `GEOS 34 <https://trac.osgeo.org/geos/>`__ (the engine of `PostGIS 35 <http://postgis.org>`__) and `JTS 36 <https://locationtech.github.io/jts/>`__ (from which GEOS is ported) 37 libraries. Shapely is not concerned with data formats or coordinate systems, 38 but can be readily integrated with packages that are. For more details, see: 39 40 * `Shapely GitHub repository <https://github.com/Toblerity/Shapely>`__ 41 * `Shapely documentation and manual <https://shapely.readthedocs.io/en/latest/>`__ 42 43 Usage 44 ===== 45 46 Here is the canonical example of building an approximately circular patch by 47 buffering a point. 48 49 .. code-block:: pycon 50 51 >>> from shapely.geometry import Point 52 >>> patch = Point(0.0, 0.0).buffer(10.0) 53 >>> patch 54 <shapely.geometry.polygon.Polygon object at 0x...> 55 >>> patch.area 56 313.65484905459385 57 58 See the manual for more examples and guidance. 59 60 Requirements 61 ============ 62 63 Shapely 1.8 requires 64 65 * Python >=3.6 66 * GEOS >=3.3 67 68 Installing Shapely 69 ================== 70 71 Shapely may be installed from a source distribution or one of several kinds 72 of built distribution. 73 74 Built distributions 75 ------------------- 76 77 Built distributions are the only option for users who do not have or do not 78 know how to use their platform's compiler and Python SDK, and a good option for 79 users who would rather not bother. 80 81 Linux, OS X, and Windows users can get Shapely wheels with GEOS included from the 82 Python Package Index with a recent version of pip (8+): 83 84 .. code-block:: console 85 86 $ pip install shapely 87 88 Shapely is available via system package management tools like apt, yum, and 89 Homebrew, and is also provided by popular Python distributions like Canopy and 90 Anaconda. If you use the Conda package manager to install Shapely, be sure to 91 use the conda-forge channel. 92 93 Windows users have another good installation options: the wheels published at 94 https://www.lfd.uci.edu/~gohlke/pythonlibs/#shapely. These can be installed 95 using pip by specifying the entire URL. 96 97 Source distributions 98 -------------------- 99 100 If you want to build Shapely from source for compatibility with other modules 101 that depend on GEOS (such as cartopy or osgeo.ogr) or want to use a different 102 version of GEOS than the one included in the project wheels you should first 103 install the GEOS library, Cython, and Numpy on your system (using apt, yum, 104 brew, or other means) and then direct pip to ignore the binary wheels. 105 106 .. code-block:: console 107 108 $ pip install shapely --no-binary shapely 109 110 If you've installed GEOS to a standard location, the geos-config program will 111 be used to get compiler and linker options. If geos-config is not on your 112 executable, it can be specified with a GEOS_CONFIG environment variable, e.g.: 113 114 .. code-block:: console 115 116 $ GEOS_CONFIG=/path/to/geos-config pip install shapely 117 118 Integration 119 =========== 120 121 Shapely does not read or write data files, but it can serialize and deserialize 122 using several well known formats and protocols. The shapely.wkb and shapely.wkt 123 modules provide dumpers and loaders inspired by Python's pickle module. 124 125 .. code-block:: pycon 126 127 >>> from shapely.wkt import dumps, loads 128 >>> dumps(loads('POINT (0 0)')) 129 'POINT (0.0000000000000000 0.0000000000000000)' 130 131 Shapely can also integrate with other Python GIS packages using GeoJSON-like 132 dicts. 133 134 .. code-block:: pycon 135 136 >>> import json 137 >>> from shapely.geometry import mapping, shape 138 >>> s = shape(json.loads('{"type": "Point", "coordinates": [0.0, 0.0]}')) 139 >>> s 140 <shapely.geometry.point.Point object at 0x...> 141 >>> print(json.dumps(mapping(s))) 142 {"type": "Point", "coordinates": [0.0, 0.0]} 143 144 Development and Testing 145 ======================= 146 147 Dependencies for developing Shapely are listed in requirements-dev.txt. Cython 148 and Numpy are not required for production installations, only for development. 149 Use of a virtual environment is strongly recommended. 150 151 .. code-block:: console 152 153 $ virtualenv . 154 $ source bin/activate 155 (env)$ pip install -r requirements-dev.txt 156 (env)$ pip install -e . 157 158 The project uses pytest to run Shapely's suite of unittests and doctests. 159 160 .. code-block:: console 161 162 (env)$ python -m pytest 163 164 Support 165 ======= 166 167 Questions about using Shapely may be asked on the `GIS StackExchange 168 <https://gis.stackexchange.com/questions/tagged/shapely>`__ using the "shapely" 169 tag. 170 171 Bugs may be reported at https://github.com/Toblerity/Shapely/issues. 172 173 174 Credits 175 ======= 176 177 Shapely is written by: 178 179 * Adi Shavit <adishavit@gmail.com> 180 * Alberto Rubiales <arubiales11@gmail.com> 181 * Allan Adair <allan.m.adair@gmail.com> 182 * Andrew Blakey <ablakey@gmail.com> 183 * Andy Freeland <andy@andyfreeland.net> 184 * Ariel Kadouri <ariel@arielsartistry.com> 185 * Aron Bierbaum <aronbierbaum@gmail.com> 186 * Bart Broere <2715782+bartbroere@users.noreply.github.com> 187 * Bas Couwenberg <sebastic@xs4all.nl> 188 * Ben Beasley <code@musicinmybrain.net> 189 * Benjamin Root <ben.v.root@gmail.com> 190 * BertrandGervais <bertrand.gervais.pro@gmail.com> 191 * Bhavika Tekwani <4955119+bhavika@users.noreply.github.com> 192 * Bi0T1N <Bi0T1N@users.noreply.github.com> 193 * Brad Hards <bradh@frogmouth.net> 194 * Brandon Wood <btwood@geometeor.com> 195 * Chad Hawkins <cwh@chadwhawkins.com> 196 * Christian Prior <cprior@gmail.com> 197 * Christian Quest <github@cquest.org> 198 * Christophe Pradal <christophe.pradal@inria.fr> 199 * Dan Baston <dbaston@gmail.com> 200 * Dan Mahr <danmahr23@gmail.com> 201 * Daniele Esposti <expobrain@users.noreply.github.com> 202 * Dave Collins <dave@hopest.net> 203 * David Baumgold <david@davidbaumgold.com> 204 * David Swinkels <davidswinkelss@gmail.com> 205 * Denis Rykov <rykovd@gmail.com> 206 * Erwin Sterrenburg <e.w.sterrenburg@gmail.com> 207 * Felix Divo <4403130+felixdivo@users.noreply.github.com> 208 * Felix Yan <felixonmars@archlinux.org> 209 * Filipe Fernandes <ocefpaf@gmail.com> 210 * Frédéric Junod <frederic.junod@camptocamp.com> 211 * Gabi Davar <grizzly.nyo@gmail.com> 212 * Gerrit Holl <gerrit.holl@dwd.de> 213 * Hannes <kannes@users.noreply.github.com> 214 * Hao Zheng <Furioushaozheng@gmail.com> 215 * Henry Walshaw <henry.walshaw@gmail.com> 216 * Howard Butler <hobu.inc@gmail.com> 217 * Hugo <hugovk@users.noreply.github.com> 218 * Jacob Wasserman <jwasserman@gmail.com> 219 * Jaeha Lee <jaehaaheaj@gmail.com> 220 * James Douglass <jamesdouglassusa@gmail.com> 221 * James Gaboardi <jgaboardi@gmail.com> 222 * James Lamb <jaylamb20@gmail.com> 223 * James McBride <jdmcbr@gmail.com> 224 * James Spencer <james.s.spencer@gmail.com> 225 * Jamie Hall <jamie1212@gmail.com> 226 * Jason Sanford <jason.sanford@mapmyfitness.com> 227 * Jeethu Rao <jeethu@jeethurao.com> 228 * Jeremiah England <34973839+Jeremiah-England@users.noreply.github.com> 229 * Jinkun Wang <mejkunw@gmail.com> 230 * Johan Euphrosine <proppy@aminche.com> 231 * Johannes Schönberger <jschoenberger@demuc.de> 232 * Jonathan Schoonhoven <jschoonhoven@lyft.com> 233 * Joris Van den Bossche <jorisvandenbossche@gmail.com> 234 * Joshua Arnott <josh@snorfalorpagus.net> 235 * Juan Luis Cano Rodríguez <juanlu@satellogic.com> 236 * Justin Shenk <shenk.justin@gmail.com> 237 * Kai Lautaportti <dokai@b426a367-1105-0410-b9ff-cdf4ab011145> 238 * Kelsey Jordahl <kjordahl@enthought.com> 239 * Kevin Wurster <wursterk@gmail.com> 240 * Konstantin Veretennicov <kveretennicov@gmail.com> 241 * Koshy Thomas <koshy1123@gmail.com> 242 * Kristian Evers <kristianevers@gmail.com> 243 * Kyle Barron <kylebarron2@gmail.com> 244 * Leandro Lima <leandro@limaesilva.com.br> 245 * Lukasz <uhho@users.noreply.github.com> 246 * Luke Lee <durdenmisc@gmail.com> 247 * Maarten Vermeyen <maarten.vermeyen@rwo.vlaanderen.be> 248 * Marc Jansen <jansen@terrestris.de> 249 * Marco De Nadai <me@marcodena.it> 250 * Mathieu <mathieu.nivel@gmail.com> 251 * Matt Amos <matt.amos@mapzen.com> 252 * Matthias Cuntz <mcuntz@users.noreply.github.com> 253 * MejstrikRudolf <68251685+MejstrikRudolf@users.noreply.github.com> 254 * Michael K <michael-k@users.noreply.github.com> 255 * Michel Blancard <michel.blancard@data.gouv.fr> 256 * Mike Taves <mwtoews@gmail.com> 257 * Morris Tweed <tweed.morris@gmail.com> 258 * Naveen Michaud-Agrawal <naveen.michaudagrawal@gmail.com> 259 * Oliver Tonnhofer <olt@bogosoft.com> 260 * Paveł Tyślacki <tbicr@users.noreply.github.com> 261 * Peter Sagerson <psagers.github@ignorare.net> 262 * Phil Elson <pelson.pub@gmail.com> 263 * Pierre PACI <villerupt@gmail.com> 264 * Raja Gangopadhya <raja.gangopadhya@ridewithvia.com> 265 * Ricardo Zilleruelo <51384295+zetaatlyft@users.noreply.github.com> 266 * Rémy Phelipot <remy-phelipot@users.noreply.github.com> 267 * S Murthy <sr-murthy@users.noreply.github.com> 268 * Sampo Syrjanen <sampo.syrjanen@here.com> 269 * Samuel Chin <samuelchin91@gmail.com> 270 * Sean Gillies <sean.gillies@gmail.com> 271 * Sobolev Nikita <mail@sobolevn.me> 272 * Stephan Hügel <urschrei@gmail.com> 273 * Steve M. Kim <steve@climate.com> 274 * Taro Matsuzawa aka. btm <btm@tech.email.ne.jp> 275 * Thibault Deutsch <thibault.deutsch@gmail.com> 276 * Thomas Gratier <thomas_gratier@yahoo.fr> 277 * Thomas Kluyver <takowl@gmail.com> 278 * Tim Gates <tim.gates@iress.com> 279 * Tobias Sauerwein <tobias.sauerwein@camptocamp.com> 280 * Tom Caruso <carusot42@gmail.com> 281 * Tom Clancy <17627475+clncy@users.noreply.github.com> 282 * WANG Aiyong <gepcelway@gmail.com> 283 * Will May <williamcmay@live.com> 284 * Zachary Ware <zachary.ware@gmail.com> 285 * aharfoot <aharfoot@users.noreply.github.com> 286 * bstadlbauer <11799671+bstadlbauer@users.noreply.github.com> 287 * cclauss <cclauss@me.com> 288 * clefrks <33859587+clefrks@users.noreply.github.com> 289 * davidh-ssec <david.hoese@ssec.wisc.edu> 290 * georgeouzou <geothrock@gmail.com> 291 * giumas <gmasetti@ccom.unh.edu> 292 * joelostblom <joelostblom@users.noreply.github.com> 293 * ljwolf <levi.john.wolf@gmail.com> 294 * mindw <grizzly.nyo@gmail.com> 295 * rsmb <rsmb@users.noreply.github.com> 296 * shongololo <garethsimons@me.com> 297 * solarjoe <walterwhite666@googlemail.com> 298 * sshuair <sshuair@gmail.com> 299 * stephenworsley <49274989+stephenworsley@users.noreply.github.com> 300 301 See also: https://github.com/Toblerity/Shapely/graphs/contributors. 302 303 Additional help from: 304 305 * Justin Bronn (GeoDjango) for ctypes inspiration 306 * Martin Davis (JTS) 307 * Sandro Santilli, Mateusz Loskot, Paul Ramsey, et al (GEOS Project) 308 309 Major portions of this work were supported by a grant (for Pleiades_) from the 310 U.S. National Endowment for the Humanities (https://www.neh.gov). 311 312 .. _Pleiades: https://pleiades.stoa.org 313 314 315 Changes 316 ======= 317 318 1.8.0 (2021-10-25) 319 ------------------ 320 321 This is the final 1.8.0 release. There have been no changes since 1.8rc2. 322 323 1.8rc2 (2021-10-19) 324 ------------------- 325 326 Build: 327 328 A pyproject.toml file has been added to specify build dependencies for the 329 _vectorized and _speedups modules (#1128). To install shapely without these 330 build dependencies, use the features of your build tool that disable PEP 517 331 and 518 support. 332 333 Bug fixes: 334 335 - Part of PR #1042, which added a new primary GEOS library name to be searched 336 for, has been reverted by PR #1201. 337 338 1.8rc1 (2021-10-04) 339 ------------------- 340 341 Deprecations: 342 343 The almost_exact() method of BaseGeometry has been deprecated. It is confusing 344 and will be removed in 2.0.0. The equals_exact() method is to be used instead. 345 346 Bug fixes: 347 348 - We ensure that the _speedups module is always imported before _vectorized to 349 avoid an unexplained condition on Windows with Python 3.8 and 3.9 (#1184). 350 351 1.8a3 (2021-08-24) 352 ------------------ 353 354 Deprecations: 355 356 The STRtree class deprecation warnings have been removed. The class in 2.0.0 357 will be backwards compatible with the class in 1.8.0. 358 359 Bug fixes: 360 361 - The __array_interface__ raises only AttributeError, all other exceptions are 362 deprecated starting with Numpy 1.21 (#1173). 363 - The STRtree class now uses a pair of item, geom sequences internally instead 364 of a dict (#1177). 365 366 367 1.8a2 (2021-07-15) 368 ------------------ 369 370 Python version support: 371 372 Shapely 1.8 will support only Python versions >= 3.6. 373 374 New features: 375 376 - The STRtree nearest*() methods now take an optional argument that 377 specifies exclusion of the input geometry from results (#1115). 378 - A GeometryTypeError has been added to shapely.errors and is consistently 379 raised instead of TypeError or ValueError as in version 1.7. For backwards 380 compatibility, the new exception will derive from TypeError and Value error 381 until version 2.0 (#1099). 382 - The STRtree class constructor now takes an optional second argument, a 383 sequence of objects to be stored in the tree. If not provided, the sequence 384 indices of the geometries will be stored, as before (#1112). 385 - The STRtree class has new query_geoms(), query_items(), nearest_geom(), and 386 nearest_item() methods (#1112). The query() and nearest() methods remain as 387 aliases for query_geoms() and nearest_geom(). 388 389 Bug fixes: 390 391 - We no longer attempt to load libc to get the free function on Linux, but get 392 it from the global symbol table. 393 - GEOS error messages printed when GEOS_getCoordSeq() is passed an empty 394 geometry are avoided by never passing an empty geometry (#1134). 395 - Python's builtin super() is now used only as described in PEP 3135 (#1109). 396 - Only load conda GEOS dll if it exists (on Windows) (#1108). 397 - Add /opt/homebrew/lib to the list of directories to be searched for the GEOS 398 shared library. 399 - Added new library search path to assist app creation with cx_Freeze. 400 401 1.8a1 (2021-03-03) 402 ------------------ 403 404 Shapely 1.8.0 will be a transitional version. There are a few bug fixes and new 405 features, but it is mainly about warning of the upcoming changes in 2.0.0. 406 Several more pre-releases before 1.8.0 are expected. See the migration guide 407 to Shapely 1.8 / 2.0 for more details on how to update your code 408 (https://shapely.readthedocs.io/en/latest/migration.html). 409 410 Python version support: 411 412 Shapely 1.8 will support only Python versions >= 3.5 (#884). 413 414 Deprecations: 415 416 The following functions and geometry attributes and methods will be removed in 417 version 2.0.0. 418 419 - ops.cascaded_union 420 - geometry .empty() 421 - geometry .ctypes and .__array_interface__ 422 - multi-part geometry .__len__ 423 - setting custom attributes on geometry objects 424 425 Geometry objects will become immutable in version 2.0.0. 426 427 The STRtree class will be entirely changed in 2.0.0. The exact future API is 428 not yet decided, but will be decided before 1.8.0 is released. 429 430 Deprecation warnings will be emitted in 1.8a1 when any of these features are 431 used. 432 433 The deprecated .to_wkb() and .to_wkt() methods on the geometry objects have 434 been removed. 435 436 New features: 437 438 - Add a normalize() method to geometry classes, exposing the GEOSNormalize 439 algorithm (#1090). 440 - Initialize STRtree with a capacity of 10 items per node (#1070). 441 - Load libraries relocated to shapely/.libs by auditwheel versions < 3.1 or 442 relocated to Shapely.libs by auditwheel versions >= 3.1. 443 - shapely.ops.voronoi_diagram() computes the Voronoi Diagram of a geometry or 444 geometry collection (#833, #851). 445 - shapely.validation.make_valid() fixes invalid geometries (#883) 446 447 Bug fixes: 448 449 - For pyinstaller we now handle the case of more than one GEOS library in the 450 environment, such as when fiona and rasterio wheels are co-installed with 451 shapely (#1071). 452 - The ops.split function now splits on touch to eliminate confusing 453 discrepancies between results using multi and single part splitters (#1034). 454 - Several issues with duplication and order of vertices in ops.substring have 455 been fixed (#1008). 456 457 Packaging: 458 459 - The wheels uploaded to PyPI will include GEOS 3.9.1. 460 461 1.7.1 (2020-08-20) 462 ------------------ 463 464 - ``STRtree`` now safely implements the pickle protocol (#915). 465 - Documentation has been added for ``minimum_clearance`` (#875, #874). 466 - In ``STRtree.__del__()`` we guard against calling ``GEOSSTRtree_destroy`` 467 when the lgeos module has already been torn down on exit (#897, #830). 468 - Documentation for the ``overlaps()`` method has been corrected (#920). 469 - Correct the test in ``shapely.geometry.base.BaseGeometry.empty()`` to 470 eliminate memory leaks like the one reported in #745. 471 - Get free() not from libc but from the processes global symbols (#891), 472 fixing a bug that manifests on OS X 10.15 and 10.16. 473 - Extracting substrings from complex lines has been made more correct (#848, 474 #849). 475 - Splitting of complex geometries has been sped up by preparing the input 476 geometry (#871). 477 - Fix bug in concatenation of function argtypes (#866). 478 - Improved documentation of STRtree usage (#857). 479 - Improved handling for empty list or list of lists in GeoJSON coordinates 480 (#852). 481 - The polylabel algorithm now accounts for polygon holes (#851, #817). 482 483 1.7.0 (2020-01-28) 484 ------------------ 485 486 This is the final 1.7.0 release. There have been no changes since 1.7b1. 487 488 1.7b1 (2020-01-13) 489 ------------------ 490 491 First beta release. 492 493 1.7a3 (2019-12-31) 494 ------------------ 495 496 New features: 497 498 - The buffer operation can now be single-sides (#806, #727). 499 500 Bug fixes: 501 502 - Add /usr/local/lib to the list of directories to be searched for the GEOS 503 shared library (#795). 504 - ops.substring now returns a line with coords in end-to-front order when given 505 a start position that is greater than the end position (#628). 506 - Implement ``__bool__()`` for geometry base classes so that ``bool(geom)`` 507 returns the logical complement of ``geom.is_empty`` (#754). 508 - Remove assertion on the number of version-like strings found in the GEOS 509 version string. It could be 2 or 3. 510 511 1.7a2 (2019-06-21) 512 ------------------ 513 514 - Nearest neighbor search has been added to STRtree (#668). 515 - Disallow sequences of MultiPolygons as arguments to the MultiPolygon 516 constructor, resolving #588. 517 - Removed vendorized `functools` functions previously used to support 518 Python 2.5. 519 520 Bug fixes: 521 522 - Avoid reloading the GEOS shared library when using an installed binary wheel 523 on OS X (#735), resolving issue #553. 524 - The shapely.ops.orient function can now orient multi polygons and geometry 525 collections as well as polygons (#733). 526 - Polygons can now be constructed from sequences of point objects as well as 527 sequences of x, y sequences (#732). 528 - The exterior of an empty polygon is now equal to an empty linear ring (#731). 529 - The bounds property of an empty point object now returns an empty tuple, 530 consistent with other geometry types (#723). 531 - Segmentation faults when non-string values are passed to the WKT loader are 532 avoided by #700. 533 - Failure of ops.substring when the sub linestring coincides with the beginning 534 of the linestring has been fixed (#658). 535 - Segmentation faults from interpolating on an empty linestring are prevented 536 by #655. 537 - A missing special case for rectangular polygons has been added to the 538 polylabel algorithm (#644). 539 - LinearRing can be created from a LineString (#638). 540 - The prepared geoemtry validation condition has been tightened in #632 to fix 541 the bug reported in #631. 542 - Attempting to interpolate an empty geometry no longer results in a 543 segmentation fault, raising `ValueError` instead (#653). 544 545 1.7a1 (2018-07-29) 546 ------------------ 547 548 New features: 549 550 - A Python version check is made by the package setup script. Shapely 1.7 551 supports only Python versions 2.7 and 3.4+ (#610). 552 - Added a new `EmptyGeometry` class to support GeoPandas (#514). 553 - Added new `shapely.ops.substring` function (#459). 554 - Added new `shapely.ops.clip_by_rect` function (#583). 555 - Use DLLs indicated in sys._MEIPASS' to support PyInstaller frozen apps 556 (#523). 557 - `shapely.wkb.dumps` now accepts an `srid` integer keyword argument to write 558 WKB data including a spatial reference ID in the output data (#593). 559 560 Bug fixes: 561 562 - `shapely.geometry.shape` can now marshal empty GeoJSON representations 563 (#573). 564 - An exception is raised when an attempt is made to `prepare` 565 a `PreparedGeometry` (#577, #595). 566 - Keyword arguments have been removed from a geometry object's `wkt` property 567 getter (#581, #594). 568 569 1.6.4.post1 (2018-01-24) 570 ------------------------ 571 572 - Fix broken markup in this change log, which restores our nicely formatted 573 readme on PyPI. 574 575 1.6.4 (2018-01-24) 576 ------------------ 577 578 - Handle a ``TypeError`` that can occur when geometries are torn down (#473, 579 #528). 580 581 582 1.6.3 (2017-12-09) 583 ------------------ 584 585 - AttributeError is no longer raised when accessing __geo_interface__ of an 586 empty polygon (#450). 587 - ``asShape`` now handles empty coordinates in mappings as ``shape`` does 588 (#542). Please note that ``asShape`` is likely to be deprecated in a future 589 version of Shapely. 590 - Check for length of LineString coordinates in speed mode, preventing crashes 591 when using LineStrings with only one coordinate (#546). 592 593 1.6.2 (2017-10-30) 594 ------------------ 595 596 - A 1.6.2.post1 release has been made to fix a problem with macosx wheels 597 uploaded to PyPI. 598 599 1.6.2 (2017-10-26) 600 ------------------ 601 602 - Splitting a linestring by one of its end points will now succeed instead of 603 failing with a ``ValueError`` (#524, #533). 604 - Missing documentation of a geometry's ``overlaps`` predicate has been added 605 (#522). 606 607 1.6.1 (2017-09-01) 608 ------------------ 609 610 - Avoid ``STRTree`` crashes due to dangling references (#505) by maintaining 611 references to added geometries. 612 - Reduce log level to debug when reporting on calls to ctypes ``CDLL()`` that 613 don't succeed and are retried (#515). 614 - Clarification: applications like GeoPandas that need an empty geometry object 615 should use ``BaseGeometry()`` instead of ``Point()`` or ``Polygon()``. An 616 ``EmptyGeometry`` class has been added in the master development branch and 617 will be available in the next non-bugfix release. 618 619 1.6.0 (2017-08-21) 620 ------------------ 621 622 Shapely 1.6.0 adds new attributes to existing geometry classes and new 623 functions (``split()`` and ``polylabel()``) to the shapely.ops module. 624 Exceptions are consolidated in a shapely.errors module and logging practices 625 have been improved. Shapely's optional features depending on Numpy are now 626 gathered into a requirements set named "vectorized" and these may be installed 627 like ``pip install shapely[vectorized]``. 628 629 Much of the work on 1.6.0 was aimed to improve the project's build and 630 packaging scripts and to minimize run-time dependencies. Shapely now vendorizes 631 packaging to use during builds only and never again invokes the geos-config 632 utility at run-time. 633 634 In addition to the changes listed under the alpha and beta pre-releases below, 635 the following change has been made to the project: 636 637 - Project documentation is now hosted at 638 https://shapely.readthedocs.io/en/latest/. 639 640 Thank you all for using, promoting, and contributing to the Shapely project. 641 642 1.6b5 (2017-08-18) 643 ------------------ 644 645 Bug fixes: 646 647 - Passing a single coordinate to ``LineString()`` with speedups disabled now 648 raises a ValueError as happens with speedups enabled. This resolves #509. 649 650 1.6b4 (2017-02-15) 651 ------------------ 652 653 Bug fixes: 654 655 - Isolate vendorized packaging in a _vendor directory, remove obsolete 656 dist-info, and remove packaging from project requirements (resolves #468). 657 658 1.6b3 (2016-12-31) 659 ------------------ 660 661 Bug fixes: 662 663 - Level for log messages originating from the GEOS notice handler reduced from 664 WARNING to INFO (#447). 665 - Permit speedups to be imported again without Numpy (#444). 666 667 1.6b2 (2016-12-12) 668 ------------------ 669 670 New features: 671 672 - Add support for GeometryCollection to shape and asShape functions (#422). 673 674 1.6b1 (2016-12-12) 675 ------------------ 676 677 Bug fixes: 678 679 - Implemented __array_interface__ for empty Points and LineStrings (#403). 680 681 1.6a3 (2016-12-01) 682 ------------------ 683 684 Bug fixes: 685 686 - Remove accidental hard requirement of Numpy (#431). 687 688 Packaging: 689 690 - Put Numpy in an optional requirement set named "vectorized" (#431). 691 692 1.6a2 (2016-11-09) 693 ------------------ 694 695 Bug fixes: 696 697 - Shapely no longer configures logging in ``geos.py`` (#415). 698 699 Refactoring: 700 701 - Consolidation of exceptions in ``shapely.errors``. 702 - ``UnsupportedGEOSVersionError`` is raised when GEOS < 3.3.0 (#407). 703 704 Packaging: 705 706 - Added new library search paths to assist Anaconda (#413). 707 - geos-config will now be bypassed when NO_GEOS_CONFIG env var is set. This 708 allows configuration of Shapely builds on Linux systems that for whatever 709 reasons do not include the geos-config program (#322). 710 711 1.6a1 (2016-09-14) 712 ------------------ 713 714 New features: 715 716 - A new error derived from NotImplementedError, with a more useful message, is 717 raised when the GEOS backend doesn't support a called method (#216). 718 - The ``project()`` method of LineString has been extended to LinearRing 719 geometries (#286). 720 - A new ``minimum_rotated_rectangle`` attribute has been added to the base 721 geometry class (#354). 722 - A new ``shapely.ops.polylabel()`` function has been added. It 723 computes a point suited for labeling concave polygons (#395). 724 - A new ``shapely.ops.split()`` function has been added. It splits a 725 geometry by another geometry of lesser dimension: polygon by line, line by 726 point (#293, #371). 727 - ``Polygon.from_bounds()`` constructs a Polygon from bounding coordinates 728 (#392). 729 - Support for testing with Numpy 1.4.1 has been added (#301). 730 - Support creating all kinds of empty geometries from empty lists of Python 731 objects (#397, #404). 732 733 Refactoring: 734 735 - Switch from ``SingleSidedBuffer()`` to ``OffsetCurve()`` for GEOS >= 3.3 736 (#270). 737 - Cython speedups are now enabled by default (#252). 738 739 Packaging: 740 741 - Packaging 16.7, a setup dependency, is vendorized (#314). 742 - Infrastructure for building manylinux1 wheels has been added (#391). 743 - The system's ``geos-config`` program is now only checked when ``setup.py`` 744 is executed, never during normal use of the module (#244). 745 - Added new library search paths to assist PyInstaller (#382) and Windows 746 (#343). 747 748 1.5.17 (2016-08-31) 749 ------------------- 750 - Bug fix: eliminate memory leak in geom_factory() (#408). 751 - Bug fix: remove mention of negative distances in parallel_offset and note 752 that vertices of right hand offset lines are reversed (#284). 753 754 1.5.16 (2016-05-26) 755 ------------------- 756 - Bug fix: eliminate memory leak when unpickling geometry objects (#384, #385). 757 - Bug fix: prevent crashes when attempting to pickle a prepared geometry, 758 raising ``PicklingError`` instead (#386). 759 - Packaging: extension modules in the OS X wheels uploaded to PyPI link only 760 libgeos_c.dylib now (you can verify and compare to previous releases with 761 ``otool -L shapely/vectorized/_vectorized.so``). 762 763 1.5.15 (2016-03-29) 764 ------------------- 765 - Bug fix: use uintptr_t to store pointers instead of long in _geos.pxi, 766 preventing an overflow error (#372, #373). Note that this bug fix was 767 erroneously reported to have been made in 1.5.14, but was not. 768 769 1.5.14 (2016-03-27) 770 ------------------- 771 - Bug fix: use ``type()`` instead of ``isinstance()`` when evaluating geometry 772 equality, preventing instances of base and derived classes from 773 being mistaken for equals (#317). 774 - Bug fix: ensure that empty geometries are created when constructors have no 775 args (#332, #333). 776 - Bug fix: support app "freezing" better on Windows by not relying on the 777 ``__file__`` attribute (#342, #377). 778 - Bug fix: ensure that empty polygons evaluate to be ``==`` (#355). 779 - Bug fix: filter out empty geometries that can cause segfaults when creating 780 and loading STRtrees (#345, #348). 781 - Bug fix: no longer attempt to reuse GEOS DLLs already loaded by Rasterio 782 or Fiona on OS X (#374, #375). 783 784 1.5.13 (2015-10-09) 785 ------------------- 786 - Restore setup and runtime discovery and loading of GEOS shared library to 787 state at version 1.5.9 (#326). 788 - On OS X we try to reuse any GEOS shared library that may have been loaded 789 via import of Fiona or Rasterio in order to avoid a bug involving the 790 GEOS AbstractSTRtree (#324, #327). 791 792 1.5.12 (2015-08-27) 793 ------------------- 794 - Remove configuration of root logger from libgeos.py (#312). 795 - Skip test_fallbacks on Windows (#308). 796 - Call setlocale(locale.LC_ALL, "") instead of resetlocale() on Windows when 797 tearing down the locale test (#308). 798 - Fix for Sphinx warnings (#309). 799 - Addition of .cache, .idea, .pyd, .pdb to .gitignore (#310). 800 801 1.5.11 (2015-08-23) 802 ------------------- 803 - Remove packaging module requirement added in 1.5.10 (#305). Distutils can't 804 parse versions using 'rc', but if we stick to 'a' and 'b' we will be fine. 805 806 1.5.10 (2015-08-22) 807 ------------------- 808 - Monkey patch affinity module by absolute reference (#299). 809 - Raise TopologicalError in relate() instead of crashing (#294, #295, #303). 810 811 1.5.9 (2015-05-27) 812 ------------------ 813 - Fix for 64 bit speedups compatibility (#274). 814 815 1.5.8 (2015-04-29) 816 ------------------ 817 - Setup file encoding bug fix (#254). 818 - Support for pyinstaller (#261). 819 - Major prepared geometry operation fix for Windows (#268, #269). 820 - Major fix for OS X binary wheel (#262). 821 822 1.5.7 (2015-03-16) 823 ------------------ 824 - Test and fix buggy error and notice handlers (#249). 825 826 1.5.6 (2015-02-02) 827 ------------------ 828 - Fix setup regression (#232, #234). 829 - SVG representation improvements (#233, #237). 830 831 1.5.5 (2015-01-20) 832 ------------------ 833 - MANIFEST changes to restore _geox.pxi (#231). 834 835 1.5.4 (2015-01-19) 836 ------------------ 837 - Fixed OS X binary wheel library load path (#224). 838 839 1.5.3 (2015-01-12) 840 ------------------ 841 - Fixed ownership and potential memory leak in polygonize (#223). 842 - Wider release of binary wheels for OS X. 843 844 1.5.2 (2015-01-04) 845 ------------------ 846 - Fail installation if GEOS dependency is not met, preventing update breakage 847 (#218, #219). 848 849 1.5.1 (2014-12-04) 850 ------------------ 851 - Restore geometry hashing (#209). 852 853 1.5.0 (2014-12-02) 854 ------------------ 855 - Affine transformation speedups (#197). 856 - New `==` rich comparison (#195). 857 - Geometry collection constructor (#200). 858 - ops.snap() backed by GEOSSnap (#201). 859 - Clearer exceptions in cases of topological invalidity (#203). 860 861 1.4.4 (2014-11-02) 862 ------------------ 863 - Proper conversion of numpy float32 vals to coords (#186). 864 865 1.4.3 (2014-10-01) 866 ------------------ 867 - Fix for endianness bug in WKB writer (#174). 868 869 1.4.2 (2014-09-29) 870 ------------------ 871 - Fix bungled 1.4.1 release (#176). 872 873 1.4.1 (2014-09-23) 874 ------------------ 875 - Return of support for GEOS 3.2 (#176, #178). 876 877 1.4.0 (2014-09-08) 878 ------------------ 879 - SVG representations for IPython's inline image protocol. 880 - Efficient and fast vectorized contains(). 881 - Change mitre_limit default to 5.0; raise ValueError with 0.0 (#139). 882 - Allow mix of tuples and Points in sped-up LineString ctor (#152). 883 - New STRtree class (#73). 884 - Add ops.nearest_points() (#147). 885 - Faster creation of geometric objects from others (cloning) (#165). 886 - Removal of tests from package. 887 888 1.3.3 (2014-07-23) 889 ------------------ 890 - Allow single-part geometries as argument to ops.cacaded_union() (#135). 891 - Support affine transformations of LinearRings (#112). 892 893 1.3.2 (2014-05-13) 894 ------------------ 895 - Let LineString() take a sequence of Points (#130). 896 897 1.3.1 (2014-04-22) 898 ------------------ 899 - More reliable proxy cleanup on exit (#106). 900 - More robust DLL loading on all platforms (#114). 901 902 1.3.0 (2013-12-31) 903 ------------------ 904 - Include support for Python 3.2 and 3.3 (#56), minimum version is now 2.6. 905 - Switch to GEOS WKT/WKB Reader/Writer API, with defaults changed to enable 3D 906 output dimensions, and to 'trim' WKT output for GEOS >=3.3.0. 907 - Use GEOS version instead of GEOS C API version to determine library 908 capabilities (#65). 909 910 1.2.19 (2013-12-30) 911 ------------------- 912 - Add buffering style options (#55). 913 914 1.2.18 (2013-07-23) 915 -------------------- 916 - Add shapely.ops.transform. 917 - Permit empty sequences in collection constructors (#49, #50). 918 - Individual polygons in MultiPolygon.__geo_interface__ are changed to tuples 919 to match Polygon.__geo_interface__ (#51). 920 - Add shapely.ops.polygonize_full (#57). 921 922 1.2.17 (2013-01-27) 923 ------------------- 924 - Avoid circular import between wkt/wkb and geometry.base by moving calls 925 to GEOS serializers to the latter module. 926 - Set _ndim when unpickling (issue #6). 927 - Don't install DLLs to Python's DLL directory (#37). 928 - Add affinity module of affine transformation (#31). 929 - Fix NameError that blocked installation with PyPy (#40, #41). 930 931 1.2.16 (2012-09-18) 932 ------------------- 933 - Add ops.unary_union function. 934 - Alias ops.cascaded_union to ops.unary_union when GEOS CAPI >= (1,7,0). 935 - Add geos_version_string attribute to shapely.geos. 936 - Ensure parent is set when child geometry is accessed. 937 - Generate _speedups.c using Cython when building from repo when missing, 938 stale, or the build target is "sdist". 939 - The is_simple predicate of invalid, self-intersecting linear rings now 940 returns ``False``. 941 - Remove VERSION.txt from repo, it's now written by the distutils setup script 942 with value of shapely.__version__. 943 944 1.2.15 (2012-06-27) 945 ------------------- 946 - Eliminate numerical sensitivity in a method chaining test (Debian bug 947 #663210). 948 - Account for cascaded union of random buffered test points being a polygon 949 or multipolygon (Debian bug #666655). 950 - Use Cython to build speedups if it is installed. 951 - Avoid stumbling over SVN revision numbers in GEOS C API version strings. 952 953 1.2.14 (2012-01-23) 954 ------------------- 955 - A geometry's coords property is now sliceable, yielding a list of coordinate 956 values. 957 - Homogeneous collections are now sliceable, yielding a new collection of the 958 same type. 959 960 1.2.13 (2011-09-16) 961 ------------------- 962 - Fixed errors in speedups on 32bit systems when GEOS references memory above 963 2GB. 964 - Add shapely.__version__ attribute. 965 - Update the manual. 966 967 1.2.12 (2011-08-15) 968 ------------------- 969 - Build Windows distributions with VC7 or VC9 as appropriate. 970 - More verbose report on failure to speed up. 971 - Fix for prepared geometries broken in 1.2.11. 972 - DO NOT INSTALL 1.2.11 973 974 1.2.11 (2011-08-04) 975 ------------------- 976 - Ignore AttributeError during exit. 977 - PyPy 1.5 support. 978 - Prevent operation on prepared geometry crasher (#12). 979 - Optional Cython speedups for Windows. 980 - Linux 3 platform support. 981 982 1.2.10 (2011-05-09) 983 ------------------- 984 - Add optional Cython speedups. 985 - Add is_cww predicate to LinearRing. 986 - Add function that forces orientation of Polygons. 987 - Disable build of speedups on Windows pending packaging work. 988 989 1.2.9 (2011-03-31) 990 ------------------ 991 - Remove extra glob import. 992 - Move examples to shapely.examples. 993 - Add box() constructor for rectangular polygons. 994 - Fix extraneous imports. 995 996 1.2.8 (2011-12-03) 997 ------------------ 998 - New parallel_offset method (#6). 999 - Support for Python 2.4. 1000 1001 1.2.7 (2010-11-05) 1002 ------------------ 1003 - Support for Windows eggs. 1004 1005 1.2.6 (2010-10-21) 1006 ------------------ 1007 - The geoms property of an empty collection yields [] instead of a ValueError 1008 (#3). 1009 - The coords and geometry type sproperties have the same behavior as above. 1010 - Ensure that z values carry through into products of operations (#4). 1011 1012 1.2.5 (2010-09-19) 1013 ------------------ 1014 - Stop distributing docs/_build. 1015 - Include library fallbacks in test_dlls.py for linux platform. 1016 1017 1.2.4 (2010-09-09) 1018 ------------------ 1019 - Raise AttributeError when there's no backend support for a method. 1020 - Raise OSError if libgeos_c.so (or variants) can't be found and loaded. 1021 - Add geos_c DLL loading support for linux platforms where find_library doesn't 1022 work. 1023 1024 1.2.3 (2010-08-17) 1025 ------------------ 1026 - Add mapping function. 1027 - Fix problem with GEOSisValidReason symbol for GEOS < 3.1. 1028 1029 1.2.2 (2010-07-23) 1030 ------------------ 1031 - Add representative_point method. 1032 1033 1.2.1 (2010-06-23) 1034 ------------------ 1035 - Fixed bounds of singular polygons. 1036 - Added shapely.validation.explain_validity function (#226). 1037 1038 1.2 (2010-05-27) 1039 ---------------- 1040 - Final release. 1041 1042 1.2rc2 (2010-05-26) 1043 ------------------- 1044 - Add examples and tests to MANIFEST.in. 1045 - Release candidate 2. 1046 1047 1.2rc1 (2010-05-25) 1048 ------------------- 1049 - Release candidate. 1050 1051 1.2b7 (2010-04-22) 1052 ------------------ 1053 - Memory leak associated with new empty geometry state fixed. 1054 1055 1.2b6 (2010-04-13) 1056 ------------------ 1057 - Broken GeometryCollection fixed. 1058 1059 1.2b5 (2010-04-09) 1060 ------------------ 1061 - Objects can be constructed from others of the same type, thereby making 1062 copies. Collections can be constructed from sequences of objects, also making 1063 copies. 1064 - Collections are now iterators over their component objects. 1065 - New code for manual figures, using the descartes package. 1066 1067 1.2b4 (2010-03-19) 1068 ------------------ 1069 - Adds support for the "sunos5" platform. 1070 1071 1.2b3 (2010-02-28) 1072 ------------------ 1073 - Only provide simplification implementations for GEOS C API >= 1.5. 1074 1075 1.2b2 (2010-02-19) 1076 ------------------ 1077 - Fix cascaded_union bug introduced in 1.2b1 (#212). 1078 1079 1.2b1 (2010-02-18) 1080 ------------------ 1081 - Update the README. Remove cruft from setup.py. Add some version 1.2 metadata 1082 regarding required Python version (>=2.5,<3) and external dependency 1083 (libgeos_c >= 3.1). 1084 1085 1.2a6 (2010-02-09) 1086 ------------------ 1087 - Add accessor for separate arrays of X and Y values (#210). 1088 1089 TODO: fill gap here 1090 1091 1.2a1 (2010-01-20) 1092 ------------------ 1093 - Proper prototyping of WKB writer, and avoidance of errors on 64-bit systems 1094 (#191). 1095 - Prototype libgeos_c functions in a way that lets py2exe apps import shapely 1096 (#189). 1097 1098 1.2 Branched (2009-09-19) 1099 1100 1.0.12 (2009-04-09) 1101 ------------------- 1102 - Fix for references held by topology and predicate descriptors. 1103 1104 1.0.11 (2008-11-20) 1105 ------------------- 1106 - Work around bug in GEOS 2.2.3, GEOSCoordSeq_getOrdinate not exported properly 1107 (#178). 1108 1109 1.0.10 (2008-11-17) 1110 ------------------- 1111 - Fixed compatibility with GEOS 2.2.3 that was broken in 1.0.8 release (#176). 1112 1113 1.0.9 (2008-11-16) 1114 ------------------ 1115 - Find and load MacPorts libgeos. 1116 1117 1.0.8 (2008-11-01) 1118 ------------------ 1119 - Fill out GEOS function result and argument types to prevent faults on a 1120 64-bit arch. 1121 1122 1.0.7 (2008-08-22) 1123 ------------------ 1124 - Polygon rings now have the same dimensions as parent (#168). 1125 - Eliminated reference cycles in polygons (#169). 1126 1127 1.0.6 (2008-07-10) 1128 ------------------ 1129 - Fixed adaptation of multi polygon data. 1130 - Raise exceptions earlier from binary predicates. 1131 - Beginning distributing new windows DLLs (#166). 1132 1133 1.0.5 (2008-05-20) 1134 ------------------ 1135 - Added access to GEOS polygonizer function. 1136 - Raise exception when insufficient coordinate tuples are passed to LinearRing 1137 constructor (#164). 1138 1139 1.0.4 (2008-05-01) 1140 ------------------ 1141 - Disentangle Python and topological equality (#163). 1142 - Add shape(), a factory that copies coordinates from a geo interface provider. 1143 To be used instead of asShape() unless you really need to store coordinates 1144 outside shapely for efficient use in other code. 1145 - Cache GEOS geometries in adapters (#163). 1146 1147 1.0.3 (2008-04-09) 1148 ------------------ 1149 - Do not release GIL when calling GEOS functions (#158). 1150 - Prevent faults when chaining multiple GEOS operators (#159). 1151 1152 1.0.2 (2008-02-26) 1153 ------------------ 1154 - Fix loss of dimensionality in polygon rings (#155). 1155 1156 1.0.1 (2008-02-08) 1157 ------------------ 1158 - Allow chaining expressions involving coordinate sequences and geometry parts 1159 (#151). 1160 - Protect against abnormal use of coordinate accessors (#152). 1161 - Coordinate sequences now implement the numpy array protocol (#153). 1162 1163 1.0 (2008-01-18) 1164 ---------------- 1165 - Final release. 1166 1167 1.0 RC2 (2008-01-16) 1168 -------------------- 1169 - Added temporary solution for #149. 1170 1171 1.0 RC1 (2008-01-14) 1172 -------------------- 1173 - First release candidate 1174 1175Keywords: geometry topology gis 1176Platform: UNKNOWN 1177Classifier: Development Status :: 5 - Production/Stable 1178Classifier: Intended Audience :: Developers 1179Classifier: Intended Audience :: Science/Research 1180Classifier: License :: OSI Approved :: BSD License 1181Classifier: Operating System :: OS Independent 1182Classifier: Programming Language :: Python :: 3 1183Classifier: Programming Language :: Python :: 3.6 1184Classifier: Programming Language :: Python :: 3.7 1185Classifier: Programming Language :: Python :: 3.8 1186Classifier: Programming Language :: Python :: 3.9 1187Classifier: Programming Language :: Python :: 3.10 1188Classifier: Topic :: Scientific/Engineering :: GIS 1189Requires-Python: >=3.6 1190Provides-Extra: vectorized 1191Provides-Extra: test 1192Provides-Extra: all 1193