Geotools 小数位

Posted

技术标签:

【中文标题】Geotools 小数位【英文标题】:Geotools decimal places 【发布时间】:2019-08-15 08:29:26 【问题描述】:

我正在使用 geotools.js 将操作系统网格参考转换为纬度和经度。不幸的是,默认情况下(我相信)输出限制为小数点后 2 位。我需要它是小数点后 5 位以获得更准确的读数。

我已经尝试在我自己的代码中删除任何对小数位的引用,并查看了 geotools.js 文件以查看我可以在哪里更改它,但我不够聪明,无法弄清楚!

var osgb = new GT_OSGB();
if (osgb.parseGridRef(gridref)) 
    var wgs84=osgb.getWGS84();
    var lat = parseFloat(Math.round(wgs84.latitude * 100) /     100).toFixed(5);
    var long = parseFloat(Math.round(wgs84.longitude * 100) / 100).toFixed(5);
    var latlong = lat+','+long;

虽然在上面的代码中我将十进制值从 2 更改为 5,但所发生的只是小数位用零填充。所以我会得到 2 个十进制值,然后是 3 个零。请问有人知道怎么改吗?

【问题讨论】:

这看起来不像 java 代码 - 你确定你使用的是GeoTools 嗨,不,它不是 Java,它是移植的 javascript 版本 geotools.js。 【参考方案1】:

因为Math.round(1.783895237647 * 100) 将导致178。除以 100 不会神奇地恢复丢失的精度。

var lat = parseFloat(Math.round(wgs84.latitude * 100) /     100).toFixed(5);
var long = parseFloat(Math.round(wgs84.longitude * 100) / 100).toFixed(5);

应该是

var lat = parseFloat(wgs84.latitude).toFixed(5);
var long = parseFloat(wgs84.longitude).toFixed(5);

【讨论】:

非常感谢您!很明显是在被告知的时候,但我找错地方了!非常感谢!

以上是关于Geotools 小数位的主要内容,如果未能解决你的问题,请参考以下文章

GeoTools快速入门

java geotools

GeoTools介绍环境安装读取shp文件并显示

Geotools处理shape文件

将 ECQL 从 geotools 转换为 SQL

Geotools基本增删改查Feature