1GISGIS二次开发二次开发VB+MOVB+MO2第4章坐标系和投影对象4.14.1控件坐标和地理坐标控件坐标和地理坐标4.24.2地理坐标和控件坐标的转换地理坐标和控件坐标的转换4.34.3投影变换投影变换4.44.4设置地图范围和对地图比例尺的操作设置地图范围和对地图比例尺的操作4.54.5从地图上得到地理坐标从地图上得到地理坐标3本章主要对象本章主要对象----投影对象:投影对象:MapObjects2.GeoTransfomationMapObjects2.GeoTransfomation投影变换投影变换MapObjects2.ProjCoordSysMapObjects2.ProjCoordSys投影坐标系投影坐标系MapObjects2.ProjectionMapObjects2.Projection投影投影MapObject2.GeoCoordSysMapObject2.GeoCoordSys地理坐标系地理坐标系MapObjects2.UnitMapObjects2.Unit地图单位地图单位MapObjects2.DatumMapObjects2.Datum基准面基准面MapObjects2.SpheroidMapObjects2.Spheroid椭球体椭球体MapObjects2.MeridianMapObjects2.Meridian中央经线中央经线MapObjects2.StringsMapObjects2.Strings投影相关常数投影相关常数44.14.1坐标系坐标系在在VisualBasicVisualBasic窗体中左上角为原点,水平方向为窗体中左上角为原点,水平方向为XX轴,竖直方向为轴,竖直方向为YY轴。轴。VisualBasicVisualBasic以以twipstwips(缇)作为缺省的测量单(缇)作为缺省的测量单位。你可以把窗体的单位改成点(位。你可以把窗体的单位改成点(pixelspixels)),字符,字符长,英寸,毫米,厘米。或通过设置长,英寸,毫米,厘米。或通过设置ScaleModeScaleMode属性来实现自定义单位设置。但在我们的讨论中我属性来实现自定义单位设置。但在我们的讨论中我们应用们应用twipstwips,因为它是系统默认的缺省单位。,因为它是系统默认的缺省单位。在窗体内的在窗体内的MapMap控件也有它自己的坐标系。其坐标控件也有它自己的坐标系。其坐标单位与窗体坐标相同。我们将地图控件中的坐标称单位与窗体坐标相同。我们将地图控件中的坐标称为为控件坐标控件坐标(ControlCoordinate)(ControlCoordinate)4.1.24.1.2控件坐标系控件坐标系(Control(ControlCoordinate)Coordinate)564.1.24.1.2地图坐标地图坐标(MapCoordinate)(MapCoordinate)图层数据采用地图坐标系。遵循笛卡尔坐图层数据采用地图坐标系。遵循笛卡尔坐标系原则。标系原则。不同于不同于VisualBasicVisualBasic窗体的控件坐标系(左窗体的控件坐标系(左上角永远是上角永远是0,00,0)地图控件内显示的地图坐)地图控件内显示的地图坐标范围,时常在应用期间改变。标范围,时常在应用期间改变。每次当你每次当你移动某一地图区时,移动某一地图区时,MapMap控件内地图坐标控件内地图坐标范围就会变化。范围就会变化。7控件坐标与地图坐标间的区别:控件坐标与地图坐标间的区别:地图控件的控制坐标的左上角的一位置为地图控件的控制坐标的左上角的一位置为(0(0,,0)0)。地图坐标通常都有一个在地图控件区域很远。地图坐标通常都有一个在地图控件区域很远以外的原点以外的原点(origin)(origin)。应当记住,你的地图控件。应当记住,你的地图控件只是地图表面的一个小窗口。只是地图表面的一个小窗口。控件坐标控件坐标YY轴延向下递增,而地图坐标轴延向下递增,而地图坐标YY轴延向上轴延向上递增。递增。控件坐标以控件坐标以twipstwips为单位,并且与你的计算机屏幕为单位,并且与你的计算机屏幕显示的实际尺寸有关。地图坐标则用米,英尺等单显示的实际尺寸有关。地图坐标则用米,英尺等单位表示,并且与地表特征的测量有关位表示,并且与地表特征的测量有关11TwipTwip=1/20Point=1/1440Inch=1/567=1/20Point=1/1440Inch=1/567cmcm8地图数据中所用的坐标值通常很大,有的甚至是成百上千或地图数据中所用的坐标值通常很大,有的甚至是成百上千或数以百万计的。这些坐标值通常是以英尺或米为单位的。你数以百万计的。这些坐标值通常是以英尺或米为单位的。你地图资料的坐标,可以不同的坐标系为基础,如平面坐标系地图资料的坐标,可以不同的坐标系为基础,如平面坐标系(SPCS:StatePlaneCoordinateSystem)(SPCS:StatePlaneCoordinateSystem)或麦卡脱坐或麦卡脱坐标系标系(UTM:UniversalTransverseMercator)(UTM:UniversalTransverseMercator)以及其它坐以及其它坐标系。如果你是从别人那里得到的资料,那么其提供者应已标系。如果你是从别人那里得到的资料,那么其提供者应已设置了适当的坐标系。设置了适当的坐标系。需要注意的一点是应用需要注意的一点是应用MapObjectsMapObjects时要确认图层上的资料时要确认图层上的资料用统一坐标系。如果不是,那些用了不同坐标系的图层是无用统一坐标系。如果不是,那些用了不同坐标系的图层是无法在一起显示的法在一起显示的如果你的地图资料应用了不同坐标系,并且你想同时在如果你的地图资料应用了不同坐标系,并且你想同时在MapObjectsMapObjects中使用它们,那么你可以用一些其它软件,如中使用它们,那么你可以用一些其它软件,如ArcViewArcView或或ArcGISArcGIS来把你的地图资料转换成合适的坐来把你的地图资料转换成合适的坐标系。该过程称为标系。该过程称为mapprojection(mapprojection(投影变换投影变换””))。。94.1.34.1.3地图坐标与控件坐标的转换地图坐标与控件坐标的转换1)1)方法方法Map.ToMapPoint(x,yMap.ToMapPoint(x,y):Point):Point••x:Singlex:Singley:Singley:Single••实现控件坐标到地图坐标的转换实现控件坐标到地图坐标的转换••Setpt1=Map1.ToMapPoint(X,Y)Setpt1=Map1.ToMapPoint(X,Y)102)2)方法方法Map.FromMapPoint(ptMap.FromMapPoint(pt,,x,yx,y))实现地图坐标到控件坐标的转换,将基于实现地图坐标到控件坐标的转换,将基于地图坐标的点地图坐标的点ptpt的的X,YX,Y坐标转换为控件坐坐标转换为控件坐标标x,yx,yDimpt1AsMapObjects2.PointDimpt1AsMapObjects2.Point……..SetSetrectrect=Map1.TrackRectangle=Map1.TrackRectangleSetpt1=Setpt1=rect.Centerrect.CenterMap1.FromMapPointpt1,x1,y1Map1.FromMapPointpt1,x1,y1113)3)方法方法Map.FromMapDistance(distance:DoubleMap.FromMapDistance(distance:Double):Si):Singlengle将一段距离的单位由地图单位转换为控件的单位将一段距离的单位由地图单位转换为控件的单位4)4)方法方法Map.ToMapDistance(distance:SingleMap.ToMapDistance(distance:Single):Doubl):Doublee将一段距离的控件的单位转换为地图单位将一段距离的控件的单位转换为地图单位12课堂练习课堂练习☺☺(10(10分钟分钟))13课堂练习课堂练习44地图坐标与控件坐标,测地图坐标与控件坐标,测量线段的长度量线段的长度144.24.2投影对象投影对象4.2.14.2.1球坐标系与平面坐标系球坐标系与平面坐标系4.2.24.2.2椭球体、基准面、地图投影椭球体、基准面、地图投影4.2.34.2.3地理坐标系,投影坐标系地理坐标系,投影坐标系4.2.44.2.4对象对象MapObjects2.StringsMapObjects2.Strings154.2.14.2.1球坐标系与平面坐标系球坐标系与平面坐标系(1)(1)球坐标系球坐标系经度经度LongitudeLongitude纬度纬度LatitudeLatitude地面点的确定:地面点的确定:••地面上任一点的位地面上任一点的位置,通常用经度和纬置,通常用经度和纬度来决定。经线和纬度来决定。经线和纬线是地球表面上两组线是地球表面上两组正交(相交为正交(相交为9090度)度)的曲线,这两组正交的曲线,这两组正交的曲线构成的坐标,的曲线构成的坐标,称为地理坐标系。称为地理坐标系。16地理坐标系地理坐标系(MapObject2.GeoCoordSys)(MapObject2.GeoCoordSys)::以经纬度为单位的坐标系统,地面上任一点以经纬度为单位的坐标系统,地面上任一点MM的位的位置可由经度置可由经度λλ和纬度和纬度φφ来决定,记为来决定,记为M(M(λλ,,ΦΦ))。。经纬度具有深刻的地理意义,它标示物体在地面上经纬度具有深刻的地理意义,它标示物体在地面上的位置,显示其地理方位的位置,显示其地理方位((经线与南北相应,纬线经线与南北相应,纬线与东西相应与东西相应)),表示时差,此外,经纬线还标示许,表示时差,此外,经纬线还标示许多地理现象所处的地理带,如气候、土壤等部门都多地理现象所处的地理带,如气候、土壤等部门都要利用经纬度来推断地理规律。要利用经纬度来推断地理规律。17(2)(2)平面坐标系平面坐标系((笛卡尔坐标系笛卡尔坐标系))由于地球表面是不可展开的曲面,也就是说曲面上由于地球表面是不可展开的曲面,也就是说曲面上的各点不能直接表示在平面上,因此必须运用地图的各点不能直接表示在平面上,因此必须运用地图投影的方法,建立地球表面和平面上点的函数关投影的方法,建立地球表面和平面上点的函数关系,使地球表面上任一点由地理坐标(系,使地球表面上任一点由地理坐标(φφ、、λλ)确)确定的点,在平面上必有一个与它相对应的点,平面定的点,在平面上必有一个与它相对应的点,平面上任一点的位置可以用极坐标或直角坐标表示。上任一点的位置可以用极坐标或直角坐标表示。18投影坐标投影坐标(MapObjects2.ProjCoordSys)(MapObjects2.ProjCoordSys)地图投影是将球面坐标转换成平面坐标的数地图投影是将球面坐标转换成平面坐标的数学方法。可用不同的数学公式将地球球体表学方法。可用不同的数学公式将地球球体表面投影到二维平面上,面投影到二维平面上,而每一个平面坐标系而每一个平面坐标系都有一特定的地图投影方法。绝大多数的地都有一特定的地图投影方法。绝大多数的地图都是遵照一种已知的地理坐标系来显示坐图都是遵照一种已知的地理坐标系来显示坐标数据。标数据。例如例如,,我国规定我国规定11::11万、万、11::2.52.5万、万、11::55万、万、11::1010万、万、11::2525万、万、11::5050万比例尺万比例尺地形图,均采用在克拉索夫斯基椭球体上的地形图,均采用在克拉索夫斯基椭球体上的高斯-克吕格投影。高斯-克吕格投影。19但是任何一种对地球表面的表示方法但是任何一种对地球表面的表示方法((