C++博客-Program The Future-随笔分类-WebGIS开发http://www.cppblog.com/issayandfaye/category/13295.html自省、自信。zh-cnFri, 23 Apr 2010 17:23:43 GMTFri, 23 Apr 2010 17:23:43 GMT60墨卡托投影、高斯-克吕格投影、UTM投影及我国分带方法http://www.cppblog.com/issayandfaye/archive/2010/04/23/113307.htmliSsayiSsayFri, 23 Apr 2010 02:11:00 GMThttp://www.cppblog.com/issayandfaye/archive/2010/04/23/113307.htmlhttp://www.cppblog.com/issayandfaye/comments/113307.htmlhttp://www.cppblog.com/issayandfaye/archive/2010/04/23/113307.html#Feedback0http://www.cppblog.com/issayandfaye/comments/commentRss/113307.htmlhttp://www.cppblog.com/issayandfaye/services/trackbacks/113307.html原文地址:http://tian0226.blog.sohu.com/142843049.html

一、墨卡托投影、高斯-克吕格投影、UTM投影

1. 墨卡托(Mercator)投影

 

    墨卡托(Mercator)投影,是一种"等角正切圆柱投影”,荷兰地图学家墨卡托(Gerhardus Mercator 1512-1594)在1569年拟定,假设地球被围在一中空的圆柱里,其标准纬线与圆柱相切接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体上,再把圆柱体展开,这就是一幅选定标准纬线上的“墨卡托投影”绘制出的地图。墨卡托投影没有角度变形,由每一点向各方向的长度比相等,它的经纬线都是平行直线,且相交成直角,经线间隔相等,纬线间隔从标准纬线向两极逐渐增大。墨卡托投影的地图上长度和面积变形明显,但标准纬线无变形,从标准纬线向两极变形逐渐增大,但因为它具有各个方向均等扩大的特性,保持了方向和相互位置关系的正确。在地图上保持方向和角度的正确是墨卡托投影的优点,墨卡托投影地图常用作航海图和航空图,如果循着墨卡托投影图上两点间的直线航行,方向不变可以一直到达目的地,因此它对船舰在航行中定位、确定航向都具有有利条件,给航海者带来很大方便。“海底地形图编绘规范”(GB/T 17834-1999,海军航保部起草)中规定1:25万及更小比例尺的海图采用墨卡托投影,其中基本比例尺海底地形图(1:5万,1:25万,1:100万)采用统一基准纬线30°,非基本比例尺图以制图区域中纬为基准纬线。基准纬线取至整度或整分。

    墨卡托投影坐标系取零子午线或自定义原点经线(L0)与赤道交点的投影为原点,零子午线或自定义原点经线的投影为纵坐标X轴,赤道的投影为横坐标Y轴,构成墨卡托平面直角坐标系。

2. 高斯-克吕格(Gauss-Kruger)投影和UTM(Universal Transverse Mercator)投影

(1)高斯-克吕格投影性质

    高斯-克吕格(Gauss-Kruger)投影简称“高斯投影”,又名"等角横切椭圆柱投影”,地球椭球面和平面间正形投影的一种。德国数学家、物理学家、天文学家高斯(Carl FriedrichGauss,1777一 1855)于十九世纪二十年代拟定,后经德国大地测量学家克吕格(Johannes Kruger,1857~1928)于 1912年对投影公式加以补充,故名。

    该投影按照投影带中央子午线投影为直线且长度不变和赤道投影为直线的条件,确定函数的形式,从而得到高斯一克吕格投影公式。投影后,除中央子午线和赤道为直线外, 其他子午线均为对称于中央子午线的曲线。设想用一个椭圆柱横切于椭球面上投影带的中央子午线,按上述投影条件,将中央子午线两侧一定经差范围内的椭球面正形投影于椭圆柱面。将椭圆柱面沿过南北极的母线剪开展平,即为高斯投影平面。取中央子午线与赤道交点的投影为原点,中央子午线的投影为纵坐标x轴,赤道的投影为横坐标y轴,构成高斯克吕格平面直角坐标系。

     高斯-克吕格投影在长度和面积上变形很小,中央经线无变形,自中央经线向投影带边缘,变形逐渐增加,变形最大之处在投影带内赤道的两端。由于其投影精度高,变形小,而且计算简便(各投影带坐标一致,只要算出一个带的数据,其他各带都能应用),因此在大比例尺地形图中应用,可以满足军事上各种需要,能在图上进行精确的量测计算。

