境界ボックスをLAT/LONGとして、「ポイント」をラジアンとして与えて、ESRIポリラインにポイントを描くにはどうすればよいですか?
質問
私はOpenMapを使用しており、com.bbn.openmap.layer.shape.shapefileを使用してShapeFileを読んでいます。境界ボックスは、39.583642、-104.895486など、LAT/ロングポイントとして読み取られます。境界ボックスは、左下のポイントであり、ポイントが含まれる場所を表す右上点です。 OpenMapで「Radians」と名付けられた「ポイント」は別の形式であり、[0.69086486、-1.8307719、0.6908546、-1.8307716、0.6908518、-1.8307717、0.69056、-1.830722、0.830722、0.8056、-1.830722、0.83056、-1.830722、0.83056、-1.830722、 、0.6908477、-1.8307738、0.69084626、-1.8307749、0.69084185、-1.8307792]。
「0.69086486、-1.8307719」などのポイントをx、y座標に通常のグラフィックスで使用できるy座標に変換するにはどうすればよいですか?
ここで必要なのは何らかの変換だけだと思います。なぜなら、ポイントをExcelに持ち込み、それらをグラフ化すると、特定の場所(LAT/LONG)の道路の曲線と一致する曲線が作成されるからです。ただし、軸を手動で調整する必要があり、指定された境界ボックスは指定されたポイントとは異なる形式であるように見えるため、軸を調整する方法として参照はありません。
ESRI ShapeFileの技術的な説明はこれに言及していないようです(http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf).
解決
0.69086486, -1.8307719
ラジアンの緯度と経度です。
最初に、学位((180/PI)を掛けます)に変換すると、境界ボックスと座標の間に共通のユニットがあります。
次に、次のものを使用して、すべてをローカルフレームでプロットできます。
x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)
(latitude0、経度0)は、基準点の座標です(たとえば、境界ボックスの左下隅)ユニットは 度 角度と メーター 距離用
編集 - 説明:これは、半径が6378137.0 m(WGS84楕円体の半軸軸)である球体と見なされる地球の正書法の投影であり、ポイントを中心としています(LAT0、LON0)
他のヒント
OpenMapには、ラジアンから小数の程度に変換する方法がいくつかあります。
Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal) // Standard java library
配列の場合、projmath.arraydegtorad(double [] radvals)を使用できます。
その最後のものには注意してください、それはその場で変換を行います。したがって、OMPOLYからLAT/LONアレイをつかむ場合は、変換する前に最初にコピーを作成します。それ以外の場合は、オンプリーの内部座標を台無しにします。これは、ラジアンにあると予想されます。