zoukankan      html  css  js  c++  java
  • PIE SDK Geometry的坐标转换

    1. 基于SpatialReference对象的坐标转换

    1.1 示例简介

        Geometry类是所有几何形体对象的父类,它是一个抽象类,IGeometry接口定义了所有的几何对象都有的方法和属性。

        下面介绍基于Geometry对象的坐标转换的主要接口。

    Transform方法

    函数原型:

    bool Transform(ISpatialReference spatialReference);

    bool Transform(CoordinateTransformation coordTransform);

    函数说明:

        该方法用于几何体的投影转换,当参数为坐标转换对象时投影转换过程中会忽略原来的空间参考。

    参数说明:

    名称

    说明

    spatialReference

    空间参考对象

    coordTransform

    坐标转换对象

    返回值

    投影转换成功时为true,否则为false

    1.2 示例代码

    项目路径

    百度云盘地址下/PIE示例程序/SpatialReference. CoordinateTransform

    视频路径

    百度云盘地址下/PIE视频教程/ Geometry的坐标转换avi

    示例代码

     1  private void GeometryTest()
     2  {
     3    // 空间参考WKT字符串
     4 string str_BJ54 = "GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",
     5 SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",
     6 0.017453292519943295]]";
    string str_BJ54_18 = "PROJCS["Beijing_1954_GK_Zone_18",GEOGCS["GCS_Beijing_1954",
     8 DATUM["D_Beijing_1954",
     9 SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",
    10 0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",
    11 18500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER
    12 ["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]";
    13 
    14 ISpatialReference spatialReference1 = new GeographicCoordinateSystem();
    15 spatialReference1.ImportFromWkt(str_BJ54);
    1  ISpatialReference spatialReference2 = new ProjectedCoordinateSystem();
    17 spatialReference2.ImportFromWkt(str_BJ54_18);
    18 
    19   // 定义点
    20   IPoint point = new PIE.Geometry.Point();
    21   point.PutCoords(104, 45, 0.0);
    22 
    23   // 设置空间参考
    24   IGeometry geo = point as IGeometry;
    25   geo.SpatialReference = spatialReference1;
    26 
    27   // 空间参考变换
    28   geo.Transform(spatialReference2);
    29  }

    2. 基于CoordinateTransformation对象的坐标转换

    2.1 示例简介

        同一个地图上显示的地理数据的空间参考必须是一致的,因此需要实现空间坐标系的相互转换。ICoordinateTransformation接口主要实现了获取源坐标系统和目标坐标系统、实现坐标转换的方法。

        下面对基于CoordinateTransformation对象的坐标转换的方法进行介绍。

    TransformEx方法

    函数原型:

           bool TransformEx(int count, array<double>pX, array<double>pY,  array<double> pZ, array<int> pSuccess);

    函数说明:

        该方法用于坐标系统的坐标转换。

    参数说明:

    名称

    说明

    count

    要转换的个数

    pX

    X坐标

    pY

    Y坐标

    pZ

    Z坐标

    pSuccess

    转换结果数组

    返回值

    坐标转换是否成功,转换成功返回1,否则返回0

    2.2 示例代码

    示例代码

     1   private void CoordinateTransformationTest()
     2         {
     3             // 空间参考WKT字符串
     4             string str_BJ54 = "GEOGCS["GCS_Beijing_1954",DATUM["D_Beijing_1954",
     5 SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",
     6 0.017453292519943295]]";
     7             string str_BJ54_18 = "PROJCS["Beijing_1954_GK_Zone_18",GEOGCS["GCS_Beijing_1954",
     8 DATUM["D_Beijing_1954",
     9 SPHEROID["Krasovsky_1940",6378245,298.3]],PRIMEM["Greenwich",0],UNIT["Degree",
    10 0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",
    11 18500000],PARAMETER["False_Northing",0],PARAMETER["Central_Meridian",105],PARAMETER
    12 ["Scale_Factor",1],PARAMETER["Latitude_Of_Origin",0],UNIT["Meter",1]]";
    13 
    14             // 生成空间参考对象
    15  ISpatialReference spatialReference1 = SpatialReferenceFactory.CreateSpatialReference(str_BJ54);
    16  ISpatialReference spatialReference2 = SpatialReferenceFactory.CreateSpatialReference(str_BJ54_18);
    17 
    18             // 坐标转换
    19             int count = 3;
    20             double[] px = new double[] { 104, 105, 106 };
    21             double[] py = new double[] { 45, 46, 47 };
    22             double[] pz = new double[] { 0, 0, 0 };
    23             int[] pSuccess = new int[3];
    24 CoordinateTransformation coordTF = new CoordinateTransformation(spatialReference1, spatialReference2);
    25 coordTF.TransformEx(count, px, py, null, pSuccess);
    26         }
  • 相关阅读:
    bzoj 维护序列seq(双标记线段树)
    kmp算法总结
    2013蓝桥杯
    Longge的问题(欧拉,思维)
    mode(思维,注意内存)
    Jam's math problem(思维)
    77
    999
    888
    无 PowerShell.exe 执行 Empire 的几种姿势
  • 原文地址:https://www.cnblogs.com/PIESat/p/10280928.html
Copyright © 2011-2022 走看看