(2)高斯-克吕格投影分带

     按一定经差将地球椭球面划分成若干投影带,这是高斯投影中限制长度变形的最有效方法。分带时既要控制长度变形使其不大于测图误差,又要使带数不致过多以减少换带计算工作,据此原则将地球椭球面沿子午线划分成经差相等的瓜瓣形地带,以便分带投影。通常按经差6度或3度分为六度带或三度带。六度带自0度子午线起每隔经差6度自西向东分带,带号依次编为第 1、2…60带。三度带是在六度带的基础上分成的,它的中央子午线与六度带的中央子午线和分带子午线重合,即自 1.5度子午线起每隔经差3度自西向东分带,带号依次编为三度带第 1、2…120带。我国的经度范围西起 73°东至135°,可分成六度带十一个,各带中央经线依次为75°、81°、87°、……、117°、123°、129°、135°,或三度带二十二个。六度带可用于中小比例尺(如 1:250000)测图,三度带可用于大比例尺(如 1:10000)测图,城建坐标多采用三度带的高斯投影。

(3)高斯-克吕格投影坐标

     高斯- 克吕格投影是按分带方法各自进行投影,故各带坐标成独立系统。以中央经线投影为纵轴(x), 赤道投影为横轴(y),两轴交点即为各带的坐标原点。纵坐标以赤道为零起算,赤道以北为正,以南为负。我国位于北半球,纵坐标均为正值。横坐标如以中央经线为零起算,中央经线以东为正,以西为负,横坐标出现负值,使用不便,故规定将坐标纵轴西移500公里当作起始轴,凡是带内的横坐标值均加 500公里。由于高斯-克吕格投影每一个投影带的坐标都是对本带坐标原点的相对值,所以各带的坐标完全相同,为了区别某一坐标系统属于哪一带,在横轴坐标前加上带号,如(4231898m,21655933m),其中21即为带号。   

(4)高斯-克吕格投影与UTM投影

    某些国外的软件如ARC/INFO或国外仪器的配套软件如多波束的数据处理软件等,往往不支持高斯-克吕格投影,但支持UTM投影,因此常有把UTM投影坐标当作高斯-克吕格投影坐标提交的现象。

    UTM投影全称为“通用横轴墨卡托投影”,是等角横轴割圆柱投影(高斯-克吕格为等角横轴切圆柱投影),圆柱割地球于南纬80度、北纬84度两条等高圈,该投影将地球划分为60个投影带,每带经差为6度,已被许多国家作为地形图的数学基础。UTM投影与高斯投影的主要区别在南北格网线的比例系数上,高斯-克吕格投影的中央经线投影后保持长度不变,即比例系数为1,而UTM投影的比例系数为0.9996。UTM投影沿每一条南北格网线比例系数为常数,在东西方向则为变数,中心格网线的比例系数为0.9996,在南北纵行最宽部分的边缘上距离中心点大约 363公里,比例系数为 1.00158。

    高斯-克吕格投影与UTM投影可近似采用 Xutm=0.9996 * X高斯,Yutm=0.9996 * Y高斯进行坐标转换。以下举例说明(基准面为WGS84):

   输入坐标(度) 高斯投影(米)  UTM投影(米)  Xutm=0.9996 * X高斯, Yutm=0.9996 * Y高斯
    纬度值(X)32     3543600.9      3542183.5            3543600.9*0.9996 ≈ 3542183.5
    经度值(Y)121   21310996.8      311072.4        (310996.8-500000)*0.9996+500000 ≈ 311072.4


注:坐标点(32,121)位于高斯投影的21带,高斯投影Y值21310996.8中前两位“21”为带号;坐标点(32,121)位于UTM投影的51带,上表中UTM投影的Y值没加带号。因坐标纵轴西移了500000米,转换时必须将Y值减去500000乘上比例因子后再加500000。


    单点转换步骤如下:   

    (1)选择是高斯正转换还是反转换,缺省为经纬度转换到高斯投影坐标,投影坐标单位为米。

    (2)选择大地基准面,缺省北京54,如果是GPS定位数据别忘了切换为WGS84。

    (3)选择分带,3度或6度, 缺省为6度。

    (4)输入中央经度,20带(114°E~120°E)中央经度为117度,21带(120°E~126°E)中央经度为123度。

    (5)如正向投影,选择经纬度输入数据格式,有三个选项,缺省为十进制度格式。具体输入方式如下例:

   格 式     原始纬度值                  原始经度值          输入纬度值            输入经度值
