2

我是一名新手程序员,正在为智能手机开发基于 JavaScript 的 Web 应用程序。

应用程序使用 navigator.geolocation API 获取经度和纬度。

我需要一个基于 JavaScript 的函数来使用 Polyconic Transformation 将获得的位置转换为 Easting & Northing 以及我需要支持的“Everest - India 1830”基准面。同样需要一个反函数来将东/北转换为经度/纬度。

在互联网上进行研究后,我遇到了proj4js。但是,我无法非常清楚地了解所需转换的程序,也没有找到足够的文档。

提前致谢。

4

1 回答 1

2

好的,使用 Spatialreference.org 的 REST 服务,您可以获得此投影的定义 (http://spatialreference.org/ref/sr-org/7345/proj4/),结果是

+proj=poly +lat_0=33.625 +lon_0=77.375 +x_0=0 +y_0=0 +a=6377301.243 +b=6356100.228368102 +units=m +no_defs

要使其与 proj4 一起工作,请在 defs/ 文件夹中创建一个定义文件,SRORG7345.js其中包含以下内容:

Proj4js.defs["SRORG7345"] = "+proj=poly +lat_0=33.625 +lon_0=77.375 +x_0=0 +y_0=0 +a=6377301.243 +b=6356100.228368102 +units=m +no_defs";

然后执行此操作以从 EPSG:4236 转换为您的新投影:

<html>
<Script src='proj4js-compressed.js'></script>
<script src='defs/EPSG4236.js'></script>
<script src='defs/SRORG7345.js'></script>
<script>
// creating source and destination Proj4js objects
// once initialized, these may be re-used as often as needed
var source = new Proj4js.Proj('EPSG:4236');    //source coordinates will be in Longitude/Latitude
var dest = new Proj4js.Proj('SRORG7345');     //IndiaPolyConic

var p = new Proj4js.Point(-76.0,45.0);   //any object will do as long as it has 'x' and 'y' properties
Proj4js.transform(source, dest, p);      //do the transformation.  x and y are modified in place

console.log(p);
</script>
</html>

我注意到,根据 proj4js 项目页面,多锥转换“尚未针对任何测试点进行验证”,因此您可能需要对这些结果进行一些检查。

于 2012-06-15T14:44:38.400 回答