# Change Log All notable changes to `mjaschen/phpgeo` will be documented in this file. Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) principles. ## Unreleased/Upcoming ### Added - `GeometryInterface` provides two new methods: `getBounds()` and `getSegments()` ### Removed - Support for PHP 7.3 - `setPoint1()` and `setPoint2()` methods from `Line` - `setSeparator()`, `useCardinalLetters()` and `setUnits()` methods from `DMS` ## [4.2.0] - Current Version, 2022-07-25 ## Changed - point-to-line distance is calculated iteratively now, fixes #92 - improved intersection checking for polygon/polygon ## [4.1.0] - 2022-06-03 This release has no breaking changes. Thanks, @nilshoerrmann, for contributing! ### Added - method `Bounds::getAsPolygon()` which returns a polygon containing the four nodes of the Bounds instance - methods `Bounds::getNorthEast()` and `Bounds::getSouthWest()` - new public methods: `CardinalDirection::isStrictlyNorth()`, `CardinalDirection::isStrictlyEast()`, `CardinalDirection::isStrictlySouth()` and `CardinalDirection::isStrictlyWest()` - new class `Direction` for checking if one point is north, eat, south or west from another point - new Class `Intersection` for checking if two geometries intersect each other ## [4.0.0] - 2021-11-29 ### Changed - drop support for PHP 7.2 **breaking change** - add support for PHP 8.1 - add deprecations for setter methods in `DMS` and `Line` classes ## [3.2.1] - 2021-03-04 ### Fixed - Division by zero in `SimplifyBearing` if two consecutive points share the same location, fixes #79. ## [3.2.0] - 2020-10-09 ### Added - Calculation of [Cardinal Distances](https://phpgeo.marcusjaschen.de/Calculations/Cardinal_Distance.html) between two points. Thanks @LeoVie! ### Changed - change `static` to `self` to prevent accidentally calling the constructor with wrong arguments in child classes (`Ellipsoid`, `Line`, `Polygon`, `Polyline`) ## [3.1.0] - 2020-07-24 ### Added - Simplifying polygons is now supported as well, see `simplifyGeometry()` methods in `SimplifyBearing` and `SimplifyDouglasPeucker` classes (fixes #69). ## [3.0.1] - 2020-05-18 ### Fixed - \#68 `CoordinateFactory` emitted a warning if a coordindates string without arc seconds was passed to the `fromString()` method ## [3.0.0] - 2020-02-07 ### Changed - *phpgeo* requires PHP >= 7.2 now - **backwards compatibility breaking:** fix double space in Ellipsoid Name `World␣Geodetic␣System␣␣1984` → `World␣Geodetic␣System␣1984` (#49) - updated tests for PHPUnit 8 ### Added - class constant visibiliy modifiers ### Removed - support for PHP 7.0 and PHP 7.1 from Travis CI config ## [2.6.0] - 2020-02-05 ### Added - method `getIntermediatePoint()` to the `Line` class which calculates an intermediate point on a line by following the Great Circle between the two line ends and dividing the line by the given fraction (0.0 ... 1.0) ## [2.5.0] - 2020-02-04 ### Added - method `getMidpoint()` to the `Line` class which calculates the midpoint of a line by following the Great Circle between the two line ends and dividing the line into two halves. - utility class `Cartesian` which abstracts three-dimensional cartesian coordinates *x*, *y*, and *z* ## [2.4.1] - 2020-01-29 ### Changed - access modifier for the `tolerance` attribute is now protected (`SimplifyDouglasPeucker`) ## [2.4.0] - 2020-01-27 ### Added - `BoundsFactory` to create a bounds instance for a center point and a given distance to the bounds' corners. Thanks @sdennler! ## [2.3.1] - 2019-12-21 ### Fixed - improve precision in `PointToLineDistance` ## [2.3.0] - 2019-12-19 ### Added - `PointToLineDistance` calculates the smallest distance between a point and a line ## [2.2.0] - 2019-11-25 ### Added - `hasSameLocation()` checks if two points share the same location (optionally within a distance which defaults to 0.001 m = 1 mm) - `addUniquePoint` adds unique points to a polyline (i.e., points that doesn't already exist in that polyline) - `getAveragePoint()` returns the average value of latitude and longitude values for a polyline ### Fixed - wrongly placed parenthesis in `Polygon::contains()` ## [2.1.0] - 2019-03-22 ### Added - The bounds for a `Polyline` can now be retrieved in form of a `Bound` object. ### Changed - The auto-loader is now PSR-4 compatible; directory structure was flattened by one level. ## [2.0.5] - 2019-02-27 ### Changed - improvements to the Douglas-Peucker processor. Thanks @iamskey! ## [2.0.3] - 2018-07-19 ### Fixed - Links to documentation in README. Thanks @JonathanMH ### Changed - better floating point number comparisons in `Vincenty` - add exception message in `Vincenty` - type-cast regexp matches before doing calculations in `CoordinateFactory` ## [2.0.2] - 2018-03-27 ### Added - Information on how to run checks and tests for developers in the README. ### Changed - Updated internal stuff like type and return hints after running a static analysis. - Updated some PHPDoc blocks after running a static analysis. ### Fixed - Wrongly typed return value in `BearingEllipsoidal::inverseVincenty()`. ## [2.0.1] - 2018-02-16 ### Added - new supported format for coordinates parser. Thanks to @petrknap ## [2.0.0] - 2017-09-27 ### Changed * License: *phpgeo* is now distributed under the MIT license * phpgeo requires at least PHP 7.0 ### Removed * deprecated class `Simplify` was removed; alternatives: `SimplifyBearing` or `SimplifyDouglasPeucker` * PHP versions 5.4, 5.5, and 5.6 are no longer supported ## [1.3.8] - 2017-07-05 ### Fixed * Area calculation for polygons works now. Thanks to @felixveysseyre ## [1.3.7] - 2017-07-01 ### Fixed * GeoJSON output for polygon is now compliant with RFC 7946. Thanks to @arsonik ## [1.3.5] - 2016-08-19 ### Added * add method for calculating the final bearing for a `Line` object ## [1.3.3] - 2016-08-16 ### Fixed * bugifx for a division-by-zero error which occurred when symplifying a polyline with the Douglas-Peucker algorithm. ## [1.3.2] - 2016-03-26 ### Added * add an utility class to calculate the perpendicular distance between a point and a line; [documentation](https://phpgeo.marcusjaschen.de/#_perpendicular_distance) ## [1.3.1] - 2016-03-26 ### Added * add method to calculate the bearing of a `Line` instance (point 1 -> point 2) ## [1.3.0] - 2016-03-26 ### Added * A new `SimplifyInterface` was introduced and is implemented in two classes: `SimplifyDouglasPeucker` and `SimplifyBearing` * Added documentation ### Deprecated * The `Simplify` processor class is now deprecated and will be removed in the 2.0 release. ## [1.2.1] - 2016-03-15 ### Added * Added functionality to change the direction of Polygon instances * Added documentation ## [1.2.0] - 2016-03-14 ### Added * Added geofence check for arbitrary geometry objects * Extended and updated documentation ## [1.1.1] - 2016-03-13 ### Added * Added formatter for "Decimal Minutes" format, e.g. `43° 37.386' N, 070° 12.472' W` * Added documentation for the new formatter ## [1.1.0] - 2016-03-12 ### Added * Added calculation of the bearing angle between two points (initial and final bearing) * Added calculation of the destination point for a given starting point, the bearing angle, and the distance * Support for spherical and ellipsoidal algorithms for the described bearing calculations * Added documentation for the bearing calculations ## [1.0.4] - 2016-03-11 ### Added * Added functionality to change the direction of Line/Polyline instances * Added documentation ## [1.0.3] - 2016-03-10 ### Added * Added documentation sources in mkdocs format. Documentation is now available online at http://phpgeo.marcusjaschen.de/ ## [1.0.2] - 2016-03-04 ### Changed * several optimizations in control structures ## [1.0.0] - 2016-02-11 ### Added * Added license information. *phpgeo* is now licensed under the GPL 3. (see issue [#8](https://github.com/mjaschen/phpgeo/issues/8)) ## [0.4.0] - 2015-10-29 ### Deprecated * removed support for PHP 5.3; introduced short array syntax ## [0.3.0] - 2015-10-29 ### Added * added the new Polyline class (thanks [@paulvl](https://github.com/paulvl))