GIS二次开发05

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

几何对象
几何对象

Surface Normals in MultiPatchs

每个点的法线

Materials and Textures


Materials指三维图形的外观,包括颜色,透明度, 可选的纹理 Texture:纹理,栅格图片,贴在MultiPatch的面 上 创建带纹理的MultiPatch应使用 GeometryMaterial、GeometryMaterialList、 GeneralMultiPatchCreator对象
低分辨率与高分辨率投影之间的转换
private void LowHighConversion_Example(IFeatureClass pre92FeatureClass) { IGeoDataset pre92GeoDataset = pre92FeatureClass as IGeoDataset; ISpatialReference pre92SpatialReference = pre92GeoDataset.SpatialReference; double falseX; double falseY; double xyUnits; pre92SpatialReference.GetFalseOriginAndUnits(out falseX, out falseY, out xyUnits) ; System.Windows.Forms.MessageBox.Show( "Low precision coordinate grid definition:\n" + "false x: " + falseX + ", false y: " + falseY + ", scale factor: " + xyUnits);

构建方法:


可以使用IArea3D接口计算表面积 ArcSence中包含MultiPatch构建的三维模型,如 三维建筑,树,汽车,街区等等
几何对象

Triangle Strips

由多个三角面组成 前面的面一般由开始的三个点按顺时针组成
几何对象

Triangle Fans

几何对象
几何对象

MultiPatch

三维多面体对象 组成MultiPatch的部分包括:

TriangleStrips, TriangleFans, Triangles, rings(不 同于二维的ring) 拉伸、挤压Polyline,Polygon 通过IConstructMultiPatch接口,IExtrude接口 (GeometryEnvironment)构建MultiPatch对象

Envelope

几何对象

GeometryBag


所有几何对象都可以添加到GeometryBag对象中 不仅可以作为几何对象的容器,还可以对包含的几何 对象进行空间操作,如作为 ITopologicalOperator.ConstructUnion 方法 的参数 在添加几何对象之前,最好定义该对象的投影,添加 的几何对象的投影与该投影相同
//Set the default x,y tolerance value. ISpatialReferenceTolerance spatialReferenceTolerance = spatialReference as ISpatialReferenceTolerance; spatialReferenceTolerance.SetDefaultXYTolerance(); double xMin; double xMax; double yMin; double yMax; spatialReference.GetDomain(out xMin, out xMax, out yMin, out yMax); System.Windows.Forms.MessageBox.Show("Domain : " + xMin + ", " + xMax + ", " + yMin + ", " + yMax); }
几何对象

BufferConstruction

缓冲区构建对象

IBufferConstruction bc = new BufferConstruction(); Buffer = bc.Buffer(myInputGeometry, distance);



IBufferConstructionProperties提供缓冲区构建时新的选 项 线对象可以生成左半边缓冲区或右半边缓冲区 多边形的缓冲区生成时可以排除内部的多边形 缓冲区重叠时会融合在一起 单独的多边形可以合并在一起,即使缓冲区不重叠 不同类型的几何对象可以一起生成缓冲区 同一个几何对象集合可以在周围生成多个缓冲区 不同的要素可以以不同的距离生成缓冲区 构建缓冲区时会生成临时文件,结束后会删除
由多个三角面组成 第一个点一般是圆锥的顶点,并且包含在每个三角面 中
几何对象

Triangles

用于构建MultiPatch的Surface Path 连续的三个点组成一个三角形,其中包含的点的数目 必须是3的倍数
几何对象

Rings

用于Polygon和MultiPatch MultiPatch中的ring不受二维规则约束 MultiPatch对象可以通过一组ring构建带岛的面, ring被加到MultiPatch对象后,就会确定其类型, 包括First Ring,Outer Ring,Inner Ring, Ring,其中First Ring和Ring两种类型都没有明确 的包含关系
第三种方法
private IProjectedCoordinateSystem LoadProjectedCoordinateSystem() { ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); IProjectedCoordinateSystem projectedCoordinateSystem = spatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile( "C :\\Program Files\\ArcGIS\\Coordinate Systems\\Projected Coordinate Systems\\World\\Mollweide (world).prj")as IProjectedCoordinateSystem; return projectedCoordinateSystem; }
坐标系统与空间参考

ISpatialReferenceFactory3

ConstructHighPrecisionSpatialReference方 法从低分辨率的空间投影创建高分辨率的空间投影 ConstructLowPrecisionSpatialReference与 上述方法相反
创建高/低分辨率空间投影,并设置默认分辨率
坐标系统与空间参考

SpatialReferenceEnvironment

单件模式,无论用new实例化多少次,实际上只生成 一个对象 ArcObjects中包含大量已经定义好的空间投影系统, 每个空间投影系统通过Factory code进行区分 Factory code通过esriSR枚举值指定,一般不用整 数值代替,因为整数值所代表的含义偶尔会发生变化 ISpatialReferenceFactory提供根据Factory code创建空间投影对象的方法
private void ConstructCoordinateSystem(bool highPrecision) { ISpatialReferenceFactory3 spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); ISpatialReference3 spatialReference = spatialReferenceFactory.CreateESRISpatialReferenceFromPRJFile( "C :\\Program Files\\ArcGIS\\Coordinate Systems\\Geographic Coordinate Systems\\World\\WGS 1984.prj")as ISpatialReference3; IControlPrecision2 controlPrecision = spatialReference as IControlPrecision2; //Determines whether you are constructing a high- or low-precision spatial reference. controlPrecision.IsHighPrecision = highPrecision; ISpatialReferenceResolution spatialReferenceResolution = spatialReference as ISpatialReferenceResolution; //These three methods are the keys; construct horizon, then set the default x,y resolution and tolerance. spatialReferenceResolution.ConstructFromHorizon(); //Set the default x,y resolution value. spatialReferenceResolution.SetDefaultXYResolution();
坐标Βιβλιοθήκη Baidu统与空间参考

ISpatialReferenceFactory接口包含三类方 法

返回单个对象 返回相同类型的一系列对象 从prj文件或prj字符串中导入或导出空间投影对象的 方法
第二种方法
private void PrintPreDefinedProjections() { ISpatialReferenceFactory spatialReferenceFactory = new SpatialReferenceEnvironmentClass(); ISet projectionSet = spatialReferenceFactory.CreatePredefinedProjections(); System.Windows.Forms.MessageBox.Show("Number of predefined Projections = " + projectionSet.Count); projectionSet.Reset(); for (int i = 0; i < projectionSet.Count; i++) { IProjection projection = projectionSet.Next()as IProjection; System.Windows.Forms.MessageBox.Show(projection.Name); } }
MultiPoint


Polyline



几何对象
几何对象

Polygon

多边形,按包含关系排序的Ring集合,每个Ring是 Segment的集合 通过IPointCollection接口获取组成多边形的顶点 集合的副本 通过IGeometryCollection接口获取组成多边形的 Ring集合 通过ISegmentCollection接口获取组成多边形的 Segment集合
第四讲 几何对象和空间参考
2011.04.01
主要内容
几何对象 坐标系统和空间参考 空间变换

几何对象

GeometryEnvironment

创建几何对象,并且控制几何方法的实现方式 单键对象,不管new多少次,都只有一个实例对象 几何对象的外包矩形 空间投影与几何对象的空间投影相同
几何对象

Point

二维点 多点,有序二维点集合 二维线,有序二维Path的集合 IPointCollection接口获取并操作Polyline对象的顶点集合的 副本 IGeometryCollection接口可以获取Polyline对象的Path集 合 ISegmentCollection接口可以获取Polyline对象的 Segment集合
相关文档
最新文档