Wie zeichne ich die Punkte in einer ESRI Linienzug angesichts der Begrenzungsrahmen als lat / long und die „Punkte“ als Radiant?

StackOverflow https://stackoverflow.com/questions/2794290

Frage

Ich verwende OpenMap und lese ich ein Shapefile mit com.bbn.openmap.layer.shape.ShapeFile. Der Begrenzungskasten wird in als lat / long Punkten lesen, zum Beispiel 39.583642, -104,895486. Der Begrenzungsrahmen ist ein linken unteren Punkt und einem oberen rechten Punkt, darstellt, in dem die Punkte enthalten sind. Die „Punkte“, die „Radiant“ in OpenMap, sind in einem anderen Format benannt werden, die wie folgt aussieht: [0.69086486, -1,8307719, 0,6908546, -1,8307716, 0,6908518, -1,8307717, 0,69085056, -1,8307722, 0,69084936, -1,8307728 , 0.6908477, -1,8307738, 0,69084626, -1,8307749, 0,69084185, -1,8307792].

Wie konvertiere ich die Punkte wie „0.69086486, -1,8307719“ in x, y-Koordinaten, die in normalen Grafiken verwendbar sind?

Ich glaube, alles, was wir brauchen hier eine Art Konvertierung, weil die Punkte in Excel zu bringen und die grafische Darstellung ihnen eine Kurve, deren schafft entspricht der Kurve der Straße an der angegebenen Stelle (lat / long). Allerdings müssen die Achsen manuell eingestellt werden, und ich habe keinen Hinweis, wie man die Achsen einzustellen, da der gegebene Begrenzungsrahmen in einem anderen Format als die angegebenen Punkte zu sein scheint.

Die ESRI-Shape-Datei technische Beschreibung scheint nicht zu erwähnen ( http: //www.esri.com/library/whitepapers/pdfs/shapefile.pdf ).

War es hilfreich?

Lösung

0.69086486, -1.8307719 ist eine Breite und eine Länge im Bogenmaß.

Zuerst Konvertit Grad (multipliziert mit (180 / pi)), dann werden Sie gemeinsame Einheiten zwischen Begrenzungsrahmen und Ihren Koordinaten.

Dann können Sie alles in einem lokalen Rahmen mit folgenden plotten:

x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)

(latitude0, longitude0) die Koordinaten eines Referenzpunktes (beispielsweise die linke untere Ecke des Begrenzungsrahmens) Einheiten sind Grad für Winkel und m für Entfernungen

Bearbeiten - Erklärung: Dies ist eine orthographische Projektion der Erde als eine Kugel, deren Radius betrachtet wird 6378137,0 m (große Halbachse des Ellipsoids WGS84), auf den Punkt zentriert (LAT0, lon0)

Andere Tipps

In OpenMap, gibt es eine Reihe von Möglichkeiten, um zu konvertieren von Radianten in Dezimalgraden:

Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal)  // Standard java library

Für eine Reihe können Sie ProjMath.arrayDegToRad (double [] radvals) verwenden;

Seien Sie vorsichtig mit dieser letzten, es macht die Umwandlung statt. Wenn Sie also ein lat / lon-Array von einem OMPoly greifen, eine Kopie davon machen, bevor es zu konvertieren. Andernfalls, werden Sie vermasseln die internen Koordinaten des OMPoly, die es in Radiant zu sein erwartet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top