2016-11-22 6 views
0

Ich versuche, ein beliebiges Polygon zu gleichmäßig verteilten Punkten zu konvertieren. Aufgrund der Größe des Polygons (oder seiner Begrenzungsbox) ist es NICHT möglich, zuerst ein Gitter zu erstellen und dann Punkte zu testen, wenn sie sich innerhalb oder außerhalb des Polygons befinden. außerhalb des Polygons polygon with coordinatesPolygon-Bereich zu Punkten

einfach zu wiederholen, die Punkte müssen nicht getestet werden, ob sie innerhalb oder außerhalb der sind: Es muss eine andere Art und Weise (wenn möglich ...)

Beispiel Polygon mit regelmäßigen Raster erfolgen Polygon.

+4

Ich sehe keine klare Frage. Was sollte ein Ergebnis sein? Benötigen Sie eine Polygonrasterung? – MBo

+0

Das Ergebnis sollte die Punkte innerhalb der Polygon sein. Ähnlich einer Rasterung. – kdb

Antwort

0

Vielleicht könnten Sie Gitterlinien absuchen: ausgehend von einem Punkt ein wenig links vom Polygon (dh mit x kleiner als das Minimum der Scheitelpunkte xs) berechnen Sie alle Schnittpunkte dieser Linie mit den Kanten und ordnen Sie dann nach x; Alle Gitterpunkte auf der Linie vor der ersten Kreuzung liegen außerhalb des Polygons, alle zwischen der ersten und der zweiten liegen innerhalb und so weiter. Sie müssen dies für alle Gitterlinien mit ys zwischen dem Minimum und dem Maximum der Scheitelpunkte tun. Wenn das Polygon also groß ist, ist es immer noch eine Menge Bearbeitung.

+0

Ja, das ist die Lösung, die ich auch gefunden habe (habe keine Benachrichtigungen über Antworten auf meine Frage bekommen ... hätte mir Zeit gespart ... grrr ...). Ich berechne die Schnittpunkte jeder horizontalen Linie mit dem Polygon und berechne dann die Punkte zwischen den Schnittpunkten. Verwendet Shapely, um dies zu tun. Ich glaube, es wäre noch schneller, entlang der Polygonkanten zu laufen, um die Punkte zu berechnen, dann nach y und dann nach x zu sortieren und dann die Punkte dazwischen zu berechnen. Sollte ziemlich geradlinig sein, aber ich hatte noch keine Zeit, das zu tun – kdb