arcgis投影变换与坐标转换研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
arcgis 投影变换与坐标转换研究
arcgis 投影变换与坐标转换研究
1 ArcGIS中的投影方法
投影的方法可以使带某种坐标信息数据源进行向另一坐标系统做转换,并对源数据中的X 和Y值进行修改。我们生产实践中一个典型的例子是利用该方法修正某些旧地图数据中X,Y 值前加了带数和分带方法的数值。字串7
操作方法:运行ArcGIS9中的ArcMap,打开ArcToolBox,打开Data Management Tools ->Projections and Transformations->Feature->Project 项打开投影对话框。在Input DataSet or Feature Class栏中输入或点击旁边的按钮选择相应的DataSet或Feature Class(带有空间参考),Output DataSet or Feature Class栏中输入或点击旁边的按钮选择目标DataSet或Feature Class,在Output Coordinate System 栏中输入或点击旁边的按钮选择目标数据的坐标系统。最后点OK键即可。字串9
例如某点状shape文件中某点P的坐标为X Y 3478021 ,且该shape文件坐标系统为中央为东经120度的高斯克吕格投影,在数据使用过程中为了将点P的值改为真实值X 705012 Y478021,首先将源数据的投影参数中False_Easting和False_Northing值分别加上和3000000作为源坐标系统,修改参数前的坐标系统作为投影操作的目标坐标系统,然后通过投影操作后生成一新的Shape文件,且与源文件中点P对应的点的坐标为X 705012 Y478021。
字串6
2 ArcGIS中坐标系统的定义
一般情况下地理数据库(如Personal GeoDatabase的Feature DataSet 、Shape File等)在创建时都具有空间参考的属性,空间参考定义了该数据集的地理坐标系统或投影坐标系统,没有坐标系统的地理数据在生产应用过程中是毫无意义的,但由于在数据格式转换、转库过程中可能造成坐标系统信息丢失,或创建数据库时忽略了坐标系统的定义,因此需要对没有坐标系统信息的数据集进行坐标系统定义。
字串7
坐标系统的定义是在不改变当前数据集中特征X Y值的情况下对该数据集指定坐标系统信息。
字串3
操作方法:运行ArcGIS9中的ArcMap,打开ArcToolBox,打开Data Management Tools ->Projections and Transformations->Define Projection 项打开坐标定义对话框。介下来在Input DataSet or Feature Class栏中输入或点击旁边的按钮选择相应的DataSet或Feature Class;在Coordinate System栏中输入或点击旁边的按钮选择需要为上述DataSet或Feature 定义的坐标系统。最后点OK键即可。字串7
例如某点状shape文件中某点P的坐标为X 112.2 Y 43.3 ,且该shape文件没有带有相应的Prj文件,即没有空间参考信息,也不知道X Y 的单位。通过坐标系统定义的操作定义其为Beijing1954坐标,那么点P的信息是东经112.2度北纬43.3度。
字串9
3 编程实现坐标转换和投影
3.1 矢量数据投影和坐标转换
相关接口
字串5
3.1.1 IGeometry.Project方法字串8
该方法声明如下
字串8
public void Project ( 字串2
ISpatialReference newReferenceSystem 字串7
); 字串8
该方法对实现Igeoemtry的对象进行投影操作, 参数为目标空间参考.以下代码中实现了对Point对象从一个空间参考到另一个空间参考的投影操作:
字串9
//Create Spatial Reference Factory 字串4
ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass(); 字串9
ISpatialReference sr1;
字串1
//GCS to project from 字串3
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_NAD1983); 字串9
sr1 = gcs;
字串4
sr1.SetFalseOriginAndUnits(-180, -90, 1000000);
字串9
//Projected Coordinate System to project into 字串6
IProjectedCoordinateSystem pcs = srFactory.CreateProjectedCoordinateSystem((int)esriSRProjCSType.esriSRProjCS_NAD1983N_ AmericaLambert); 字串2
pcs.SetFalseOriginAndUnits(0, 0, 1000);
字串3
ISpatialReference sr2;
字串2
sr2 = pcs; 字串5
//Point to project 字串8
IPoint point = new PointClass() as IPoint;
字串7
point.PutCoords(-117.17, 34.06); 字串8
//Geometry Interface to do actual project 字串4
IGeometry geometry;
字串8
geometry = point; 字串8
geometry.SpatialReference = sr1;
字串8
geometry.Project(sr2); 字串7
point = geometry as IPoint;
字串1
double x; 字串7
double y; 字串3