十进制度     35.445901°           122.997344°        35.445901           122.997344
  度分       35°26.7541′        122°59.8406′       3526.7541           12259.8406
 度分秒     35°26′45.245″   122°59′50.438″   352645.245        1225950.438


    (6)正投影按选定格式在“输入”栏输入经纬度值,反投影输入以米为单位的X、Y坐标值。

    (7)单击“单点转换”按钮。

    (8)在“输出”栏查看计算结果。         


     批量转换步骤如下:   

    (1)准备好需要转换的输入数据文件,要求是文本文件,分两列,第一列纬度值或纵向坐标值,第二列经度值或横向坐标值,两列之间用空格分开。正向投影时,纬度值及经度值格式可以有三种选择,缺省当作十进制度处理;反向投影时,纵向及横向坐标值必须以米为单位。

     下例为度分秒格式(WGS84)的6°带正投影输入数据文件 testdata.txt

          352645.245   1225950.438
          353800.402   1230000.378
          351600.519   1225959.506
          345800.101   1225959.8
          343600.336   1230000.26
          341400.018   1225959.897
          335159.17    1225959.46
          333000.08    1230000.28

    (2)选择是高斯正转换还是反转换,缺省为经纬度转换到高斯投影坐标,投影坐标单位为米。

    (3)选择大地基准面,缺省北京54,如果是GPS定位数据别忘了切换为WGS84。

    (4)选择分带,3度或6度, 缺省为6度。

    (5)输入中央经度,20带(114°E~120°E)中央经度为117度,21带(120°E~126°E)中央经度为123度。

    (6)如正向投影,选择输入数据文件中的经纬度输入数据格式,有三个选项,缺省为十进制度格式。

    (7)单击“批量转换”按钮。弹出打开文件对话框,输入你的数据文件名。

    (8)输入转换结果文件名,单击“保存”后,程序开始进行计算。

    (9)打开输出文件查看计算结果,结果分五列,第一序号,第二列输入纬度值或纵向坐标值,第三列输入经度值或横向坐标值,第四列转换后纬度值或纵向坐标值,第五列转换后经度值或横向坐标值。   

     下例为度分秒格式(WGS84)的6°带正投影转换结果数据文件 result.txt 

       1   352645.245   1225950.438    3924063.3     21499758.9
       2   353800.402   1230000.378    3944871.4     21500009.5
       3   351600.519   1225959.506    3904193.8     21499987.5
       4   345800.101   1225959.8      3870898.1     21499994.9
       5   343600.336   1230000.26     3830228.5     21500006.6
       6   341400.018   1225959.897    3789544.4     21499997.4
       7   335159.17    1225959.46     3748846.4     21499986.1
       8   333000.08    1230000.28     3708205       21500007.2

二、分带方法

    我国采用6度分带和3度分带: 

    1∶2.5万及1∶5万的地形图采用6度分带投影,即经差为6度,从零度子午线开始,自西向东每个经差6度为一投影带,全球共分60个带,用1,2,3,4,5,……表示.即东经0~6度为第一带,其中央经线的经度为东经3度,东经6~12度为第二带,其中央经线的经度为9度。

    1∶1万的地形图采用3度分带,从东经1.5度的经线开始,每隔3度为一带,用1,2,3,……表示,全球共划分120个投影带,即东经1.5~ 4.5度为第1带,其中央经线的经度为东经3度,东经4.5~7.5度为第2带,其中央经线的经度为东经6度.我省位于东经113度-东经120度之间,跨第38、39、40共计3个带,其中东经115.5度以西为第38带,其中央经线为东经114度;东经115.5~118.5度为39带,其中央经线为东经117度;东经118.5度以东到山海关为40带,其中央经线为东经120度。地形图上公里网横坐标前2位就是带号,例如:1∶5万地形图上的横坐标为20345486,其中20即为带号,345486为横坐标值。2.当地中央经线经度的计算六度带中央经线经度的计算:当地中央经线经度=6°×当地带号-3°,例如:地形图上的横坐标为20345,其所处的六度带的中央经线经度为:6°×20-3°=117°(适用于1∶2.5万和1∶5万地形图)。三度带中央经线经度的计算:中央经线经度=3°×当地带号(适用于1∶1万地形图)。



