如何在General Polygon Clipper(GPC)上获得两个多边形的交叉区域坐标?

时间:2014-10-29 13:55:44

标签: eclipse polygon clipping nutiteq gpc

我正在使用nutiteq库绘制多边形并使用.getVertexList()命令获取多边形的坐标。然后我将这些坐标转换为数组列表。然后我将这些坐标转换为另一个多边形列表。 GPC正在计算交点,并集,异或区域的整数值。然后我需要突出显示过程区域,因此我需要处理区域坐标,但我无法直接从GPC获取这些坐标。

我用于区域计算的代码如下。我该怎么做才能得到结果多边形的坐标? (我不能直接按照你的方式转换坐标here ...)

提前致谢。

public void IntersectionButton(View view) {
VectorElement selectedElement = mapView.getSelectedElement();
List<?> VisibleElements = selectedElement.getLayer().getVisibleElements();
ArrayList<Poly> polyList = new ArrayList<Poly>();
for (Object obj : VisibleElements) {
if (obj instanceof Polygon) {
            Polygon poly = (Polygon) obj;
            List<MapPos> geoList = poly.getVertexList();
 Poly p = new PolyDefault();
            for (MapPos pos : geoList) {
                p.add(pos.x, pos.y);
                }
             polyList.add(p);
         }

    }
 PolyDefault result = (PolyDefault) Clip.intersection(polyList.get(0), polyList.get(1));
 int area = (int) (((int) result.getArea()) * (0.57417));

1 个答案:

答案 0 :(得分:0)

结果多边形似乎具有您需要的所有方法:

  1. getNumPoints()获取外部多边形点的数量。
  2. getX(i)获取特定外部多边形点的X,并获取Y的getY(i)。
  3. getNumInnerPoly()获取多边形中的孔数
  4. getInnerPoly(i)获得特定的洞。您可以像外部多边形
  5. 一样以类似的方式遍历孔

    您可以根据此数据构建新的Nutiteq Polygon,创建外部MapPos列表以及内部多边形(孔)MapPos列表列表。什么是X和Y的值,它们是否需要进一步处理,是您可以调查的另一个问题。

相关问题