2012-09-05 2 views
0

polygones Java et Zone

Ok donc j'ai un certain nombre de polygones (décrit en blanc dans l'image). Dans une tentative d'ajouter tous les polygones ensemble pour obtenir un polygone, qui est la limite externe de chacun d'entre eux, j'ai converti chaque polygone (classe java) en une zone (classe java), puis ajouté le zones avec la méthode add (Area a) fournie par la classe Area. De là, j'ai converti la zone en un polygone et l'ai dessiné comme un polygone rempli (la zone violette dans l'image).

Ce n'est cependant pas ce à quoi je m'attendais. Quelqu'un peut-il penser à un où je peux le faire correctement, ou au moins simplement ajouter la zone de triangle à mon polygone?

Lorsque je dessine simplement tous les polygones séparés avec un remplissage, j'obtiens ce que je veux (dessiné) mais j'ai besoin d'une représentation Polygone de celui-ci.

What I want

+0

Seriez-vous daltonien? Cela ne me semble pas mauve! Aussi, si ce n'était pas ce que vous attendiez, qu'attendez-vous? – cheeken

+0

Je ne m'attendais pas à ce qui apparaît dans la première image (en haut). J'attendais la deuxième image (en bas, sans l'écart de triangle au milieu qui apparaît dans le haut). – user1135469

+2

Pour une meilleure aide plus rapidement, postez un [SSCCE] (http://sscce.org/). –

Répondre

0

Je recommande d'utiliser JTS. Créez simplement vos géométries que vous souhaitez combiner et utilisez la méthode union. Ensuite, vous pouvez utiliser la nouvelle géométrie et la peindre en utilisant votre code précédent. Exemple de code simple pour l'union:

// build polygon p1 
Polygon p1 = new GeometryFactory().createPolygon(new Coordinate[]{new Coordinate(0,0), new Coordinate(0,10), new Coordinate(10,10), new Coordinate(10,0), new Coordinate(0,0)}); 
// build polygon p2 
Polygon p2 = new GeometryFactory().createPolygon(new Coordinate[]{new Coordinate(0,0), new Coordinate(0,30), new Coordinate(5,30), new Coordinate(5,0), new Coordinate(0,0)}); 
// calculate polygon3 as the union of p1 and p2 
Polygon p3 = (Polygon) p1.union(p2); 
// print simple WKT 
System.out.println(p3.toText()); 

sortie dans ce cas est (comme prévu):

POLYGON ((0 0, 0 10, 0 30, 5 30, 5 10, 10 10, 10 0, 5 0, 0 0))