diff --git a/CHANGELOG.md b/CHANGELOG.md index 9848592..cf28321 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased ### Added +- PostGIS ST_LineFromEncodedPolyline support - PostGIS ST_LineLocatePoint support ## [1.6.1](https://github.com/clickbar/laravel-magellan/tree/1.6.1) - 2024-08-08 diff --git a/src/Database/PostgisFunctions/MagellanGeometryConstructorFunctions.php b/src/Database/PostgisFunctions/MagellanGeometryConstructorFunctions.php index 1f35d40..c44a179 100644 --- a/src/Database/PostgisFunctions/MagellanGeometryConstructorFunctions.php +++ b/src/Database/PostgisFunctions/MagellanGeometryConstructorFunctions.php @@ -5,6 +5,7 @@ use Clickbar\Magellan\Database\MagellanExpressions\GeoParam; use Clickbar\Magellan\Database\MagellanExpressions\MagellanBaseExpression; use Clickbar\Magellan\Database\MagellanExpressions\MagellanGeometryExpression; +use Illuminate\Database\Query\Expression; trait MagellanGeometryConstructorFunctions { @@ -29,4 +30,15 @@ public static function collect($geometryArrayOrSet): MagellanGeometryExpression { return MagellanBaseExpression::geometry('ST_Collect', [GeoParam::wrap($geometryArrayOrSet)]); } + + /** + * Creates a LineString from an Encoded Polyline string. + * + * + * @see https://postgis.net/docs/ST_LineFromEncodedPolyline.html + */ + public static function lineFromEncodedPolyline(string|Expression|\Closure $polyline, float|Expression|\Closure|null $precision = null): MagellanGeometryExpression + { + return MagellanBaseExpression::geometry('ST_LineFromEncodedPolyline', [$polyline, $precision]); + } }