Skip to content

Releases: brick/geo

0.13.1

20 Mar 13:06
Compare
Choose a tag to compare

🐛 Bug fixes

  • Uninitialized proxies would be broken when calling withRoundedCoordinates()
  • with*() proxy methods using variadic parameters were broken

0.13.0

17 Mar 09:33
Compare
Choose a tag to compare

💥 Breaking changes

The case of the following class names and namespaces has changed:

  • GEOSEngine => GeosEngine
  • PDOEngine => PdoEngine
  • SQLite3Engine => Sqlite3Engine
  • RemoveZMProjector => RemoveZmProjector
  • SRIDProjector => SridProjector
  • SwapXYProjector => SwapXyProjector
  • TIN => Tin
  • GeometryIOException => GeometryIoException
  • IO\EWKBReader => Io\EwkbReader
  • IO\EWKBWriter => Io\EwkbWriter
  • IO\EWKTReader => Io\EwktReader
  • IO\EWKTWriter => Io\EwktWriter
  • IO\WKBReader => Io\WkbReader
  • IO\WKBWriter => Io\WkbWriter
  • IO\WKTReader => Io\WktReader
  • IO\WKTWriter => Io\WktWriter
  • IO\GeoJSONReader => Io\GeoJsonReader
  • IO\GeoJSONWriter => Io\GeoJsonWriter
  • IO\GeoJSON\Feature => Io\GeoJson\Feature
  • IO\GeoJSON\FeatureCollection => Io\GeoJson\FeatureCollection

The following breaking changes will only affect you if you're writing your own geometry engine:

  • GeometryEngine interface has a new method: concaveHull()
  • DatabaseEngine::executeQuery() implementations must now accept bool parameters
  • DatabaseEngine::getParameterPlaceholder() signature has changed to accept bool parameters
  • DatabaseEngine::queryGeometry() is now final

The following breaking changes may only affect you if you're writing your own engine or geometry classes:

  • GeometryException constructor signature has changed
  • Geometry has a new method: withRoundedCoordinates()

New features

  • New geometry engine: GeosOpEngine uses the geosop binary to perform geometry operations
  • New engine method: GeometryEngine::concaveHull()
  • New Geometry method: withRoundedCoordinates()

Improvements

  • All GeometryEngine methods are now properly documented with @throws GeometryEngineException

🐛 Bug fixes

  • WktParser and EwktParser now accept both MULTIPOINT (1 2, 3 4) and MULTIPOINT((1 2), (3 4)) syntaxes;
    this notably fixes interoperability issues with PostGIS

0.12.0

09 Mar 22:47
Compare
Choose a tag to compare

💥 Breaking changes

  • Interface GeometryEngine has 2 new methods: lineInterpolatePoint(), lineInterpolatePoints()
  • BoundingBox's constructor is now private, use BoundingBox::new() to create a new instance
  • CompoundCurve can now only contain LineString and CircularString instances; nested CompoundCurve instances are forbidden
  • Geometry no longer implements Countable and IteratorAggregate; subclasses implement these interfaces as needed, with proper types
  • The SQLite3Exception class has been removed
  • The GeometryEngineException::operationNotSupportedByEngine() method has been removed
  • The following classes are now final:
    • BoundingBox
    • CoordinateSystem
    • engines:
      • GEOSEngine
      • PDOEngine
      • SQLite3Engine
    • exceptions:
      • CoordinateSystemException
      • EmptyGeometryException
      • GeometryEngineException
      • GeometryIOException
      • InvalidGeometryException
      • NoSuchGeometryException
      • UnexpectedGeometryException
    • input/output:
      • EWKBReader
      • EWKBWriter
      • EWKTReader
      • EWKTWriter
      • GeoJSONReader
      • GeoJSONWriter
      • WKBReader
      • WKBWriter
      • WKTReader
      • WKTWriter
  • The following classes are marked as @internal, and are no longer part of the public API:
    • Attribute\NoProxy
    • Engine\GeometryParameter
    • IO\AbstractWKBReader
    • IO\AbstractWKBWriter
    • IO\AbstractWKTReader
    • IO\AbstractWKTWriter
    • IO\EWKBTools
    • IO\EWKTParser
    • IO\WKBBuffer
    • IO\WKBByteOrder
    • IO\WKBGeometryHeader
    • IO\WKBTools
    • IO\WKTParser

🗑️ Deprecations

  • The following classes are marked as @final, and will be made final in a future version:
    • CircularString
    • CompoundCurve
    • CurvePolygon
    • LineString
    • MultiLineString
    • MultiPoint
    • MultiPolygon
    • Point
    • TIN
    • Triangle

New features

  • New engine methods: GeometryEngine::lineInterpolatePoint(), lineInterpolatePoints() (#55 by @arminwinkt)

Improvements

  • Improved documentation and return types for Geometry::toArray() methods
  • PDOEngine and SQLite3Engine now wrap all underlying exceptions in a GeometryEngineException
  • When an engine exception occurs, GeometryEngineException now includes the original exception message

0.11.5

06 Mar 15:49
Compare
Choose a tag to compare

🐛 Bug fixes

  • The error mode of the PDO connection in PDOEngine could be left modified when an exception occurs
  • Uninitialized proxies would be broken when calling with*() methods

0.11.4

03 Mar 14:07
Compare
Choose a tag to compare

🐛 Bug fixes

  • GeoJSONWriter erroneously refused to write MultiPoint, MultiLineString and MultiPolygon nested inside GeometryCollection (#53)

New features

  • GeoJSONWriter constructor now has a $lenient flag to allow nested GeometryCollection objects

Improvements

  • Improved exception messages in non-lenient mode in GeoJSONReader
  • Performance improvement in GeoJSONWriter when the bbox attribute is not requested

0.11.3

19 Feb 17:28
Compare
Choose a tag to compare

New features

  • The following methods have been added:
    • CircularString::withAddedPoints()
    • CompoundCurve::withAddedCurves()
    • CurvePolygon::withExteriorRing(), withInteriorRings(), withAddedInteriorRings()
    • GeometryCollection::withAddedGeometries()
    • LineString::withAddedPoints()
    • Polygon::withExteriorRing(), withInteriorRings(), withAddedInteriorRings()
    • PolyhedralSurface::withAddedPatches()

0.11.2

18 Feb 20:13
Compare
Choose a tag to compare

🐛 Bug fixes

  • extending an empty BoundingBox would get its immutability violated by setting a coordinate system

0.11.1

19 Aug 20:42
Compare
Choose a tag to compare

New features

  • New projector: RoundCoordinatesProjector

0.11.0

07 Jun 20:39
Compare
Choose a tag to compare

💥 Breaking changes

  • interface GeometryEngine has a new method: split()
  • method GeometryEngine::boundingPolygons() has been removed

New features

  • New engine method: GeometryEngine::split()

0.10.0

23 Jan 23:23
Compare
Choose a tag to compare

💥 Breaking changes

  • Minimum PHP version is now 8.1
  • interface GeometryEngine has a new method: makeValid()
  • AbstractWKBWriter::setByteOrder() now accepts a WKBByteOrder enum instead of a WKBTools::*_ENDIAN constant
  • constants WKBTools::BIG_ENDIAN and WKBTools::LITTLE_ENDIAN have been removed
  • method WKBTools::checkByteOrder() has been removed

New features

  • New engine method: GeometryEngine::makeValid()