@SqlNullable @Description("Returns a multi-point geometry formed from input points") @ScalarFunction("ST_MultiPoint") @SqlType(GEOMETRY_TYPE_NAME) public static Slice stMultiPoint(@SqlType("array(" + GEOMETRY_TYPE_NAME + ")") Block input) { MultiPoint multipoint = new MultiPoint(); for (int i = 0; i < input.getPositionCount(); i++) { if (input.isNull(i)) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, format("Invalid input to ST_MultiPoint: null at index %s", i + 1)); } Slice slice = GEOMETRY.getSlice(input, i); OGCGeometry geometry = deserialize(slice); if (!(geometry instanceof OGCPoint)) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, format("Invalid input to ST_MultiPoint: geometry is not a point: %s at index %s", geometry.geometryType(), i + 1)); } OGCPoint point = (OGCPoint) geometry; if (point.isEmpty()) { throw new PrestoException(INVALID_FUNCTION_ARGUMENT, format("Invalid input to ST_MultiPoint: empty point at index %s", i + 1)); } multipoint.add(point.X(), point.Y()); } if (multipoint.getPointCount() == 0) { return null; } return serialize(createFromEsriGeometry(multipoint, null, true)); }
@Override public Geometry createInstance() { return new MultiPoint(m_description); }
public OGCMultiPoint(SpatialReference sr) { esriSR = sr; multiPoint = new MultiPoint(); }
@Override public Geometry createInstance() { return new MultiPoint(m_description); }
public OGCMultiPoint(SpatialReference sr) { esriSR = sr; multiPoint = new MultiPoint(); }
public OGCMultiPoint(Point startPoint, SpatialReference sr) { multiPoint = new MultiPoint(); multiPoint.add((Point) startPoint); esriSR = sr; }
public OGCMultiPoint(Point startPoint, SpatialReference sr) { multiPoint = new MultiPoint(); multiPoint.add((Point) startPoint); esriSR = sr; }
@Override public Geometry createInstance() { return new MultiPoint(getDescription()); }
@Override public Geometry createInstance() { return new MultiPoint(getDescription()); }
@Override public OGCGeometry boundary() { return new OGCMultiPoint(new MultiPoint(getEsriGeometry() .getDescription()), esriSR);// return empty point }
@Override public OGCGeometry boundary() { return new OGCMultiPoint(new MultiPoint(getEsriGeometry() .getDescription()), esriSR);// return empty point }
public OGCMultiPoint(OGCPoint startPoint, OGCPoint endPoint) { multiPoint = new MultiPoint(); multiPoint.add((Point) startPoint.getEsriGeometry()); multiPoint.add((Point) endPoint.getEsriGeometry()); esriSR = startPoint.esriSR; }
public OGCMultiPoint(OGCPoint startPoint, OGCPoint endPoint) { multiPoint = new MultiPoint(); multiPoint.add((Point) startPoint.getEsriGeometry()); multiPoint.add((Point) endPoint.getEsriGeometry()); esriSR = startPoint.esriSR; }
static Geometry pointSymDiffPoint_(Point point_a, Point point_b, double tolerance, ProgressTracker progress_tracker) { double tolerance_cluster = tolerance * Math.sqrt(2.0) * 1.00001; double tolerance_cluster_sq = tolerance_cluster * tolerance_cluster; Point2D pt_a = point_a.getXY(); Point2D pt_b = point_b.getXY(); MultiPoint multi_point = new MultiPoint(point_a.getDescription()); if (Point2D.sqrDistance(pt_a, pt_b) > tolerance_cluster_sq) { multi_point.add(point_a); multi_point.add(point_b); } return multi_point; }
static Geometry pointSymDiffPoint_(Point point_a, Point point_b, double tolerance, ProgressTracker progress_tracker) { double tolerance_cluster = tolerance * Math.sqrt(2.0) * 1.00001; double tolerance_cluster_sq = tolerance_cluster * tolerance_cluster; Point2D pt_a = point_a.getXY(); Point2D pt_b = point_b.getXY(); MultiPoint multi_point = new MultiPoint(point_a.getDescription()); if (Point2D.sqrDistance(pt_a, pt_b) > tolerance_cluster_sq) { multi_point.add(point_a); multi_point.add(point_b); } return multi_point; }
@Override public OGCGeometry boundary() { if (isEmpty()) return new OGCMultiPoint(this.getEsriSpatialReference()); if (isClosed()) return new OGCMultiPoint(new MultiPoint(getEsriGeometry() .getDescription()), esriSR);// return empty multipoint; else return new OGCMultiPoint(startPoint(), endPoint()); } }
@Override public OGCGeometry boundary() { if (isEmpty()) return new OGCMultiPoint(this.getEsriSpatialReference()); if (isClosed()) return new OGCMultiPoint(new MultiPoint(getEsriGeometry() .getDescription()), esriSR);// return empty multipoint; else return new OGCMultiPoint(startPoint(), endPoint()); } }
Geometry normalizeIntersectionOutput(Geometry geom, int GT_1, int GT_2) { if (GT_1 == Geometry.GeometryType.Point || GT_2 == Geometry.GeometryType.Point) { assert (geom.getType().value() == Geometry.GeometryType.Point); } if (GT_1 == Geometry.GeometryType.MultiPoint) { if (geom.getType().value() == Geometry.GeometryType.Point) { MultiPoint mp = new MultiPoint(geom.getDescription()); if (!geom.isEmpty()) mp.add((Point) geom); return mp; } } return geom; }
Geometry normalizeIntersectionOutput(Geometry geom, int GT_1, int GT_2) { if (GT_1 == Geometry.GeometryType.Point || GT_2 == Geometry.GeometryType.Point) { assert (geom.getType().value() == Geometry.GeometryType.Point); } if (GT_1 == Geometry.GeometryType.MultiPoint) { if (geom.getType().value() == Geometry.GeometryType.Point) { MultiPoint mp = new MultiPoint(geom.getDescription()); if (!geom.isEmpty()) mp.add((Point) geom); return mp; } } return geom; }
public BytesWritable evaluate(DoubleWritable ... xyPairs) throws UDFArgumentLengthException{ if (xyPairs == null || xyPairs.length == 0 || xyPairs.length%2 != 0) { LogUtils.Log_VariableArgumentLengthXY(LOG); return null; } try { MultiPoint mPoint = new MultiPoint(); for (int i=0;i<xyPairs.length;i+=2){ mPoint.add(xyPairs[i].get(), xyPairs[i+1].get()); } return GeometryUtils.geometryToEsriShapeBytesWritable(OGCGeometry.createFromEsriGeometry(mPoint, null, true)); } catch (Exception e) { LogUtils.Log_InternalError(LOG, "ST_MultiPoint: " + e); return null; } }