我正在使用OpenMap,而我正在使用com.bbn.openmap.layer.shape.ShapeFile读取ShapeFile。边界框作为纬度/长点读入,例如39.583642,-104.895486。边界框是左下角点和右上角点,表示包含点的位置。在OpenMap中命名为“弧度”的“点”采用不同的格式,如下所示:[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]。
如何将像“0.69086486,-1.8307719”这样的点转换为可在普通图形中使用的x,y坐标?
我相信这里所需要的只是某种转换,因为将这些点带入Excel并绘制它们会创建一条线,其曲线与给定位置(纬度/经度)的道路曲线相匹配。但是,轴需要手动调整,我没有参考如何调整轴,因为给定的边界框看起来与给定点的格式不同。
ESRI Shapefile技术说明似乎没有提到这一点(http://www.esri.com/library/whitepapers/pdfs/shapefile.pdf)。
答案 0 :(得分:1)
0.69086486, -1.8307719
是弧度的纬度和经度。
首先,转换为度数(乘以(180 / pi)),然后在边界框和坐标之间将有公共单位。
然后,您可以使用以下内容在本地框架中绘制所有内容:
x = (longitude-longitude0)*(6378137*pi/180)*cos(latitude0*pi/180)
y = (latitude-latitude0)*(6378137*pi/180)
(latitude0,longitude0)是参考点的坐标(例如边界框的左下角) 角度为度,距离米
编辑 - 说明: 这是地球的正交投影,被认为是一个半径为6378137.0米(WGS84椭圆体的半长轴)的球体,以点(lat0,lon0)为中心
答案 1 :(得分:0)
在OpenMap中,有许多方法可以从弧度转换为十进制度:
Length.DECIMAL_DEGREE.fromRadians(radVal);
Math.toDegrees(radVal) // Standard java library
对于数组,可以使用ProjMath.arrayDegToRad(double [] radvals);
小心使用最后一个,它会进行转换。因此,如果从OMPoly获取lat / lon数组,请在转换之前先复制它。否则,你将弄乱OMPoly的内部坐标,它预计是弧度。