Comment puis-je dessine les points dans un Esri Polyligne, compte tenu de la zone de délimitation comme lat / long et les « points » comme radians?

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

Question

J'utilise OpenMap et je lis un ShapeFile en utilisant com.bbn.openmap.layer.shape.ShapeFile. La zone de délimitation est lu comme lat / long des points, par exemple 39,583642, -104,895486. Le cadre de sélection est un point inférieur gauche et le point en haut à droite qui représente l'endroit où les points sont contenus. Les « points », qui sont nommés « radians » dans OpenMap, sont dans un format différent, qui ressemble à ceci: [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].

Comment puis-je convertir les points comme « 0,69086486, -1,8307719 » en coordonnées x, y qui sont utilisables dans les graphiques normaux?

Je crois que tout ce qui est nécessaire ici est une sorte de conversion, car apportant des points dans Excel et les crée une ligne graphique des dont la courbe correspond à la courbe de la route à l'endroit donné (latitude / longitude). Cependant, les axises doivent être ajustés manuellement et je ne référence que la façon de régler les axises, puisque la zone de délimitation donnée semble être dans un format différent de celui des points donnés.

La description technique Esri Shapefile ne semble pas mentionner ( http: //www.esri.com/library/whitepapers/pdfs/shapefile.pdf ).

Était-ce utile?

La solution

0.69086486, -1.8307719 est une latitude et une longitude en radians.

Tout d'abord, converti à des degrés (multiplier par (180 / pi)), alors vous aurez des unités communes entre votre boîte englobante et vos coordonnées.

Ensuite, vous pouvez tracer tout cela dans un cadre local avec ce qui suit:

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

(latitude0, longitude0) sont les coordonnées d'un point de référence (par exemple le coin inférieur gauche de la zone de délimitation) les unités sont degrés pour les angles et m pour des distances

Modifier - explication: Ceci est une projection orthogonale de la terre considérée comme une sphère dont le rayon est 6378137,0 m (demi-grand axe de l'ellipsoïde WGS84), centrée sur le point (lat0, lon0)

Autres conseils

Dans OpenMap, il y a un certain nombre de façons de convertir de radians en degrés décimaux:

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

Pour un tableau, vous pouvez utiliser ProjMath.arrayDegToRad (double [] radvals);

Soyez prudent avec ce dernier, il fait la conversion en place. Donc, si vous prenez une latitude / longitude tableau à partir d'un OMPoly, faire une copie avant de le convertir. Sinon, vous gâcher les coordonnées internes du OMPoly, qu'elle prévoit être en radians.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top