Как получить координаты области пересечения двух полигонов в General Polygon Clipper(GPC)?
Я использую библиотеку nutiteq для рисования полигонов и получения координат полигонов с помощью команды.getVertexList(). Затем я приведу эти координаты к списку массивов. Затем я приведу эти координаты к другому списку многоугольников. GPC вычисляет целочисленные значения пересечений, объединений, XOR и разностей областей. Затем мне нужно выделить область обработки, поэтому мне нужны координаты обработанных областей, но я не могу получить эти координаты напрямую из GPC.
Код, который я использую для расчета площади, приведен ниже. Что я должен сделать, чтобы получить координаты полигона результата?. (Кстати, я не могу привести координаты напрямую, как вы можете видеть здесь...)
Заранее спасибо.
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 ответ
Полученный полигон имеет все необходимые методы:
- getNumPoints (), чтобы получить количество точек внешнего многоугольника.
- getX (i), чтобы получить X определенной внешней точки многоугольника, и getY(i) для Y.
- getNumInnerPoly (), чтобы получить количество отверстий в многоугольнике
- getInnerPoly (i), чтобы получить определенную дыру. Вы проходите через отверстие аналогично внешнему многоугольнику
Вы можете построить новый полигон Nutiteq из этих данных, создать список MapPos для внешнего и список списка MapPos для внутренних полигонов (отверстий). Каковы значения X и Y, нуждаются ли они в дальнейшей обработке, это другой вопрос, который вы можете исследовать.