AE开发实例代码总结

发布时间 : 星期二 文章AE开发实例代码总结更新完毕开始阅读

上面这个例子只是用了空间过滤,没有用到属性过滤,我们将上面的代码稍微改动下,加上一句代码即可,

结果对照:

使用查询图层快速浏览:

我们可以按照以下步骤来执行一个QueryLayer。 1) 获取SqlWorkspaceFactory

2) 获取SqlWorkspace

3) 构造查询语句

4) 执行查询

5) 获取结果

public IFeatureLayer OracleQueryLayer() {

// 创建SqlWorkspaceFactory的对象

Type pFactoryType =Type.GetTypeFromProgID(\ IWorkspaceFactory pWorkspaceFactory =

(IWorkspaceFactory)Activator.CreateInstance(pFactoryType); // 构造连接数据库的参数

IPropertySet pConnectionProps = new PropertySetClass(); pConnectionProps.SetProperty(\, \ pConnectionProps.SetProperty(\, \ pConnectionProps.SetProperty(\, \pConnectionProps.SetProperty(\, \ pConnectionProps.SetProperty(\, \ // 打开工作空间

IWorkspace workspace = pWorkspaceFactory.Open(pConnectionProps, 0); ISqlWorkspace pSQLWorkspace = workspace as ISqlWorkspace; //获取数据库中的所有表的名称

IStringArray pStringArray= pSQLWorkspace.GetTables(); for (int i = 0; i < pStringArray.Count; i++) {

MessageBox.Show(pStringArray.get_Element(i)); }

// 构造过滤条件 SELECT * FROM PointQueryLayer

IQueryDescription queryDescription = pSQLWorkspace.GetQueryDescription(\PointQueryLayer\

ITable pTable = pSQLWorkspace.OpenQueryClass(\, queryDescription); IFeatureLayer pFeatureLayer = new FeatureLayerClass(); pFeatureLayer.FeatureClass = pTable as IFeatureClass; return pFeatureLayer; }

点几何对象:

Point是一个0维的几何图形,具有X,Y坐标值,以及一些可选的属性:如高程值(Z值),度量值(M值) M这个属性在线性参考和动态分段中经常用到和ID号,点对象用于描述精确定位的对象。同时,点对象还可以有Z和M两个可选属性,。以下代码演示如何创建一个Point对象:

///

/// 获取点 ///

///

private IPoint ConstructPoint(double x, double y) {

IPoint pPoint = new PointClass(); pPoint.PutCoords(x, y); return pPoint; }

MultiPoint对象是一系列无序的点的群集,这些点具有相同的属性信息。例如可以用一个点集来表示整个城市天然气调压站。如下图所示:一个Multipoint对象由8个Point对象组成。

以下代码片段演示如何构建Multipoint对象:

private object pMissing = Type.Missing; public IGeometry GetMultipointGeometry() {

const double MultipointPointCount = 25;

IPointCollection pPointCollection = new MultipointClass(); for (int i = 0; i < MultipointPointCount; i++) {

pPointCollection.AddPoint(GetPoint(), ref pMissing, ref pMissing); }

return pPointCollection as IGeometry; }

private IPoint GetPoint() {

const double Min = -10; const double Max = 10;

Random pRandom = new Random();

double x = Min + (Max - Min) * pRandom.NextDouble();

double y = Min + (Max - Min) * pRandom.NextDouble(); return ConstructPoint(x, y); }

Segment对象

Segment对象是一个有起点和终点的“线“,也就是说Segement只有两个点,至于两点之间的线是直的,还是曲的,需要其余的参数定义。所以Segment是由起点,终点和参数三个方面决定的。Segment有4个子类,它的4个子类(直线,圆弧,椭圆弧,贝赛尔曲线)。

ISegment有两个很有用的方法如下图:

这两个方法用于将该Segment进行分割成小的Segement

Path几何对象

Path是连续的Segment的集合,除了路径的第一个Segment和最后一个Segment外其余的Segment的起始点都是前一个Segment的终止点,即Path对象的中的Segment不能出现分离,Path可以是任意数的Segment子类的组合。

该Path对象有很多我们经常用到的方法,如平滑曲线,对曲线抽稀等操作

Ring几何对象

Ring是一个封闭的Path即起始和终止点有相同的坐标值,它有内部和外部属性。

Polyline几何对象

Polyline对象是由一个或多个相连或者不相连的path对象的有序集合,通常用来代表线状地物如道路,河

联系合同范文客服:xxxxx#qq.com(#替换为@)