zoukankan      html  css  js  c++  java
  • Arcengine设置坐标系

    Arcengine设置坐标系

     

     

    ArcGIS Engine提供了一系列对象供开发者管理GIS系统的坐标系统。
    对大部分开发者而言了解ProjectedCoordinateSystem, GeographicCoordinateSystem, 
    SpatialReference Environment这三个组件类是非常有必要的,
    对于高级开发者而言,可能需要自定义坐标系统可以使用
    这些对象Projection,Datum,AngularUnit,Spheriod,PrimeMeridian和
    GeoTransformation等。
    1、ISpatialReference地理坐标系对象
    (空间参考的设置重要是指地理坐标系对象,设置好它后然后将它赋值给需要的对象)
    //创建地理坐标系对象
    ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass();
    ISpatialReference spatialReference = spatialReferenceFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);

    2、改变空间参考
    IGeoDatasetSchemaEdit接口的AlterSpatialReference方法可以改变空间参考,在改变前先用CanAlterSpatialReference属性看其能否被改变
    pGeoDatasetSchemaEdit.AlterSpatialReference(pSpatialReference);

    实例:
    /// <summary>
    /// 改变图层的空间参考
    /// </summary>
    /// <param name="pFeatureLayer">图层</param>
    /// <param name="pGeoType">空间参考类型</param>
    private void ChangeLayerRef(IFeatureLayer pFeatureLayer, int gcsType)
    {
    try
    {
    IFeatureClass pFeatureClass = pFeatureLayer.FeatureClass;
    //QI到IGeoDataset
    IGeoDataset pGeoDataset = pFeatureClass as IGeoDataset;
    //QI到IGeoDatasetSchemaEdit
    IGeoDatasetSchemaEdit pGeoDatasetSchemaEdit = pGeoDataset as IGeoDatasetSchemaEdit;
    if (pGeoDatasetSchemaEdit.CanAlterSpatialReference == true)
    {
    //创建SpatialReferenceEnvironmentClass对象
    ISpatialReferenceFactory2 pSpaRefFactory = new SpatialReferenceEnvironmentClass();
    //创建地理坐标系对象
    IGeographicCoordinateSystem pNewGeoSys = pSpaRefFactory.CreateGeographicCoordinateSystem(gcsType);//4214代表Beijing1954
    pGeoDatasetSchemaEdit.AlterSpatialReference(pNewGeoSys);
    }
    }
    catch (Exception Err)
    {
    MessageBox.Show(Err.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
    }
    }

    3、空间坐标枚举
    esriSRGeoCSType
    esriSRProjCSType

    4.自定义坐标系

    用ArcMap定义好坐标系后导出成prj文件,再用ISpatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile方法创建坐标系,可以正确使用。

  • 相关阅读:
    timer使用方法
    基于开源库jsoncpp的json字符串解析
    jsoncpp构造json字符串和json数组
    通过wifi连接android设备的方法
    Linux 利用管道父子进程间传递数据
    Mac OS X 下部分Android手机无法连接adb问题之解决方案
    android studio 慢的问题
    forever让nodejs后台运行
    js里面如何才能让成员方法去调用类中其他成员
    让Windows Server 2008 + IIS 7+ ASP.NET 支持10万并发请求
  • 原文地址:https://www.cnblogs.com/xianyin05/p/3086543.html
Copyright © 2011-2022 走看看