资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
ARCGIS 坐标1 ArcGIS 坐标系定义和转换网上有关坐标系和坐标转换的文章很多,大家可搜索了学习一下,我推荐下面两篇文章供参考:坐标系统和投影变换在桌面产品中的应用介绍了坐标系的一些基本概念,并结 合 ArcGIS 进行了说明。ArcGIS 坐标系统文件介绍了 ArcGIS 坐标系名称的解析方法。ArcGIS 中的坐标系有两套:Geographics coordinate system(地理坐标系、大地坐标系, 经纬度表达)和 Projected coordinate system(投影坐标系,直角坐 标系)。通过在 ArcCatalog 中右 键点击一个 Feature class、Feature dataset、Raster dataset 和 Raster Catalog,在 “Property”的“XY Coordinate Sytstem”中设置其坐标系。如果要进行转换,需通过 ArcToolBox 的“Data Management Tools”的“Projections and Transformations”系列工具进行。在同一个 Datum(大地基准面)内的坐标转换是严密的,如在北京 54 的经纬度和直角坐标之间的转换是可在 ArcGIS 中设置源坐标系和目标坐标系来直接转换。如果要在不同 Datum 间进行转换,则需要设置转换参数,通常高精度的转换需要 7 参数,也即设置 Geographics Transformation。比如将北京 54 坐标转换成WGS84 坐标,需要设置转换参数。 虽然我国没有公布北京 54、西安 80 与 WGS84 之间的转换 7 参数,但ArcGIS 可以在导入数据的 时候通过设置目标坐标系,从而实现坐标转换,而且不用输入 7 参数,试验了一下,应该时默认参数为 0。但根据网上的文章http:/www.gissky.cn/blog.asp?ID=125,ArcGIS 坐 标转换到底有多准?,这些转换误差比较大。真正的坐标转换精度还需要进一步验证。在用 ArcToolBox 中的转换工具进行坐标转换时,如果跨 datum,则必须输入 Transformation 参数,从而保 证转换精度。2 坐标系开发相关ArcEngine 定义了北京 54 六度带和 WGS84 坐标系,可进行之间的坐标转换,但没有定义西安坐标系和北京 54 的三度带。所以不能直接使用 ArcEngine 预定义的坐标系。安装 ArcGIS Desktop 后,ArcGIS 根目录下会有 Coordinate Systems 目录,是一系列 prj 文件定义的坐标系。ArcGISDesktop 使用的就是这些坐标系,所以如果要支持足够多的坐标系,需要在 ArcEngine 中读取这些文件,而不要用预定义的坐标系枚举变量。ArcEngine 中坐标系的创建通过 ISpatialReferenceFactory,比如:ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass();/创建 WGS1984 地理坐标系 IGeographicCoordinateSystem gcs =srFactory.CreateGeographicCoordinateSystem( (int)esriSRGeoCSType.esriSRGeoCS_WGS1984);/创建 Xian 1980 地理坐标系ISpatialReference sr =srFactory.CreateESRISpatialReferenceFromPRJFile(D:ArcGISCoordinate SystemsGeographic Coordinate SystemsAsiaXian 1980.prj);/创建北京 1954GK_18N 投影坐标系IProjectedCoordinateSystem pcs =srFactory.CreateProjectedCoordinateSystem(int)esriSRProjCSType.esriSRProjCS_Beijing1954GK_18N);进行 Geographics Transformation 则通过 IGeoTransformation 接口,该接口可以指定源坐标系和目标坐标系,然后基于点进行 datum 不同时的转换,实现该接口的类包括:AbridgedMolodenskyTransformationCompositeGeoTransformationCoordinateFrameTransformationCoordinateTransformationGeocentricTranslationHARNTransformationLongitudeRotationTransformationMolodenskyBadekasTransformationMolodenskyTransformation NADCONTransformationNTv2TransformationPositionVectorTransformation等,其中 CoordinateFrameTransformation 就是常用的布尔莎 7 参数转换类。具体转换坐标,可通过 IGeometry 的 Project 和 ProjectEx 函数,分别对应不需要 IGeoTransformation 和需要 IGeoTransformation。Project 也可实现不同 datum 的坐标系的转换,但需要设置 IGeoTransformationOperationSet。geometry.SpatialReference = srcSR;if (geoTrans != null)geometry.ProjectEx(dstSR, esriTransformDirection.esriTransformForward, geoTrans, false, 0, 0);elsegeometry.Project(dstSR);也可通过 IGeoTransformation 的 TransformPointsFF 函数来进行 datum 之间的转换,不 过要注意的是,这个函数不支持投影,也就是只能在 经纬度之间转换,如果在数据参考系时输入的是投影坐标系,函数只会取出其地理坐标系(我试验的结果,不知是否正确)。geoTrans.PutSpatialReferences(srcSR, dstSR);double inPoints = new double2;inPoints0 = 100; inPoints1 = 100;double utPoints = new double2;geoTrans.TransformPointsFF(esriTransformDirection.esriTransformForward, 1, ref inPoints0, ref outPoints0); ArcToolBox 中可以定义自定义的 GeoTransformation,保存成*.gtf 文件,置于目录.Documents and SettingsApplication DataESRIArcToolboxMy GeoTransformations.下,但 ArcEngine 中没找到可以从 gft 文件创建GeoTransformation 的函数。 但该文件还是比较容易解析的,可以自己写一个。如果转换模型确定,则可完全可自定义一个简单的文件来存储转换参数。在使用 IGeometry.Project 时,有一个特别的类可以关注,IGeoTransformationOperationSet。这个类适用于要批量转换的 Geometries 中的SpatialReference 不一样。在利用 IGeometry.Project 进行坐标转换时,如果两个坐标系之间的 datum 不一样,系统会搜索 GeoTranformationOperationSet,找一个匹配的 geotransformation,如果找不到,则 GeoTranformation 会不成功。IGeoTransformationOperationSet 就是缓存了系统环境中的GeoTranformation。通常 spatialReferenceFactory.GeoTransformationDefaults 中的IGeoTransformationOperationSet 个数为 0,每往里 Set 一次,则添加一个。可参考其例子。3 用 ArcGIS 维护坐标系转换思路1)矢量数据如果创建 Feature Dataset,设置其坐标系为 WGS84 经纬度,导入矢量数据,ArcGIS 会自 动将所有数据转换为 WGS84 经纬度。 对于没有导入 Feature Dataset,而是直接导入 Geodatabase 中的数据,可利用在导入时,设置 Environment 中的“输出坐标系 ”和“转换参数(如果有准确的参数,则设 置,否则缺省为 0)”来实现边导入边进行坐 标转换。2)栅格数据不论时将 Raster Dataset 至于 Geodatabase 还 是 RasterCatalog 中,都可在导入时, 设置 Environment 中的“输出坐标系”和 “转换参数(如果有准确的参数,则设置,否 则缺省为 0)”来 实现边导入边进行坐标转换。3)转换对于导入到系统中的数据,如果要转换坐标系,可通过 ArcToolBox 进行坐标转换功能实现,这必须要先自定义 Transformation。
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号