博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PIE SDK Geometry的坐标转换
阅读量:6113 次
发布时间:2019-06-21

本文共 3625 字,大约阅读时间需要 12 分钟。

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],PARAMETER12 [\"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],PARAMETER12 [\"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         }

 

转载于:https://www.cnblogs.com/PIESat/p/10280928.html

你可能感兴趣的文章
汉字转拼音 (转)
查看>>
Machine Learning Techniques -6-Support Vector Regression
查看>>
会计基础_001
查看>>
Cordova 开发环境搭建及创建第一个app
查看>>
ajax请求拿到多条数据拼接显示在页面中
查看>>
小程序: 查看正在写的页面
查看>>
dedecms生成文档数据库崩溃 mysql daemon failed to start
查看>>
Linux的50个基本命令
查看>>
Objective-C中创建单例方法的步骤
查看>>
[转]无法安装MVC3,一直卡在vs10-kb2483190
查看>>
Codeforces 520B:Two Buttons(思维,好题)
查看>>
web框架-(二)Django基础
查看>>
Jenkins持续集成环境部署
查看>>
emoji等表情符号存mysql的方法
查看>>
Excel到R中的日期转换
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
linux文本模式和文本替换功能
查看>>
Windows SFTP 的安装
查看>>
摄像机与绕任意轴旋转
查看>>