public static PointList fromLineString(LineString lineString) { final PointList pointList = new PointList(); for (Coordinate coordinate : lineString.getCoordinates()) { pointList.add(new GHPoint(coordinate.y, coordinate.x)); } return pointList; }
public Object getProperty(Object object, QName name) throws Exception { LineString lineString = (LineString) object; if (GML.coordinates.equals(name)) { return lineString.getCoordinateSequence(); } return null; } }
public void removeFromHash(Map<Coordinate, List<LineString>> nodes, LineString ls) { Coordinate key = ls.getCoordinateN(0); List<LineString> nodeList = nodes.get(key); if (nodeList != null) { nodeList.remove(ls); } key = ls.getCoordinateN(ls.getNumPoints() - 1); nodeList = nodes.get(key); if (nodeList != null) { nodeList.remove(ls); } }
public static Geometry pointN(Geometry arg0, Integer arg1) { if (!(arg0 instanceof LineString) || arg1 == null) return null; LineString _this = (LineString) arg0; if (arg1 < 0 || arg1 >= _this.getNumPoints()) return null; return _this.getPointN(arg1); }
/** simple linestring merge - l1 points then l2 points */ private LineString mergeSimple(LineString l1, LineString l2) { List<Coordinate> clist = new ArrayList<Coordinate>(Arrays.asList(l1.getCoordinates())); clist.addAll(Arrays.asList(l2.getCoordinates())); return l1.getFactory().createLineString(clist.toArray(new Coordinate[1])); }
private LinearRing readRing() throws IOException, ParseException { LineString ls = (LineString) readGeometry(); if (!(ls instanceof LinearRing)) { if (!ls.isClosed()) { if (ls instanceof CompoundCurve) { CompoundCurve cc = (CompoundCurve) ls; List<LineString> components = cc.getComponents(); Coordinate start = components.get(0).getCoordinateN(0); LineString lastGeom = components.get(components.size() - 1); Coordinate end = lastGeom.getCoordinateN((lastGeom.getNumPoints() - 1)); components.add(factory.createLineString(new Coordinate[] {start, end})); ls = factory.createCurvedGeometry(components); } else { Coordinate start = ls.getCoordinateN(0); Coordinate end = ls.getCoordinateN((ls.getNumPoints() - 1)); ls = new CompoundRing(cc.getComponents(), cc.getFactory(), cc.getTolerance()); } else { ls = new LinearRing(ls.getCoordinateSequence(), ls.getFactory());
super.add( new LineSegment( ls.getCoordinateN(0), ls.getCoordinateN(ls.getNumPoints() - 1))); Coordinate[] coordinates = ls.getCoordinates(); List<Coordinate> coordinateList = Arrays.asList(coordinates); if (!ls.getCoordinateN(0).equals(lineSegment.p0)) { nCoordinateList.add(0, lineSegment.p0); } else if (!ls.getCoordinateN(ls.getNumPoints() - 1).equals(lineSegment.p1)) { nCoordinateList.add(lineSegment.p1);
public void testEncode2D() throws Exception { LineString line = GML3MockData.lineStringLite2D(); CoordinateSequence seq = line.getCoordinateSequence(); Document doc = encode(seq, GML.posList); checkPosListOrdinates(doc, 2 * line.getNumPoints()); }
List<?> toList(Polygon p) { BasicDBList l = new BasicDBList(); if (!CGAlgorithms.isCCW(p.getExteriorRing().getCoordinates())) { l.add(toList(p.getExteriorRing().reverse().getCoordinates())); } else { l.add(toList(p.getExteriorRing().getCoordinateSequence())); } for (int i = 0; i < p.getNumInteriorRing(); i++) { l.add(toList(p.getInteriorRingN(i).getCoordinateSequence())); } return l; } }
/** * Returns the perimeter of a LineString. * * @param lineString the LineString for which the perimeter is calculated. * @return the perimeter (length) of the lineString. */ protected double getPerimeter(LineString lineString) { double perimeter = 0.0d; int numberOfPoints = lineString.getNumPoints(); Coordinate[] coordinates = lineString.getCoordinates(); for (int i = 0; i < (numberOfPoints - 1); i++) { perimeter += coordinates[i].distance(coordinates[i + 1]); } return perimeter; } }
final int N = ls.getNumPoints(); final boolean isLinearRing = ls instanceof LinearRing; retain.add(ls.getCoordinateN(0)); Coordinate firstCoord = ls.getCoordinateN(i0); Coordinate midCoord; Coordinate lastCoord; while (i2 < N) { midCoord = ls.getCoordinateN(i1); lastCoord = ls.getCoordinateN(i2); firstCoord = ls.getCoordinateN(i0); retain.add(ls.getCoordinateN(N - 1)); ? ls.getFactory().createLinearRing(retain.toArray(new Coordinate[size])) : ls.getFactory().createLineString(retain.toArray(new Coordinate[size]));
public void testReadLine() throws Exception { SimpleFeatureCollection fc = dataStore.getFeatureSource(tname(getLine3d())).getFeatures(); try (SimpleFeatureIterator fr = fc.features()) { assertTrue(fr.hasNext()); LineString ls = (LineString) fr.next().getDefaultGeometry(); // 1 1 0, 2 2 0, 4 2 1, 5 1 1 assertEquals(4, ls.getCoordinates().length); assertTrue(new Coordinate(1, 1, 0).equals3D(ls.getCoordinateN(0))); assertTrue(new Coordinate(2, 2, 0).equals3D(ls.getCoordinateN(1))); assertTrue(new Coordinate(4, 2, 1).equals3D(ls.getCoordinateN(2))); assertTrue(new Coordinate(5, 1, 1).equals3D(ls.getCoordinateN(3))); } }
shellPart[currentPart] = true; currentPart++; currentPoint += polygon.getExteriorRing().getNumPoints(); shellPart[currentPart] = false; currentPart++; currentPoint += polygon.getInteriorRingN(holeIndex).getNumPoints();
return null; if (ls.isClosed() && !simplified.isClosed()) { CoordinateSequence source = simplified.getCoordinateSequence(); int numCoordinates = source.size(); LiteCoordinateSequence dest = new LiteCoordinateSequence(numCoordinates + 1, 2); simplified = simplified.getFactory().createLinearRing(dest); return offsets.get(0); } else { GeometryFactory factory = offsets.get(0).getFactory(); MultiLineString result = factory.createMultiLineString(offsets.toArray(new LineString[offsets.size()]));
/** http://jira.codehaus.org/browse/GEOT-2937 */ @Test public void testDecimatePseudoRing() { // a long rectangle made of 3 coordinates LineString g = gf.createLineString(csf.create(new double[] {0, 0, 0, 10, 0, 0})); assertTrue(g.isValid()); Decimator d = new Decimator(4, 4); d.decimate(g); g.geometryChanged(); assertTrue(g.isValid()); assertEquals(3, g.getCoordinateSequence().size()); }
public Coordinate getCoordinateN(int n) { return lineString.getCoordinateN(n); }
@Test public void emptyLineString() throws Exception { LineString line = builder.lineString(); assertTrue(line.isEmpty()); assertEquals(2, line.getCoordinateSequence().getDimension()); }
spany = -1; CoordinateSequence originalSequence = ls.getCoordinateSequence(); LiteCoordinateSequence seq = LiteCoordinateSequenceFactory.lite(originalSequence); boolean loop = ls instanceof LinearRing; if (seq != originalSequence) { if (loop) { ls = ls.getFactory().createLinearRing(seq); } else { ls = ls.getFactory().createLineString(seq);
@Test public void testDistance() throws Exception { LineString ls = gf.createLineString(csf.create(new double[] {0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5})); Decimator d = new Decimator(identity, new Rectangle(0, 0, 5, 5), 0.8); d.decimateTransformGeneralize((Geometry) ls.copy(), identity); assertEquals(6, ls.getNumPoints()); d = new Decimator(identity, new Rectangle(0, 0, 5, 5), 1); d.decimateTransformGeneralize(ls, identity); assertEquals(4, ls.getNumPoints()); d = new Decimator(identity, new Rectangle(0, 0, 5, 5), 6); d.decimateTransformGeneralize(ls, identity); assertEquals(2, ls.getNumPoints()); }
public void testPropertyEqualWithFunction() throws Exception { Function function = new GeometryFunction(); // see if coordinates gets flipped, urn forces lat/lon interpretation PropertyIsEqualTo original = ff.equals(ff.property("geom"), function); PropertyIsEqualTo clone = (PropertyIsEqualTo) original.accept(reprojector, null); assertNotSame(original, clone); assertEquals(clone.getExpression1(), original.getExpression1()); LineString clonedLs = (LineString) clone.getExpression2().evaluate(null); assertTrue(15 == clonedLs.getCoordinateN(0).x); assertTrue(10 == clonedLs.getCoordinateN(0).y); assertTrue(25 == clonedLs.getCoordinateN(1).x); assertTrue(20 == clonedLs.getCoordinateN(1).y); assertEquals(CRS.decode("EPSG:4326"), clonedLs.getUserData()); }