JAVA区分曲线和直线
JAVA distinguish curved line from straight line
我遇到一个问题,我不确定如何判断给定的 (com.esri.arcgis.geometry.Polyline) 多段线是否笔直。我的代码适用于直线但不适用于曲线。我的问题是我不确定如何从多段线中获取点列表,也不确定在获取此点列表后如何检查直线是否笔直。代码如下:
else if (shape instanceof Polyline) {
Polyline line = (Polyline) shape;
Point lowerLeft = (Point) line.getEnvelope().getLowerLeft();
Point upperRight = (Point) line.getEnvelope().getUpperRight();
Point midpoint = GeometryUtil.getMidpoint(lowerLeft, upperRight);
midpoint.setSpatialReferenceByRef(ActiveMapContainer.getInstance()
.getMapBean().getSpatialReference());
GeometryUtil.projectLatLong(midpoint);
您可以使用"getLength()" 方法获取折线上的点数。
您可以使用"getPoint(int i)"方法获得每个点。
可能有更好的方法,但我会检查线是否笔直:
1. 计算第一个点和最后一个点之间的距离。
2. 将它与整个折线的长度进行比较。如果两者相等(可能使用某种可接受的长度差异 - "delta"),则假设该线是直的。如果它们的差异大于 "delta",则假设这条线不直。
我遇到一个问题,我不确定如何判断给定的 (com.esri.arcgis.geometry.Polyline) 多段线是否笔直。我的代码适用于直线但不适用于曲线。我的问题是我不确定如何从多段线中获取点列表,也不确定在获取此点列表后如何检查直线是否笔直。代码如下:
else if (shape instanceof Polyline) {
Polyline line = (Polyline) shape;
Point lowerLeft = (Point) line.getEnvelope().getLowerLeft();
Point upperRight = (Point) line.getEnvelope().getUpperRight();
Point midpoint = GeometryUtil.getMidpoint(lowerLeft, upperRight);
midpoint.setSpatialReferenceByRef(ActiveMapContainer.getInstance()
.getMapBean().getSpatialReference());
GeometryUtil.projectLatLong(midpoint);
您可以使用"getLength()" 方法获取折线上的点数。 您可以使用"getPoint(int i)"方法获得每个点。
可能有更好的方法,但我会检查线是否笔直: 1. 计算第一个点和最后一个点之间的距离。 2. 将它与整个折线的长度进行比较。如果两者相等(可能使用某种可接受的长度差异 - "delta"),则假设该线是直的。如果它们的差异大于 "delta",则假设这条线不直。