webgis深入实战

投影体系坐标转换

投影体系知识

投影类型
  • 投影载体
    分为圆柱形/圆锥形/单面等,
    webgis为圆柱形投影,圆柱罩住整个球体,投影后展开圆柱,为长方形;
    圆锥投影则为南北两个扇面;
    单面,球面直接投影到墙上则为圆。
  • 轴方位
    投影载体的轴方位,分为正轴/横轴/斜轴,webgis为正轴投影。
    轴垂直为正轴,水平为横轴,倾斜为斜轴,用于以不同的点为中心,不同轴方位的研究,
  • 相等属性
    分为等角/等积/等距,
    等角用于航海、航空等,保证行驶角度确定,而无所谓面积和距离的变化,圆柱投影为等角;
    等积用于计算国土、海洋等面积恒定;
    等距,则是距离恒定。
地球椭球转换
  • 大地坐标系
    有北京54/西安80/wgs84坐标系等,wgs84为webgis常用经纬坐标系
  • 七参数
    不同坐标系有不同的长短轴,扁率,原点,转换需要XYZ的平移量、旋转量以及坐标系的比例因子七个参数
    其中△X,△Y,△Z是坐标平移量,R(ω)是旋转矩阵,(1+m)是比例因子
二维转换

四参数转换,为原点平移量,x和y的旋转角度和比例因子,webgis基本旋转都为90,180等极易计算的角度

墨卡托投影

为webgis基础投影,正轴等角圆柱投影的一种,假定地球长短半轴相等,都为6378137米,经度和纬度转换成米后范围则都为
[-20037508.3427892, 20037508.3427892],当纬度趋向90度则无穷大,所以在85度处截止,使整个投影成正方形方便计算。
wgs84与墨卡托,两个坐标系方向相同,也无旋转角度,所以只需要尺度变换即可
wgs84坐标系:

                        90°
                         ∧
                         │
            -180° ───────┼─────────> 180°(单位:度)
                         │
                        -90°

mercator坐标系:

                  20037508.34 m
                       ∧
                       │
 -20037508.34 m ───────┼─────────> 20037508.34 m(单位:米)
                       │
                       V
                    -20037508.34 m

wgs84坐标系转换公式为
X = lon /180*20037508.34
Y = ln(tan(( lat +90°)/2*PI/180))/PI*20037508.34
(lon为经度,lat为纬度)

屏幕坐标

接下来要显示到浏览器中,则米单位还要转换为像素,此时要引入分辨率,单位为米/像素,屏幕坐标以左上角为(0,0),y轴与墨卡托相反:

             -100 pixels
                 │
-100 pixels ─────┼─────────> 1280 pixels
                 │
                 v
              1024 pixels

所以其公式为
pixX = (X -bound.left)/resolution + offset.left
pixY = (bound.top- Y )/resolution + offset.top
(bound为当前视野范围墨卡托坐标,bound.left为左上角x,bound.top为y,resolution为分辨率,通过级别预先设定,offset则为当前地图dom对象所在偏移)

切图算法

为了webgis显示效率,地图厂商将世界地图切割成各个小图,浏览器访问时,只需要加载这个范围那部分图,加快访问速度。
市面上流行的webgis厂商有谷歌、百度等,切图算法大致相同,只是原点有所不同
以下以谷歌为例,谷歌切图原点为左上角,级别1时为一张图,级别2为2张图,级别n为2^(n-1)张图,我们称瓦片。
任一点所在瓦片其编号为
numX = (X+20037508.34)/2^(n-1)
numY = (20037508.34-Y)/2^(n-1)
而百度的原点是经纬度原点附近,具体偏移量各处不同,当numY为负时,转为M(-numY-1)

纠偏

坐标系分类

目前市面上webgis经纬坐标系主要有三种,
wgs84——利用卫星定位的坐标,gps设备上报一般为这个格式,
gcj02——国测局坐标系,国家要求所有地图厂商进入市场的地图都加入国测局加偏算法,所以又被戏称火星坐标系
bd09ll——百度坐标系,在国测局基础上再加了层加偏

纠偏算法

国测局加偏算法,并不是由规律的,而是每个地区不同程度的加偏,所以没有线性公式可以计算,国家又明令禁止不允许暴露算法,
所以虽有民间算法可以反推,但并不准确。也就是说gps只能正向转化为其他坐标系而不能反转。但是一个地区的加偏基本固定,也可以通过统计积累反推,但需要存储大量数据。

路网分析

拟路化

利用百度鹰眼平台,http://lbsyun.baidu.com/index.php?title=yingyan/api/v3/all ,实现绑路
将点位上传到该平台,再获取绑路后的数据即可

空间分析

点到折线最近距离、投影点

折线的每个线段,与目标点形成三角形,在起点或终点为钝角,该点则为投影点,与目标点距离则为最近距离;
为锐角,则为垂线交点,垂直距离为最近距离。

点是否在多边形内

点往左边放出射线,相交点数为奇数则为形内,否则为外

两个经纬度点的距离

转为墨卡托投影,计算距离

专题特效

聚合效果

  • 点位过多,密集恐惧
  • 缩放范围过大时,清除原点位,新建一个点位,标题写明区域内点位数量的数字
  • 聚合区域范围可以将屏幕进行格子分割, 获取视野范围坐标系,将整个世界分割成格子,并给每个格子计算序号,同一序号的点坐标为同一区域的点

热力图

你可能感兴趣的:(javascript)