public Object getProperty(Object object, QName name) throws Exception { if ("pointMember".equals(name.getLocalPart())) { MultiPoint multiPoint = (MultiPoint) object; Point[] members = new Point[multiPoint.getNumGeometries()]; for (int i = 0; i < members.length; i++) { members[i] = (Point) multiPoint.getGeometryN(i); } GML3EncodingUtils.setChildIDs(multiPoint); return members; } return null; } }
public void write(ByteBuffer buffer, Object geometry) { MultiPoint mp = (MultiPoint) geometry; Envelope box = mp.getEnvelopeInternal(); buffer.putDouble(box.getMinX()); buffer.putDouble(box.getMinY()); buffer.putDouble(box.getMaxY()); buffer.putInt(mp.getNumGeometries()); for (int t = 0, tt = mp.getNumGeometries(); t < tt; t++) { Coordinate c = (mp.getGeometryN(t)).getCoordinate(); buffer.putDouble(c.x); buffer.putDouble(c.y); double[] zExtreame = JTSUtilities.zMinMax(mp.getCoordinates()); for (int t = 0; t < mp.getNumGeometries(); t++) { Coordinate c = (mp.getGeometryN(t)).getCoordinate(); double z = c.z; for (int t = 0, tt = mp.getNumGeometries(); t < tt; t++) { Point point = (Point) mp.getGeometryN(t); mvalues.add(point.getCoordinateSequence().getM(0));
private static void writeMultiPoint(MultiPoint geometry, SliceOutput output) { output.writeByte(GeometrySerializationType.MULTI_POINT.code()); output.writeInt(EsriShapeType.MULTI_POINT.code); writeEnvelope(geometry, output); output.writeInt(geometry.getNumPoints()); for (Coordinate coordinate : geometry.getCoordinates()) { writeCoordinate(coordinate, output); } }
/** * Converts a <code>MultiPoint</code> to <MultiPoint Text> format, then appends it to the * writer. * * @param multiPoint the <code>MultiPoint</code> to process * @param writer the output writer to append to */ private void appendMultiPointText(MultiPoint multiPoint, int level, Writer writer) throws IOException { if (multiPoint.isEmpty()) { writer.write("EMPTY"); } else { writer.write("("); for (int i = 0; i < multiPoint.getNumGeometries(); i++) { if (i > 0) { writer.write(", "); indentCoords(i, level + 1, writer); } writer.write("("); appendCoordinate(((Point) multiPoint.getGeometryN(i)).getCoordinate(), writer); writer.write(")"); } writer.write(")"); } }
public DBObject toObject(MultiPoint mp) { if (opportunisticMultiGeometryCoversion && mp.getNumGeometries() == 1) { return toObject((Point) mp.getGeometryN(0)); } return BasicDBObjectBuilder.start() .add("type", "MultiPoint") .add("coordinates", toList(mp.getCoordinates())) .get(); }
/** * Converts a <code>MultiPoint</code> to <MultiPoint Text> format, then * appends it to the writer. * *@param multiPoint the <code>MultiPoint</code> to process *@param writer the output writer to append to */ private void appendMultiPointText(MultiPoint multiPoint, int level, Writer writer) throws IOException { if (multiPoint.isEmpty()) { writer.write(" "); } else { int level2 = level; for (int i = 0; i < multiPoint.getNumGeometries(); i++) { if (i > 0) { level2 = level + 1; } appendPoint(multiPoint.getGeometryN(i).getCoordinate(), level2, writer, multiPoint.getPrecisionModel()); } } }
/** * Returns the MultiPoint with vertex order reversed. We do our own * implementation here because JTS does not handle it. * * @param mp MultiPoint * @return MultiPoint with vertex order reversed */ public static Geometry reverseMultiPoint(MultiPoint mp) { int nPoints = mp.getNumGeometries(); Point[] revPoints = new Point[nPoints]; for (int i = 0; i < nPoints; i++) { revPoints[nPoints - 1 - i] = (Point) mp.getGeometryN(i).reverse(); } return mp.getFactory().createMultiPoint(revPoints); } }
public void test3D() throws Exception { GML3MockData.multiPoint3D(document, document); MultiPoint multiPoint = (MultiPoint) parse(); assertNotNull(multiPoint); assertEquals(4, multiPoint.getNumPoints()); Point p = (Point) multiPoint.getGeometryN(0); assertTrue(new Coordinate(1d, 2d, 10d).equals3D(p.getCoordinate())); }
MultiPoint v = (MultiPoint) geom; gen.writeFieldName("coordinates"); write(gen, v.getCoordinates()); return; } else if (geom instanceof MultiLineString) {
else if (source instanceof MultiPoint && sourceGeometry.getNumGeometries() == 1) destGeometry = ((MultiPoint) source).getGeometryN(0).copy(); else { if (LOGGER.isLoggable(Level.FINE))
/** * Calcuates the record length of this object. * * @return int The length of the record that this shapepoint will take up in a shapefile */ public int getLength(Object geometry) { MultiPoint mp = (MultiPoint) geometry; int length; if (shapeType == ShapeType.MULTIPOINT) { // two doubles per coord (16 * numgeoms) + 40 for header length = (mp.getNumGeometries() * 16) + 40; } else if (shapeType == ShapeType.MULTIPOINTM) { // add the additional MMin, MMax for 16, then 8 per measure length = (mp.getNumGeometries() * 16) + 40 + 16 + (8 * mp.getNumGeometries()); } else if (shapeType == ShapeType.MULTIPOINTZ) { // add the additional ZMin,ZMax, plus 8 per Z length = (mp.getNumGeometries() * 16) + 40 + 16 + (8 * mp.getNumGeometries()) + 16 + (8 * mp.getNumGeometries()); } else { throw new IllegalStateException("Expected ShapeType of Arc, got " + shapeType); } return length; }
assertTrue(geometryFactory.createMultiPolygon(new Polygon[] { }).isEmpty()); assertTrue(geometryFactory.createMultiLineString(new LineString[] { }).isEmpty()); assertTrue(geometryFactory.createMultiPoint(new Point[] { }).isEmpty()); assertTrue(geometryFactory.createMultiPolygon(new Polygon[] { }).getBoundary().isEmpty()); assertTrue(geometryFactory.createMultiLineString(new LineString[] { }).getBoundary().isEmpty()); assertTrue(geometryFactory.createMultiPoint(new Point[] { }).getBoundary().isEmpty()); assertTrue(geometryFactory.createMultiPolygon(null).isEmpty()); assertTrue(geometryFactory.createMultiLineString(null).isEmpty()); assertTrue(geometryFactory.createMultiPoint((Point[]) null).isEmpty()); assertEquals(1, (geometryFactory.createMultiPolygon(null)).getBoundaryDimension()); assertEquals(0, (geometryFactory.createMultiLineString(null)).getBoundaryDimension()); assertEquals(-1, (geometryFactory.createMultiPoint((Point[]) null)).getBoundaryDimension()); assertEquals(0, (geometryFactory.createMultiPolygon(null)).getNumPoints()); assertEquals(0, (geometryFactory.createMultiLineString(null)).getNumPoints()); assertEquals(0, (geometryFactory.createMultiPoint((Point[]) null)).getNumPoints()); assertEquals(0, (geometryFactory.createMultiPolygon(null)).getCoordinates().length); assertEquals(0, (geometryFactory.createMultiLineString(null)).getCoordinates().length); assertEquals(0, (geometryFactory.createMultiPoint((Point[]) null)).getCoordinates().length);
Point[] pointArray = geometryFactory.toPointArray(geometries); MultiPoint multiPoint = geometryFactory.createMultiPoint(pointArray); multiPoint.setUserData(getSRS()); multiPoint.setSRID(getSRID()); LOGGER.fine("created " + multiPoint);
public void test() throws Exception { GML3MockData.multiPoint(document, document); MultiPoint multiPoint = (MultiPoint) parse(); assertNotNull(multiPoint); assertEquals(4, multiPoint.getNumPoints()); }
public Object parse(Handler arg, GeometryFactory gf) throws SAXException { // one child, either a coord // or a coordinate sequence if(arg.children.size()<1) throw new SAXException("Cannot create a multi-point without atleast one point"); int srid = getSrid(arg.attrs,gf.getSRID()); Point[] pts = (Point[]) arg.children.toArray(new Point[arg.children.size()]); MultiPoint mp = gf.createMultiPoint(pts); if(mp.getSRID()!=srid) mp.setSRID(srid); return mp; } });
points.setSRID(SRID);
private boolean isSimpleMultiPoint(MultiPoint mp) { if (mp.isEmpty()) return true; Set points = new TreeSet(); for (int i = 0; i < mp.getNumGeometries(); i++) { Point pt = (Point) mp.getGeometryN(i); Coordinate p = pt.getCoordinate(); if (points.contains(p)) { nonSimpleLocation = p; return false; } points.add(p); } return true; }
private void writeMultiPoint(MultiPoint geom, ValueSetter dest) { dest.setInt(geom.getNumPoints()); for(int i = 0; i < geom.getNumPoints(); ++i) { this.writeGeometry(geom.getGeometryN(i), dest); } }
MultiPoint v = (MultiPoint) geom; output.append("{\"type\":\"MultiPoint\",\"coordinates\":"); write(output, nf, v.getCoordinates()); output.append("}"); return;
/** * @todo Enable when #isSimple implemented */ // public void testLineStringIsSimple1() throws Exception { // Geometry g = reader.read("LINESTRING(10 10, 20 10, 15 20)"); // assertTrue(g.isSimple()); // } public void testLineStringGetBoundary1() throws Exception { LineString g = (LineString) reader.read("LINESTRING(10 10, 20 10, 15 20)"); assertTrue(g.getBoundary() instanceof MultiPoint); MultiPoint boundary = (MultiPoint) g.getBoundary(); assertTrue(boundary.getGeometryN(0).equals(g.getStartPoint())); assertTrue(boundary.getGeometryN(1).equals(g.getEndPoint())); }