没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
用 Proj4js 实现客户端坐标转换
Proj4js 用 javascript 重写了 Proj4 ,而且使客户 端对 坐 标 转 换 的 功 能 又 有 增 强 。 相传
OpenLayers 2.6 要增加坐标转换的功能,可只是提供了相关接口。现在 Proj4js 已经完善了
很多,如下代码实现了将在 WGS84 坐标系下的(108.80, 32.08) 的坐标转换为 google 投影
的过程:
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</meta><meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<script src="lib/OLprototype.js"></script>
<script src="lib/proj4js/proj4js-combined.js"></script>
<script type="text/javascript">
Proj4js.defs["EPSG:4326"] = "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ";
Proj4js.defs["EPSG:900913"] = "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0
+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";
var sourceProj = new Proj4js.Proj("WGS84");
var destProj = new Proj4js.Proj("EPSG:900913");
var p = new Proj4js.Point(108.80,32.08);
Proj4js.transform(sourceProj,destProj,p);
alert(p);
</script>
</meta>
请到 Proj4js 的主页上下载 Proj4js 最新的脚本文件
Google Map 以及 VirtualEarth 等 web gis 都采用一种特殊的投影坐标系 EPSG:900913,其实
这个 900913 并不是 EPSG 分配的编号,而是设计 Google Map 的工程师自己选定的一个编
号。该投影坐标系一开始不被 EPSG 组织承认(EPSG 认为这个坐标系的参数设定非常不符
合地理科学),后来因为使用的人越来越多,不得已承认了,但分配了一个别的编号
epsg:3785 而不是 900913。但是大多数程序员不知道,还一直使用 900913,呵呵。
关 于 epsg:3785 投 影 坐 标 系 的 详 细 参 数 如 下 : ( 参 考
http://spatialreference.org/ref/epsg/3785/)
+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0,0
+units=m +no_defs
上面这组参数是用于 PROJ4(一个著名的地理投影变换开源库)的,我用以上参数以及从中
国国家测绘局下载的中国地图数据和 Google Map 对照了一下发现 x 坐标(经度)没有差异,
但是 y 坐标有较大的差异。后来在下述网页 http://proj.maptools.org/faq.html 的最后一个问题
上发现需要一个额外的参数:
The coordinate system definition for Virtual Earth Mercator is as follows, which uses a sphere as
the earth model for the mercator projection.
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0
资源评论
liuben1985
- 粉丝: 1
- 资源: 18
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功