private static Point computeLineCentroid(Polyline polyline) { double xSum = 0; double ySum = 0; double weightSum = 0; for (int i = 0; i < polyline.getPathCount(); i++) { Point startPoint = polyline.getPoint(polyline.getPathStart(i)); Point endPoint = polyline.getPoint(polyline.getPathEnd(i) - 1); double dx = endPoint.getX() - startPoint.getX(); double dy = endPoint.getY() - startPoint.getY(); double length = sqrt(dx * dx + dy * dy); weightSum += length; xSum += (startPoint.getX() + endPoint.getX()) * length / 2; ySum += (startPoint.getY() + endPoint.getY()) * length / 2; } return new Point(xSum / weightSum, ySum / weightSum); }
if (!multiType && ((Polyline) geometry).getPathCount() <= 1) { return new OGCLineString((Polyline) geometry, 0, null);
public JSONObject toMonitorJSON() throws JSONException { JSONObject json = new JSONObject(); json.put("time", sample().time()); json.put("point", GeometryEngine.geometryToWkt(estimate().point().geometry(), WktExportFlags.wktExportPoint)); Polyline routes = monitorRoute(estimate()); if (routes.getPathCount() > 0) { json.put("route", GeometryEngine.geometryToWkt(routes, WktExportFlags.wktExportMultiLineString)); } JSONArray candidates = new JSONArray(); for (MatcherCandidate candidate : vector()) { JSONObject jsoncandidate = new JSONObject(); jsoncandidate.put("point", GeometryEngine.geometryToWkt(candidate.point().geometry(), WktExportFlags.wktExportPoint)); jsoncandidate.put("prob", Double.isInfinite(candidate.filtprob()) ? "Infinity" : candidate.filtprob()); routes = monitorRoute(candidate); if (routes.getPathCount() > 0) { jsoncandidate.put("route", GeometryEngine.geometryToWkt(routes, WktExportFlags.wktExportMultiLineString)); } candidates.put(jsoncandidate); } json.put("candidates", candidates); return json; }
private Polyline preparePolyline_(Polyline input_geom) { // Generalize it firstly using 25% of the densification deviation as a // criterion. Polyline generalized_polyline = (Polyline) ((OperatorGeneralize) OperatorFactoryLocal .getInstance().getOperator(Operator.Type.Generalize)).execute( input_geom, m_densify_dist * 0.25, false, m_progress_tracker); int path_point_count = 0; for (int i = 0, npath = generalized_polyline.getPathCount(); i < npath; i++) { path_point_count = Math.max(generalized_polyline.getPathSize(i), path_point_count); } if (path_point_count < 32) { m_bfilter = false; return generalized_polyline; } else { m_bfilter = true; // If we apply a filter to the polyline, then we have to resolve all // self intersections. Polyline simple_polyline = (Polyline) (TopologicalOperations .planarSimplify(generalized_polyline, m_small_tolerance, false, true, m_progress_tracker)); // Operator_factory_local::SaveJSONToTextFileDbg("c:/temp/buffer_simplify.txt", // *simple_polyline, nullptr); return simple_polyline; } }
private Polyline preparePolyline_(Polyline input_geom) { // Generalize it firstly using 25% of the densification deviation as a // criterion. Polyline generalized_polyline = (Polyline) ((OperatorGeneralize) OperatorFactoryLocal .getInstance().getOperator(Operator.Type.Generalize)).execute( input_geom, m_densify_dist * 0.25, false, m_progress_tracker); int path_point_count = 0; for (int i = 0, npath = generalized_polyline.getPathCount(); i < npath; i++) { path_point_count = Math.max(generalized_polyline.getPathSize(i), path_point_count); } if (path_point_count < 32) { m_bfilter = false; return generalized_polyline; } else { m_bfilter = true; // If we apply a filter to the polyline, then we have to resolve all // self intersections. Polyline simple_polyline = (Polyline) (TopologicalOperations .planarSimplify(generalized_polyline, m_small_tolerance, false, true, m_progress_tracker)); // Operator_factory_local::SaveJSONToTextFileDbg("c:/temp/buffer_simplify.txt", // *simple_polyline, nullptr); return simple_polyline; } }
private static Point2D computePolylineCentroid(Polyline polyline) { double xSum = 0; double ySum = 0; double weightSum = 0; Point2D startPoint = new Point2D(); Point2D endPoint = new Point2D(); for (int i = 0; i < polyline.getPathCount(); i++) { polyline.getXY(polyline.getPathStart(i), startPoint); polyline.getXY(polyline.getPathEnd(i) - 1, endPoint); double dx = endPoint.x - startPoint.x; double dy = endPoint.y - startPoint.y; double length = sqrt(dx * dx + dy * dy); weightSum += length; xSum += (startPoint.x + endPoint.x) * length / 2; ySum += (startPoint.y + endPoint.y) * length / 2; } return new Point2D(xSum / weightSum, ySum / weightSum); }
private static Point2D computePolylineCentroid(Polyline polyline) { double xSum = 0; double ySum = 0; double weightSum = 0; Point2D startPoint = new Point2D(); Point2D endPoint = new Point2D(); for (int i = 0; i < polyline.getPathCount(); i++) { polyline.getXY(polyline.getPathStart(i), startPoint); polyline.getXY(polyline.getPathEnd(i) - 1, endPoint); double dx = endPoint.x - startPoint.x; double dy = endPoint.y - startPoint.y; double length = sqrt(dx * dx + dy * dy); weightSum += length; xSum += (startPoint.x + endPoint.x) * length / 2; ySum += (startPoint.y + endPoint.y) * length / 2; } return new Point2D(xSum / weightSum, ySum / weightSum); }
/** * Tests {@link Geometries#tryMergePolylines(Object, Iterator)}. */ @Test @Override public void testTryMergePolylines() { super.testTryMergePolylines(); final Polyline poly = (Polyline) geometry; assertEquals("pathCount", 3, poly.getPathCount()); } }
/** * Tests {@link ESRI#createPolyline(int, Vector...)}. */ @Test @Override public void testCreatePolyline() { super.testCreatePolyline(); final Polyline poly = (Polyline) geometry; assertEquals("pathCount", 2, poly.getPathCount()); }
private static Point computeLineCentroid(Polyline polyline) { double xSum = 0; double ySum = 0; double weightSum = 0; for (int i = 0; i < polyline.getPathCount(); i++) { Point startPoint = polyline.getPoint(polyline.getPathStart(i)); Point endPoint = polyline.getPoint(polyline.getPathEnd(i) - 1); double dx = endPoint.getX() - startPoint.getX(); double dy = endPoint.getY() - startPoint.getY(); double length = sqrt(dx * dx + dy * dy); weightSum += length; xSum += (startPoint.getX() + endPoint.getX()) * length / 2; ySum += (startPoint.getY() + endPoint.getY()) * length / 2; } return new Point(xSum / weightSum, ySum / weightSum); }
private static Point computeLineCentroid(Polyline polyline) { double xSum = 0; double ySum = 0; double weightSum = 0; for (int i = 0; i < polyline.getPathCount(); i++) { Point startPoint = polyline.getPoint(polyline.getPathStart(i)); Point endPoint = polyline.getPoint(polyline.getPathEnd(i) - 1); double dx = endPoint.getX() - startPoint.getX(); double dy = endPoint.getY() - startPoint.getY(); double length = sqrt(dx * dx + dy * dy); weightSum += length; xSum += (startPoint.getX() + endPoint.getX()) * length / 2; ySum += (startPoint.getY() + endPoint.getY()) * length / 2; } return new Point(xSum / weightSum, ySum / weightSum); }
&& m_current_path_index == m_polyline.getPathCount()) { Polyline pol = m_polyline; m_polyline = null; if (m_current_path_index == m_polyline.getPathCount()) m_polyline = null;
&& m_current_path_index == m_polyline.getPathCount()) { Polyline pol = m_polyline; m_polyline = null; if (m_current_path_index == m_polyline.getPathCount()) m_polyline = null;
if (!multiType && ((Polyline) geom).getPathCount() == 1) return new OGCLineString((Polyline) geom, 0, sr); else
if (!multiType && ((Polyline) geom).getPathCount() == 1) return new OGCLineString((Polyline) geom, 0, sr); else
if (!multiType && ((Polyline) geometry).getPathCount() <= 1) { return new OGCLineString((Polyline) geometry, 0, null);
if (!multiType && ((Polyline) geometry).getPathCount() <= 1) { return new OGCLineString((Polyline) geometry, 0, null);
if (!multiType && ((Polyline) geometry).getPathCount() <= 1) { return new OGCLineString((Polyline) geometry, 0, null);
Polyline polyline = (Polyline) geom; if (polyline.getPathCount() == 1 && polyline.getPointCount() == 2) { if (!polyline.getXY(0).equals(polyline.getXY(1))) return true; // vacuously true
Polyline polyline = (Polyline) geom; if (polyline.getPathCount() == 1 && polyline.getPointCount() == 2) { if (!polyline.getXY(0).equals(polyline.getXY(1))) return true; // vacuously true