2017-05-18 6 views
0

Ich versuche, eine Sammlung von AnyLogic GISRegions nach ihrem geografischen Gebiet zu sortieren. Dieser Bereich wird unter Verwendung von GISRegion.area(units) berechnet, was einfach genug ist. Die Bereiche, die ich verwende, sind jedoch im Stadtmaßstab und die Methode gibt double zurück. Dies scheint Überlaufprobleme zu verursachen:AnyLogic: Ausgleich für doppelten Überlauf in GISRegion.area()

enter image description here

Ich glaube nicht, dass ich etwas falsch mit meinem Code mache, so vermutlich ist dies ein AnyLogic Problem. Der Kürze halber habe ich eine Zeile enthalten, die in der Region vorhandenen Bereich druckt, anstatt die Sortierschritte:

// For each region of the Australian Capital Territory, print its area in km^2: 
areas.forEach(next -> traceln(""+next.name+": " + next.gisRegion.area(SQ_KILOMETER))); 

Hat jemand dieses Problem gestoßen? Wie bist du dazu gekommen?

Für Nicht-AnyLogic-Benutzer habe ich alle Lat-Long-Punkte in jeder Geoshape. Wie kann ich den Bereich mit diesen Punkten berechnen?

Antwort

1

[Nicht wirklich eine vollständige Antwort, aber die Ideen sind zu lang für einen Kommentar.]

Ich nehme an, Sie haben eine AnyLogic-Support-Anfrage ausgelöst, da es 100% ein Fehler scheint. Da dies nur eine grundlegende Funktion ist, kann ich nichts anderes sehen, als, wie Sie vorschlagen, es auf eine alternative Weise aus dem Vertex lat/longs berechnen, die Sie haben, und kann über getPoints() auf gehen die GISRegion.

Da dies nur ein N-seitiges Polygon ist, muss es sicherlich Standard-Java-Bibliotheken geben, die das berechnen können, obwohl dies die GIS-Projektion nicht erlaubt (nicht sicher, welche Fehlerstufe eingeführt werden könnte); Sie würden erwarten, dass offene GIS-Bibliotheken mit letzterem zurechtkommen. Da eine GISRegion über eine createOMGraphicObject() Methode verfügt, um eine OpenMap-Standard (?) - Formatgrafik zu erstellen, könnte das nützlich sein, wenn dies ein Standardformat ist, mit dem andere Bibliotheken arbeiten können.

Es gibt einen Code auf Glennons Antwort auf this GIS StackOverflow question, der behauptet, die Berechnung durchzuführen (oder Sie können PostGIS wie in der Antwort von fmark einbinden).

+0

Das scheint ungefähr so ​​gut wie ich kann - danke! –

Verwandte Themen