经纬度 (WGS84) 到多锥变换的转换
Posted
技术标签:
【中文标题】经纬度 (WGS84) 到多锥变换的转换【英文标题】:Longitude Latitude (WGS84) to Polyconic Transformation Conversion 【发布时间】:2012-06-15 13:38:58 【问题描述】:我是一名新手程序员,正在为智能手机开发基于 javascript 的 Web 应用程序。
应用程序使用 navigator.geolocation API 获取经度和纬度。
我需要一个基于 JavaScript 的函数来使用 Polyconic Transformation 将获得的位置转换为东向和北向,并使用我需要支持的“珠穆朗玛峰 - 印度 1830”基准面。同样需要一个反函数来将东/北转换为经度/纬度。
在互联网上进行研究后,我遇到了proj4js。但是,我无法非常清楚地了解所需转换的程序,也没有找到足够的文档。
提前致谢。
【问题讨论】:
你知道你所追求的投影的空间参考吗?我似乎无法在这里找到它spatialreference.org/ref/?search=polyconic&srtext=Search,并且唯一提到珠穆朗玛峰 1830 的结果是“未知”(spatialreference.org/ref/epsg/4015)。如果没有这个,您似乎需要自己编写转换,这将是......棘手的。 我所拥有的数据的变量是:半长轴 - 6377301.243,E2 - 6.63784606842344E-03,反向展平 - 300.801731007717。抱歉,我对地图投影和基准面的了解不是很清楚。谢谢! 我认为是“SR-ORG:7345”-IndiaPolyConic。 【参考方案1】:好的,使用 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 一起使用,请在名为 SRORG7345.js
的 defs/ 文件夹中创建一个定义文件,其中包含以下内容:
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 项目页面,多锥转换“尚未针对任何测试点进行验证”,因此您可能需要对这些结果进行一些检查。
【讨论】:
以上是关于经纬度 (WGS84) 到多锥变换的转换的主要内容,如果未能解决你的问题,请参考以下文章
经纬度之间互相转换(高德转百度,高德转wgs84,百度转高德,百度转wgs84,wgs84转百度,wgs84转高德)