+ private Point2D getCenterPoint() {
+ if (centerPoint == null)
+ centerPoint = new Point2D.Double();
+
+ Rectangle2D bounds = path.getBounds2D();
+ centerPoint.setLocation(bounds.getCenterX(), bounds.getCenterY());
+ return centerPoint;
+ }
+
+ public static Line2D calculateLine(DistrictNetworkEdge edge, Line2D result) {
+ // Convert to screen coordinates
+ double startX = ModelledCRS.longitudeToX(edge.getStartPoint().getX());
+ double startY = ModelledCRS.latitudeToY(-edge.getStartPoint().getY()); // Invert for Simantics
+ double endX = ModelledCRS.longitudeToX(edge.getEndPoint().getX());
+ double endY = ModelledCRS.latitudeToY(-edge.getEndPoint().getY());// Invert for Simantics
+
+ if (result == null)
+ result = new Line2D.Double();
+ result.setLine(startX, startY, endX, endY);
+ return result;
+ }
+
+ public static Path2D calculatePath(DistrictNetworkEdge edge, Path2D result) {
+ // Convert to screen coordinates
+ double startX = ModelledCRS.longitudeToX(edge.getStartPoint().getX());
+ double startY = ModelledCRS.latitudeToY(-edge.getStartPoint().getY()); // Invert for Simantics
+ double endX = ModelledCRS.longitudeToX(edge.getEndPoint().getX());
+ double endY = ModelledCRS.latitudeToY(-edge.getEndPoint().getY());// Invert for Simantics
+
+ if (result == null) {
+ result = new Path2D.Double();
+ } else {
+ result.reset();
+ }
+ result.moveTo(startX, startY);
+ result.lineTo(endX, endY);
+ return result;
+ }
+