iSsay 2010-04-23 10:11 发表评论
]]>
WMS简介http://www.cppblog.com/issayandfaye/archive/2010/03/18/110029.htmliSsayiSsayThu, 18 Mar 2010 09:36:00 GMThttp://www.cppblog.com/issayandfaye/archive/2010/03/18/110029.htmlhttp://www.cppblog.com/issayandfaye/comments/110029.htmlhttp://www.cppblog.com/issayandfaye/archive/2010/03/18/110029.html#Feedback0http://www.cppblog.com/issayandfaye/comments/commentRss/110029.htmlhttp://www.cppblog.com/issayandfaye/services/trackbacks/110029.html目前市面上有多种基于互联网的在线地图服务,但是这些服务在互操作接口上缺少相应的行业规范,从而导致了Web地图服务的互操作的困难性。在GIS行业日渐蓬勃的今天,为了解决这个问题,GIS行业最主要的规范的制定者:Open Geospatial Consortium,开发了基于WEB地图服务的互操作规范——Web Map Service

                Web Map Service主要用于提供共享地图数据服务,能动态地响应客户程序的请求,将用户请求处理,转换成便于用户直观理解的地图图像、指定坐标点的要素信息、以及地图的功能说明信息。

                Web Map Service规范主要定义了三个结构的操作,GetCapbilitiesGetMapGetFeatureInfo。其中,前两个接口是必须实现的。

---------------------------------------------------------------------------------------------------------------------------------

                GetCapbilities接口用于查询WMS服务范围的信息,包括支持的服务、支持的格式、空间坐标、地图列表、地图样式等。它主要的目的是使客户端在使用GetMap请求前可以对WMS服务有一个大概的了解,从而设置正确的参数。

GetCapbilities请求样例如下所示:http://xxx.com/geoserver/awms?version=x.x.x&request= getcapbilities。返回是一个XML文件,包括ServiceCapability等部分,详细信息可以查看返回XML文件。

GetCapabilities的具体请求参数如下表:

---------------------------------------------------------------------------------------------------------------------------------

GetMap接口用于向服务器请求一张地图图像数据。在它的请求中,可以控制地图的图层、图层绘制的样式、指定地图的坐标投影代码、控制请求地图的范围、像素宽度和高度、以及返回 地图图像的格式。

GetMap的请求样例如下所示:http://xxx.com/geoservice/wms?version=x.x.x&request=getmap&layers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,24,-67,50&width=400height=200&format=image/png

如果参数设置错误,将返回一个XML文件来描述错误信息。如下所示:<ServiceExceptionReport vertion=”x.x.x”>

                       <ServiceException code=””>

                                       WIDTH and HEIGHT incorrectly specified

                       </ServiceException>

       </ServiceExceptionReport>

GetMap的请求参数描述如表所示:

 

 

---------------------------------------------------------------------------------------------------------------------------------

                GetFeatureInfo它是一个可选操作,接口用于查询用户指定对象的属性信息。它的实现依赖于客户程序在WMS服务器在先前返回的地图。只有用户指定了该地图的某一空间实体,并且该实体所在图层具有queryable=”1”属性才能支持该请求。如果一个WMS不支持该请求,则会返回一个XML文件描述错误信息。

                GetFeatureInfo的请求样例如下所示:

http://xxx.com/geoserver.wms?version=x.x.x&request=getfeatureinfo&layers=topp:states&styles=population&SRS=EPSG:4326&bbox=-125,24,-67,50&width=400height=200&format=text/html&query_layers=topp:states

                此请求返回一个HTML文档来描述对象,如下所示:

Results for FeatureType ‘states’:

——————————

The_geom  = [GEOMETRY(Multipolyon) with 153 points]

STATE_NAME  = Beijing

STATE_FIPS = 04

SUB_REGION = Mtn

STATE_ABBR = AZ

LAND_KM = 294333.462

WATER_KM = 942.772

PERSONS = 3665228.0

FAMILIES = 940106.0

HOUSHOLD = 1368843.0

MALE = 1810691.0

FEMALE = 1854537.0

WORKERS = 1358263.0

DRVALONE = 1178320.0

CARPOOL = 239083.0

PUBTRANS = 32856.0

EMPLOYED = 1603896.0

UNEMPLOY = 123902.0

SERVICE = 455896.0

MANUAL = 185109.0

P_MALE = 0.494

P_FEMALE = 0.506

SAMP_POP = 468178.0

 

 



iSsay 2010-03-18 17:36 发表评论
]]>