2012-11-09 4 views
0

J'ai un problème avec la visualisation du polygone sur Google Earth. Je lis le fichier .xlsx du haut vers le bas (en Java) et j'ai un ensemble de coordonnées (x, y). Mon application génère un fichier .kml en utilisant JAK lib. Après cela, lorsque j'importe ce fichier .kml dans google earth, j'ai mal les formes de polygones. Voici l'exemple:Tri des coordonnées polygonales KML (sens horaire, sens antihoraire)

wrong polygon shape

La chose est que, dans les coordonnées du fichier kml sont dans la séquence telles qu'elles apparaissent sur l'image. La dernière coordonnée est par défaut connectée à la première et c'est le problème. Comment puis-je trier les coordonnées que cette forme sera une rectagle? Bien sûr, c'est l'exemple le plus simple. J'ai des polygones beaucoup plus compliqués (dans le fichier) que le rectangle.

Répondre

0

Si vos polygones sont convexes, vous pouvez implémenter n'importe quel convex-hull algorithm. Cela fonctionnera pour votre exemple mais pas avec des polygones plus complexes.

+0

Oui. Merci beaucoup. J'ai fait ça. J'ai même trouvé un très bel algorithme de coque convexe écrit en Java. Malheureusement, certains polygones ne sont pas convexes. – szymon

1

La structure LinearRing de KML que vous utiliseriez dans le Polygone est un anneau, donc le polygone est tracé linéairement dans l'ordre que vous spécifiez dans l'anneau. Donc, si vous voulez dessiner un rectangle, il faut les ordonner 1, 2, 4 3.

Il n'y a rien dans KML pour lui dire d'interpréter l'anneau différemment. Vous devrez soit les trier dans votre application java lorsque vous lisez le XSLX, soit demander à celui qui vous fournit les données de vous envoyer la liste des points dans le bon ordre. Je ne suis pas sûr de ce que le domaine est de ce que vous faites, mais cela n'a pas de sens pour moi de vous les envoyer autrement que comme un anneau linéaire de points dans l'ordre que vous dessinez les lignes .

+0

Bien sûr, vous avez raison. Je sais que l'ordre est mauvais et je sais aussi que ce n'est pas une chose KML pour faire face au tri des coordonnées. Ma question est comment trier (en java) les coordonnées de sorte que j'obtiendrai un polygone de rectangle que celui que j'ai attaché sur l'image. – szymon

Questions connexes