proj4坐标系转换
function wgs2gz2000(coords) {
const wgs84 = "+proj=longlat +datum=WGS84 +no_defs";
const gz2000 =
"+proj=tmerc +lat_0=0 +lon_0=113.283333333 +k=1 +x_0=39980 +y_0=-2329620 +ellps=GRS80 +units=m +no_defs";
return proj4(wgs84, gz2000, coords);
}
function gz2000wgs84(coords) {
const wgs84 = "+proj=longlat +datum=WGS84 +no_defs";
const gz2000 =
"+proj=tmerc +lat_0=0 +lon_0=113.283333333 +k=1 +x_0=39980 +y_0=-2329620 +ellps=GRS80 +units=m +no_defs";
return proj4(gz2000, wgs84, coords);
}Tmerc 是 Gauss Kruger 投影类型中的一种,在 Proj4 库中命名为 tmerc 。 在确定椭球体和大地基准面的基础上,Tmerc 投影还需要确定中央经线。
proj4 坐标转换具体参数
proj4 库使用所谓的“七参数”来定义自定义投影。这七个参数是:
- 投影名称:这是你给投影起的名字,可以是任何字符串,只要它在你的代码中是唯一的。
- 投影类型:这描述了投影的数学模型,如等角、等面积或等距。常见的类型包括“longlat”(经纬度)、“utm”(通用横轴墨卡托)和“stere”(立体)。
- 中央经度:这是投影的中心线经度。对于横轴墨卡托投影(如 UTM),这是中央子午线。
- 缩放因子:这是一个比例因子,用于调整投影的大小。对于等面积投影,缩放因子通常为 1。
- 纬度范围:这定义了投影覆盖的纬度范围。对于全球范围的投影,这可能是[-90,90],而对于区域范围的投影,这可能是更小的范围。
- 纬度原点:这是投影的纬度原点,通常与纬度范围有关。对于等角投影,原点通常是 0 度。
- 经度原点:这是投影的经度原点,通常与中央经度有关。对于 UTM 投影,经度原点通常是格林威治子午线。
import proj4
# 定义UTM投影的参数
projection_name = 'my_utm'
projection_type = 'utm'
central_meridian = 120 # 中央子午线为120度东经
scale_factor = 1
latitude_range = [0, 84] # 纬度范围为北纬0度到84度
latitude_origin = 0 # 纬度原点为0度
longitude_origin = 0 # 经度原点为0度(格林威治子午线)
# 定义自定义投影
projection = proj4.Proj(projection=projection_name, proj=projection_type, long_0=central_meridian, scale_factor=scale_factor, lat_ts=latitude_origin, lat_0=latitude_origin, lon_0=longitude_origin)
# 使用自定义投影进行坐标转换
longitude = 123.456
latitude = 45.678
x, y = projection(longitude, latitude)