Summary
Methods:
fromString |
把坐标系定义的字符串转换为json对象。 |
forward |
从地理坐标转换到投影坐标,针对投影坐标系有效,如果Crs是地理坐标系返回地理坐标本身。 |
getCrsType |
获取坐标系的类型 |
getDegreePerMeter |
计算一米近似等于的多少度。度一般用来表示球状坐标系下的单位,米一般用来表示平面坐标系中单位。由于球状与平面两种坐标系转换过程产生误差,特别是这种误差受纬度影响最大, |
getExtent |
获取坐标系的范围 |
getFlattening | |
getMeterPerDegree |
计算一度近似等于多少米。 |
getName |
获取坐标系名称 |
getRadius |
获取坐标系使用椭球体的地球半径 |
getSemiMajorAxis |
获取坐标系采用的椭球体的长半轴长度 |
getSemiMinorAxis |
获取坐标系采用椭球体的短半轴长度 |
getSrid |
获取坐标系的空间参考标识srid |
getUnit |
获取当前坐标系的单位,米或者度 |
init |
初始化投影坐标系需要赋值的参数 |
inverse |
从投影坐标转换到地理坐标,针对投影坐标系有效,如果Crs是地理坐标系返回坐标本身。 |
Constructor
new Crs(srid, options)
构造函数
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
srid |
String | Number | 必选项,坐标系在EPSG中的唯一标识,比如srid为4326,3857等 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
options |
Object | String | 坐标系定义需要的参数。
|
Throws:
当第一个参数srid没有提供时,抛出异常:'The param srid must be supplied!'
Example
let crs1 = new hmap.proj.Crs('4326');
let crs2 = new hmap.proj.Crs('3857');
或者
let options = {
a: 6378137,
b: 6378137,
datumCode: "none",
k0: 1,
lat_ts: 0,
long0: 0,
no_defs: true,
projName: "merc",
title: "WGS 84 / Pseudo-Mercator",
units: "m",
x0: 0,
y0: 0
}
let crs3 = new hmap.proj.Crs('1234',options);
defs['EPSG:4214'] = "+proj=longlat +ellps=krass +datum=Beijing54 +no_defs"//Beijing54
let crs4 = new hmap.proj.Crs('4214');
Methods
-
static fromString(defString) → {Object}
-
把坐标系定义的字符串转换为json对象。
Parameters:
Name Type Description defString
String 字符串格式的坐标系定义,参考http://epsg.io网站上坐标系中Proj4js格式的坐标系定义。
Returns:
Object -返回json格式的坐标系定义。
Example
const crsStr = "+title=WGS 84 / Pseudo-Mercator +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"; let crsJson = hmap.proj.Crs.fromString(crsStr);
-
forward(coord) → {module:basetype~Coordinate}
-
从地理坐标转换到投影坐标,针对投影坐标系有效,如果Crs是地理坐标系返回地理坐标本身。
Parameters:
Name Type Description coord
module:basetype~Coordinate 地理坐标对象
-
getCrsType() → {String}
-
获取坐标系的类型
Returns:
String -若是地理坐标系,返回"GeoCRS";若是投影坐标系,返回"ProjCRS"。
-
getDegreePerMeter(atLat) → {Number}
-
计算一米近似等于的多少度。度一般用来表示球状坐标系下的单位,米一般用来表示平面坐标系中单位。由于球状与平面两种坐标系转换过程产生误差,特别是这种误差受纬度影响最大,
例如赤道地区(0度纬线处),经度方向每跨一度,大约等于实际距离110.94公里;越往两极地区每跨一个经度,其能代表的实际距离越小,到南北极时则近似等于0。
因此需要传入纬度来尽量抵消这一影响,最大程度上使转化结果逼近真实值。Parameters:
Name Type Description atLat
Number 纬度,单位为度,取值范围[-90,90]。不传时默认为45,尽可能兼顾南北半球转换精度。
Returns:
Number -每一米代表多少度
-
getExtent() → {module:basetype~Extent}
-
获取坐标系的范围
-
getFlattening(a, b) → {Number}
-
Parameters:
Name Type Description a
Number 长轴
b
Number 短轴
获取坐标系采用椭球体的扁率Returns:
Number -扁率
-
getMeterPerDegree(atLat) → {Number}
-
计算一度近似等于多少米。
度一般用来表示球状坐标系下的单位,米一般用来表示平面坐标系中单位。由于球状与平面两种坐标系转换过程产生误差,特别是这种误差受纬度影响最大,
例如赤道地区(0度纬线处),经度方向每跨一度,大约等于实际距离110.94公里;越往两极地区每跨一个经度,其能代表的实际距离越小,到南北极时则近似等于0。
因此需要传入纬度来尽量抵消这一影响,最大程度上使转化结果逼近真实值。Parameters:
Name Type Default Description atLat
Number 0 纬度,单位为度,取值范围[-90,90]。不传时默认为45,尽可能兼顾南北半球转换经度。
Returns:
Number -指定纬度处每一经度代表多少米
Example
//假设地图对象坐标系为4326 let lat=map.getCenter().getOrdinate("Y");//获取地图的中心点的纬度 let crs=new hmap.proj.Crs("4326");//坐标系对象,不同坐标系使用椭球体的地球半径不同 let m=crs.getMeterPerDegree(lat);//计算当前地图中心点对应纬度的每度对应的米
-
getName() → {String}
-
获取坐标系名称
Returns:
String -坐标系名称
-
getRadius() → {Number}
-
获取坐标系使用椭球体的地球半径
Returns:
Number -地球半径
-
getSemiMajorAxis() → {Number}
-
获取坐标系采用的椭球体的长半轴长度
Returns:
Number -长半轴长度
-
getSemiMinorAxis() → {Number}
-
获取坐标系采用椭球体的短半轴长度
Returns:
Number -短半轴长度
-
getSrid() → {String}
-
获取坐标系的空间参考标识srid
Returns:
String -唯一标识srid
-
getUnit() → {String}
-
获取当前坐标系的单位,米或者度
Returns:
String -坐标系的单位
-
init()
-
初始化投影坐标系需要赋值的参数
-
inverse(coord) → {module:basetype~Coordinate}
-
从投影坐标转换到地理坐标,针对投影坐标系有效,如果Crs是地理坐标系返回坐标本身。
Parameters:
Name Type Description coord
module:basetype~Coordinate 投影坐标对象