GIS二次开发7

上传人:马*** 文档编号:242865271 上传时间:2024-09-10 格式:PPT 页数:42 大小:1.12MB
返回 下载 相关 举报
GIS二次开发7_第1页
第1页 / 共42页
GIS二次开发7_第2页
第2页 / 共42页
GIS二次开发7_第3页
第3页 / 共42页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,GIS,二次开发使用,MapObjects,(L7),2005.3.15,Chapter 4.,坐标系和投影对象,本章的主要内容,控件坐标和地理坐标,地理坐标和控件坐标的转换,投影变换,设置地图范围和对地图比例尺的操作,从地图上得到地理坐标,本章主要对象,-,投影对象:,MapObjects2.GeoTransfomation,投影变换,MapObjects2.ProjCoordSys,投影坐标系,MapObjects2.Projection,投影,MapObject2.GeoCoordSys,地理坐标系,MapObjects2.Unit,地图单位,MapObjects2.Datum,基准面,MapObjects2.Spheroid,椭球体,MapObjects2.Meridian,中央经线,MapObjects2.Strings,投影相关常数,4.1,坐标系,4.1.1,控件坐标系统,(Control Coordinate),在,Visual Basic,窗体中左上角为原点,水平方向为,X,轴,竖直方向为,Y,轴。,Visual Basic,以,twips,(缇)作为缺省的测量单位。你可以把窗体的单位改成点(,pixels,) ,字符长,英寸,毫米,厘米。或通过设置,Scale Mode,属性来实现自定义单位设置。但在我们的讨论中我们应用,twips,,因为它是系统默认的缺省单位。,在窗体内的,Map,控件也有它自己的坐标系。其坐标单位与窗体坐标相同。我们将地图控件中的坐标称为,控件坐标,(Control Coordinate),4.1.2,地图坐标,(Map Coordinate),图层数据采用地图坐标系。遵循笛卡尔坐标系原则。,不同于,Visual Basic,窗体的控件坐标系(左上角永远是,0,0,)地图控件内显示的地图坐标范围,时常在应用期间改变。 每次当你移动某一地图区时,,Map,控件内地图坐标范围就会变化。,控件坐标与地图坐标间的区别:,地图控件的控制坐标的左上角的一位置为,(0,,,0),。地图坐标通常都有一个在地图控件区域很远以外的原点,( origin ),。应当记住,你的地图控件只是地图表面的一个小窗口。,控件坐标,Y,轴延向下递增,而地图坐标,Y,轴延向上递增。,控件坐标以,twips,为单位,并且与你的计算机屏幕显示的实际尺寸有关。地图坐标则用米,英尺等单位表示,并且与地表特征的测量有关,1,Twip,=1/20 Point=1/1440 Inch=1/567 cm,地图数据中所用的坐标值通常很大,有的甚至是成百上千或数以百万计的。这些坐标值通常是以英尺或米为单位的。你地图资料的坐标,可以不同的坐标系为基础,如平面坐标系,(,SPCS:State,Plane Coordinate System),或麦卡脱坐标系,(,UTM:Universal,Transverse Mercator),以及其它坐标系。如果你是从别人那里得到的资料,那么其提供者应已设置了适当的坐标系。,需要注意的一点是应用,MapObjects,时要确认图层上的资料用统一坐标系。如果不是,那些用了不同坐标系的图层是无法在一起显示的,如果你的地图资料应用了不同坐标系,并且你想同时在,MapObjects,中使用它们,那么你可以用一些其它软件,如,ArcView,或,ArcGIS,来把你的地图资料转换成合适的坐标系。该过程称为,map projection(,投影变换”,),。,4.1.3,地图坐标与控件坐标的转换,1),方法,Map.ToMapPoint(x,y,) :Point,x:Single,y:Single,实现控件坐标到地图坐标的转换,Set pt1 = Map1.ToMapPoint(X, Y),2),方法,Map.FromMapPoint(pt,x,y,),实现地图坐标到控件坐标的转换,将基于地图坐标的点,pt,的,X,Y,坐标转换为控件坐标,x,y,Dim pt1 As MapObjects2.Point,.,Set,rect,= Map1.TrackRectangle,Set pt1 =,rect.Center,Map1.FromMapPoint pt1,x1,y1,3),方法,Map.FromMapDistance(distance:Double,) :Single,将一段距离的单位由地图单位转换为控件的单位,4),方法,Map.ToMapDistance(distance:Single,) :Double,将一段距离的控件的单位转换为地图单位,课堂练习,(10,分钟,),课堂练习,4,地图坐标与控件坐标,测量线段的长度,4.2,投影对象,4.2.1,球坐标系与平面坐标系,4.2.2,椭球体、基准面、地图投影,4.2.3,地理坐标系,投影坐标系,4.2.4,对象,MapObjects2.Strings,4.2.1,球坐标系与平面坐标系,(1),球坐标系,经度,Longitude,纬度,Latitude,地面点的确定:,地面上任一点的位置,通常用经度和纬度来决定。经线和纬线是地球表面上两组正交(相交为,90,度)的曲线,这两组正交的曲线构成的坐标,称为地理坐标系。,地理坐标系,(MapObject2.GeoCoordSys),:,以经纬度为单位的坐标系统,地面上任一点,M,的位置可由经度,和纬度,来决定,记为,M(,),。,经纬度具有深刻的地理意义,它标示物体在地面上的位置,显示其地理方位,(,经线与南北相应,纬线与东西相应,),,表示时差,此外,经纬线还标示许多地理现象所处的地理带,如气候、土壤等部门都要利用经纬度来推断地理规律。,(2),平面坐标系,(,笛卡尔坐标系,),由于地球表面是不可展开的曲面,也就是说曲面上的各点不能直接表示在平面上,因此必须运用地图投影的方法,建立地球表面和平面上点的函数关系,使地球表面上任一点由地理坐标(,、,)确定的点,在平面上必有一个与它相对应的点,平面上任一点的位置可以用极坐标或直角坐标表示。,投影坐标,(MapObjects2.ProjCoordSys),地图投影是将球面坐标转换成平面坐标的数学方法。可用不同的数学公式将地球球体表面投影到二维平面上, 而每一个平面坐标系都有一特定的地图投影方法。绝大多数的地图都是遵照一种已知的地理坐标系来显示坐标数据。例如,我国规定,1,:,1,万、,1,:,2.5,万、,1,:,5,万、,1,:,10,万、,1,:,25,万、,1,:,50,万比例尺地形图,均采用在克拉索夫斯基椭球体上的高斯克吕格投影。,但是任何一种对地球表面的表示方法,(,即地图投影,),都会在形状、面积、距离,或者方向上产 生变形,不同的投影产生不同的变形,每一种投影都有其各自的适用方面。例如,墨卡托投 影适用于海图,其面积变形随着纬度的增高而加大,但其方向变形很小;横轴墨卡托投影的 面积变形随着距中央经线的距离的加大而增大,适用于制作不同的国家地图。,Gauss _Kruger,投影,17,度带,(,中央经线是,99),地图单位是米,4.2.2,椭球体、基准面、地图投影,GIS,中的坐标系定义是,GIS,系统的基础,正确定义,GIS,系统的坐标系非常重要。,GIS,中的坐标系定义由基准面和地图投影两组参数确定,基准面的定义则由特定椭球体及其对应的转换参数确定,因此欲正确定义,GIS,系统坐标系,首先必须弄清,地球椭球体,(Spheroids),、,大地基准面,(Datum),及,地图投影,(Projection),三者的基本概念及它们之间的关系。,椭球体,MapObjects2.Spheroid,MO,中预定义了,49,种椭球体,MO,椭球体,长半轴,短半轴,1/f,是,Krasovsky1940,6378245,6356863.0188,298.3,否,GRS 1975,6378140,6356755,298.25722101,是,WGS 1984,6378137,6356725,298.257223563,MapObjects2.Spheroid,对象,属性:,Name:String,Type:SpheroidConstants,Flattening:Double,定义椭球体的扁率,f = (a - b) / a,Axis: Double,定义椭球体的长半轴,基准面,MapObjects2.Datum,MO,预定义了,296,种基准面,基准面是利用特定椭球体对特定地区地球表面的逼近,因此每个国家或地区均有各自的基准面,我们通常称谓的北京,54,坐标系、西安,80,坐标系实际上指的是我国的两个大地基准面。,我国参照前苏联从,1953,年起采用克拉索夫斯基,(,Krassovsky,),椭球体建立了我国的,北京,54,坐标系,,,1978,年采用国际大地测量协会推荐的,1975,地球椭球体建立了我国新的大地坐标系,-,西安,80,坐标系,,目前大地测量基本上仍以北京,54,坐标系作为参照。,WGS1984,基准面,采用,WGS84,椭球体,它是一地心坐标系,即以地心作为椭球体中心,目前,GPS,测量数据多以,WGS1984,为基准。,moDatum_Beijing1954,6214,Beijing 1954,moDatum_WGS1984,6326,WGS 1984,椭球体与基准面之间的关系是一对多的关系,也就是基准面是在椭球体基础上建立的,但椭球体不能代表基准面,同样的椭球体能定义不同的基准面,如前苏联的,Pulkovo,1942,、非洲索马里的,Afgooye,基准面都采用了,Krassovsky,椭球体,但它们的基准面显然是不同的。,MapObjects2.Datum,对象,属性:,Spheroid,:,Spheroid,基准面所依据的椭球体,Name:Sting,预定义基准面的名称,Type:DatumConstants,指定一个预定义的基准面,投影,MapObjects2.Projection,MO,预定义了,51,种投影方法,投影是用于投影坐标系中以指定一种数学转换方法,通过这种数学转换将地理坐标转变为投影坐标。如果有人说:该点北京,54,坐标值为,X=4231898,Y=21655933,,实际上指的是北京,54,基准面下的投影坐标,也就是北京,54,基准面下的经纬度坐标在直角平面坐标上的投影结果,moProjection_GaussKruger,43005,Gauss-Kruger,moProjection_TransverseMercator,43006,Transverse,Mercator,= 43005,MapObjects2.Projection,对象,属性:,Name :String,Type:ProjectionConstants,Custom :,Unknow,IsCustom,: Boolean,我国常用的地图投影,我国的,GIS,应用工程所采用的投影一般与我国基本地形图系列一致的地图投影系统,这就是大中比例尺,(1:50,万以上,),的高斯,-,克吕格投影,(,横轴等角切椭圆柱投影,),和小比例尺,(1:100,万以下,),的兰勃特,(Lambert),投影,(,正轴等角割圆锥投影,).,高斯,克吕格投影示意详细的知识请参考有关教科书,4.2.3,地理坐标系,投影坐标系,投影对象关系图,地理坐标系:,MapObjects2.GeoCoordSys,地理坐标系使用基于经纬度坐标的坐标系统描述地球上某一点所处的位置。某一个地理坐标系是基于一个基准面来定义的,在,MO,中有对应的属性,Datum,与之对应。经度为,0,的经线称为本初子午线,在,MO,中是由相应的属性,PrimeMeridian,来定义。坐标系的单位由属性,Unit,指定。,MapObjects2.GeoCoordSys,对象,moGeoCS_Beijing1954,4214,Beijing 1954,moGeoCS_WGS1984,4326,WGS 1984,MO,预定义了,318,种地理坐标系,主要属性,Name:String,Datum:Datum,PrimeMeridian,:,PrimeMeridian,Type:GeographicCoordSysConstants,Unit:Unit,IsProjected:Boolean,方法:,Export (,outname:String,),生成一个用于描述当前坐标系的,.,prj,文件,.,RetunDescrption,:String,返回投影坐标系或地理坐标系的元数据据(如果是,shape,文件的话从,.,Prj,文件中获取),Transform (,fromCoordSys,fromShape,densifyTol,geoTrans):Object,Object:Point, Line, Polygon, Rectangle Points,将一个几何对象(,Point, Line, Polygon, Rectangle Points,) 从一个坐标系转换到另一个地理坐标系或投影坐标系,转换的方法由参数,.,GeoStransfomation,指定,如果两个坐标系所依据的基准面不同的话需要指定,geoTrans,参数,投影坐标系:,MapObjects2.ProjGoordSys,投影坐标系使用基于,X,Y,值的坐标系统来描述地球上某个点所处的位置。这个坐标系是从地球的近似椭球体投影得到的,它对应于某个地理坐标系。在,MO,中,投影对象的属性:,GeoCoordSys,定义了投影坐标系是根据哪个地理坐标进行投影的。 投影所使用的方法由属性,Projection,指定。属性,Unit,定义了投影坐标系的单位。,MapObjects2.ProjGoordSys,对象,MO,预定义了,1717,种投影坐标系,主要属性,Name:String,Projection:Projection,GeoGoordsys,:,GeoGoordsys,Type:ProjectionCoordSysConstants,Unit:Unit,IsProjected:Boolean,一个标准的投影坐标系可以通过设置属性Type为某一个投影坐标系常数来创建。(MO已经预先定义了一千多个投影坐标系常数)。此外,也可以将投影坐标系对象的属性GeoCoordSys, Projection 及 Unit,设置为特定的对象来创建用户自定义的投影坐标系,方法:,Export (,outname:String,),生成一个,.,prj,文件来描述坐标系统。,RetunDescrption,:String,返回有关一个投影坐标系或地理坐标系的描述字符串。,Transform (,fromCoordSys,fromShape,densifyTol,geoTrans):Object,将给定的几何图形,fromShape,投影到指定的坐标系下。返回的结果是几何对象,:Point, Line, Polygon, Rectangle ,Points,GetParameter,(,paramType,:,ParameterType,Constants) :Double,返回投影坐标系对象(,ProjCoordSys,)的某些参数。,SetParameter(paramType,paramValue,),为投影坐标系对象(,ProjCoordSys,)指定坐标转换参数,在,MO,中,一个投影坐标系可以用于矢量图层,(,MapLaye,),对象和地图(,Map,)控件,通过这类对象的属性,CoordinateSystem,进行应用,这个属性定义了矢量数据进行显示所依据的坐标系统。 使用方法,Transform,,一个单独的几何图形也可以投影到其它的投影坐标系或地理坐标系下。使用方法,Export,可以将坐标系的元数据存储在磁盘上以便于使用。,4.2.4,对象,MapObjects2.Strings,Strings,一个标准的集合对象,包含了一系列值唯一的字符串。,Strings,集合对象的缺省属性是,Item,。,用法,Dim,strPcs,as New MapObjects2.Strings,Dim a1 as String,strPcs,.,PopulateWithDatums,a1=strPcs(1),属性:,Count:Single,字符串个数,Count2:Long,字符串个数,Unique:Boolean,(,True,),设置或判断,Strings,对象中的字符串是否唯一,PopulateUsingNewConstants,: Boolean,设置或判断方法,PopulateWith,的行为,False(Default) The,PopulateWith,.,方法将返回有限数目的常数,以确保与,MO,早期版本的兼容性,TrueThe,PopulateWith,.,方法将返回全部的常数,方法:,Add,(,str,: String,),: Boolean,增加一个字符串到,Strings,集合中,Clear,清空,Strings,对象中的字符串,Find,(,str,: String,sPos,: integer,),:Integer / Long,返回一个字符串,str,在,Strings,集合中的索引位置,Item (,idx,: Variant) : String,返回,Strings,集合中索引为,idx,的字符串,Sort(SortConstants,),将,Strings,中的字符串按指定的方式排序,(,moLexicalOrderAscending,=0,缺省值,按字母顺序升序排序,.,moLexicalOrderDescending,=1,按字母顺序降序排序),方法,PopulateWith,PopulateWithSpheroids,PopulateWithDatums,PopulateWithProjections,PopulateWithGeoCoordSys,PopulateWithProjectedCoordSys,PopulateWithGeoTransformations,PopulateWithMeridians,PopulateWithUnits,PopulateWithParameters,prj,: Projection constant,投影参数常数,实例,4.2 MO,投影相关常数,使用,Strings,对象的,PopulateWith,方法查看所有投影对象的各种常数,Private Sub,Form_Load,(),Dim,moStr,As New MapObjects2.Strings,Dim i As Integer,moStr.PopulateUsingNewConstants,= True,moStr.PopulateWithSpheroids,Label1.Caption = ,椭球体,( + CStr(moStr.Count2) + ),For i = 0 To moStr.Count2 - 1,List1.AddItem,moStr.Item(i,),Next i,moStr.Clear,moStr.PopulateWithDatums,Label2.Caption = ,基准面,( + CStr(moStr.Count2) + ),For i = 0 To moStr.Count2 - 1,List2.AddItem,moStr.Item(i,),Next I,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!