ArcEngine中坐标超出测量范围
在以前分析和总结过关于"坐标或测量值超出范围"的问题。如下:
但在开发和使用中也经常遇到此类问题,本文说一说在ArcEngine中的相关处理。总结下来就一点,在创建、拓扑等操作时生成的范围起出了要素的设置范围。
获取要素范围
我们知道,创建一个没有任何坐标系统上要素图层,它的默认是要素范围均是:
(-450359962737.05, 450359962737.05, -450359962737.05, 450359962737.05)
创建一个有指定坐标系统的要素图层,它的默认范围是根据坐标系统自动生成的,例如:
CGCS2000_3_Degree_GK_CM_84E(-5123200, 5123200,-10002100, ,10002100)
在ArcMap中看到的不是正确值。
通过GetDomain方法,范围此范围的坐标值。
1 2 3 4 5 6 7 8 9 10 11 | private void GetSpatialReferenceProperties(IFeatureClass featureClass) { IGeoDataset geoDataset = featureClass as IGeoDataset; ISpatialReference spatialReference = geoDataset.SpatialReference; double xMin; double xMax; double yMin; double yMax; spatialReference.GetDomain( out xMin, out xMax, out yMin, out yMax); Console.WriteLine(xMin + ", " + xMax + ", " + yMin + ", " + yMax); } |
也可以通过GetFalseOriginAndUnits方法范围,其中falseX和falseY代表要素范围X最小值、Y最小值。
1 2 3 4 5 6 7 8 9 10 | private void GetFalseOriginAndUnits(IFeatureClass featureClass) { IGeoDataset geoDataset = featureClass as IGeoDataset; ISpatialReference spatialReference = geoDataset.SpatialReference; double falseX; double falseY; double xyUnits; spatialReference.GetFalseOriginAndUnits( out falseX, out falseY, out xyUnits); Console.WriteLine(falseX + ", " + falseY + ", " + xyUnits); } |
修改要素范围
使用GetDomain、GetFalseOriginAndUnits对应的SetDomain、SetFalseOriginAndUnits方法修改要素范围。
1 2 3 4 5 6 | private void SetDomain (IFeatureClass featureClass) { IGeoDataset geoDataset = featureClass as IGeoDataset; ISpatialReference spatialReference = geoDataset.SpatialReference; spatialReference.SetDomain(-5123200, 90000, -10002100, 10002100); } |
也可以通过spatialReferenceResolution的ConstructFromHorizon方法构造默认的要素范围。
1 2 3 4 5 6 7 | private void SetSpatialReferenceProperties(IFeatureClass featureClass) { IGeoDataset geoDataset = featureClass as IGeoDataset; ISpatialReference spatialReference = geoDataset.SpatialReference; ISpatialReferenceResolution spatialReferenceResolution = spatialReference as ISpatialReferenceResolution; spatialReferenceResolution.ConstructFromHorizon(); } |
作者:我也是个傻瓜
出处:http://www.cnblogs.com/liweis/
签名:成熟是一种明亮而不刺眼的光辉。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2019-06-09 快速手工实现软件著作权源码60页制作