我正在使用 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.690847 7、-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.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 获取纬度/经度数组,请在转换之前先复制它。否则,您将弄乱 OMPoly 的内部坐标,它预计以弧度为单位。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top