Skip to content

Commit 2624925

Browse files
bchapuisjulianhyde
authored andcommitted
[CALCITE-5262] Add many spatial functions, including support for WKB (well-known binary) and GeoJSON
Add functions: * ST_AsBinary * ST_AsEWKT and ST_GeomFromEWKT * ST_AsGeoJSON and ST_GeomFromGeoJSON * ST_AsGML and ST_GeomFromGML * ST_AsWKB and ST_GeomFromWKB * ST_Centroid * ST_ConvexHull * ST_CoordDim * ST_Covers * ST_Difference and ST_SymDifference * ST_Dimension and ST_BoundingCircle * ST_Expand * ST_Extent * ST_ExteriorRing and ST_InteriorRing * ST_Force2D and ST_Force3D * ST_GeometryN * ST_Intersection * ST_IsClosed, ST_IsRectangle, ST_IsRing, ST_IsSimple, ST_IsValid, ST_IsEmpty * ST_LineMerge * ST_MakeEllipse and ST_MakePolygon * ST_MakeValid * ST_MinimumDiameter * ST_MinimumRectangle * ST_NumGeometries * ST_NumInteriorRing and ST_NumInteriorRings * ST_NumPoints * ST_OctagonalEnvelope * ST_PointN * ST_PointOnSurface * ST_Polygonize * ST_PrecisionReducer * ST_Relate * ST_Rotate * ST_Scale * ST_Simplify and ST_SimplifyPreserveTopology * ST_Snap * ST_SRID * ST_StartPoint and ST_EndPoint * ST_ToMultiLine and ST_ToMultiSegments * ST_ToMultiPoint * ST_Translate * ST_XMax, ST_XMin, ST_YMax, ST_YMin, ST_ZMin, ST_ZMax Improve documentation, aliases, and variable names. Set the extractOnlyPolygonal option to true in ST_Polygonize. Replace Esri by JTS in the acknowledgements. Close #2893
1 parent 479afa6 commit 2624925

File tree

6 files changed

+2066
-302
lines changed

6 files changed

+2066
-302
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to you under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
package org.apache.calcite.runtime;
18+
19+
import org.locationtech.jts.geom.Coordinate;
20+
import org.locationtech.jts.geom.CoordinateSequence;
21+
import org.locationtech.jts.geom.Geometry;
22+
import org.locationtech.jts.geom.impl.CoordinateArraySequence;
23+
import org.locationtech.jts.geom.util.GeometryTransformer;
24+
25+
import java.util.function.Function;
26+
import java.util.stream.Stream;
27+
28+
/**
29+
* Transforms the coordinates of a geometry.
30+
*/
31+
public class CoordinateTransformer extends GeometryTransformer {
32+
33+
private final Function<Coordinate, Coordinate> transform;
34+
35+
/**
36+
* Creates a transformer that applies the {@code transform} to all coordinates.
37+
*/
38+
public CoordinateTransformer(Function<Coordinate, Coordinate> transform) {
39+
this.transform = transform;
40+
}
41+
42+
@Override protected CoordinateSequence transformCoordinates(
43+
CoordinateSequence coordinateSequence, Geometry parent) {
44+
Coordinate[] coordinateArray =
45+
Stream.of(coordinateSequence.toCoordinateArray())
46+
.map(transform)
47+
.toArray(Coordinate[]::new);
48+
return new CoordinateArraySequence(coordinateArray);
49+
}
50+
51+
}

0 commit comments

Comments
 (0)