| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

AE开发实例代码总结

l***i

贡献于2020-10-15

字数:26855

1AE开发技术文档

数加载问题
1加载数库
数库保存Access中数库加载方式两种:通名字通属性加载(许两种AE中实现功种方式)
A通设置属性加载数库
首先通IPropertySet接口 定义连接数库相关属性数库中数库路径例:
IPropertySet Propset new PropertySetClass()
PropsetSetProperty(DATABASE@D\test\Ao\data\sh\Mapdatamdb)
定义完属性设置属性进行开数库操作ArcEngine开发中存IWorkspaceFactory IFeatureWorkspace IFeatureClass IFeatureLayer等常开操作数空间物接口IWorkspaceFactory 创建开工作空间接口抽象接口具体应时应工作空间实例化
IWorkspaceFactory Fact new AccessWorkspaceFactoryClass () 果开SDE 数库 SdeWorkspaceFactoryClass 实例化Fact完成工作空间实例化根边设置属性开应Access 数库开方式:
IFeatureWorkspace Workspace FactOpen( Propset0) as IFeatureWorkspace

开Access 工作空间接事情做什简单找应物类赋相应层通MapControl 控件添加应层然刷新图添加某层代码:
IFeatureClass Fcls WorkspaceOpenFeatureClass(District)找应物类
IFeatureLayer Fly new FeatureLayerClass()建立新图层
FlyFeatureClass Fcls 物赋相应层
MapCtrMapAddLayer (Fly)添加层
MapCtrActiveViewRefresh()刷新图
中District 物类名字MapCtr AE中MapControl 象边通属性设置加载数空间方式SDE 数库SDE 数库加载时会介绍
通设置属性加载Access 数库完整C#代码:
public void AddAccessDBByPro()
{
IPropertySet Propset new PropertySetClass()
PropsetSetProperty(DATABASE@D\test\Ao\data\sh\MapDatamdb )
IWorkspaceFactory Fact new AccessWorkspaceFactoryClass ()
IFeatureWorkspace Workspace FactOpen(Propset0) as IFeatureWorkspace

IFeatureClass Fcls WorkspaceOpenFeatureClass (District)
IFeatureLayer Fly new FeatureLayerClass()
FlyFeatureClass Fcls
MapCtrMapAddLayer(Fly)
MapCtrActiveViewRefresh()
}

B通数库名字加载数库
public void AddAccessDBByName()
{
IworkspaceName pWorkspaceName new WorkspaceNameClass()
pWorkspaceNameWorkspaceFactoryProgID esriDataSourcesGDBAccessWorkspaceFactory
pWorkspaceNamePathName @D\test\Ao\data\sh\MapDatamdb
IName npWorkspaceName as IName
IFeatureWorkspace Workspace nOpen() as IFeatureWorkspace

IFeatureClass Fcls WorkspaceOpenFeatureClass (District)
IFeatureLayer Fly new FeatureLayerClass()
FlyFeatureClass Fcls
MapCtrMapAddLayer(Fly)
MapCtrActiveViewRefresh()

}
首先创建数库工作空间名指定工作空间名ProgID确定开什类型工作空间例开Access数库时面代码
IworkspaceName pWorkspaceName new WorkspaceNameClass()
pWorkspaceNameWorkspaceFactoryProgID esriDataSourcesGDBAccessWorkspaceFactory
pWorkspaceNamePathName @D\test\Ao\data\sh\MapDatamdb
属性WorkspaceFactoryProgID确保工作空间AccessWorkspaceFactory数库时指定开数库路径开数库开工作空间必须IName接口(思考没办法)接着定义IName象工作空间名转换成IName类型赋值IName象然通IName象open方法开相应工作空间代码:
IName npWorkspaceName as IName
IFeatureWorkspace Workspace nOpen() as IFeatureWorkspace

2AE开发编辑功
数编辑问题
1 需解概念
长事务 短事务 编辑空间 抽象类类组件象类
2基添加点线面功
添加点(方法种基思路样少量接口变化)
通FeatureClassCreatFeature函数添加物
public void AddPointByStore()
{
添加物图层
IFeatureLayer lMapCtrMapget_Layer(0) as IFeatureLayer
定义物类编辑图层转化定义物类
IFeatureClass fc lFeatureClass
先定义编辑工作空间然转化数集转化编辑工作空间
IWorkspaceEdit w(fc as IDataset)Workspace as IWorkspaceEdit
IFeature f
IPoint p
开始事务操作
wStartEditing(false)
开始编辑
wStartEditOperation()
for(int i0i<100i++)
{
创建物
ffcCreateFeature()
pnew PointClass()
设置点坐标
pPutCoord(ii)
确定图形类型
fShapep
保存物
fStore()
}
结束编辑
wStopEditOperation()
结束事务操作
wStopEditing(true)

}



二添加线
方法添加点样物类型样已




AE中类库介绍
1 问题:什UI组件?
2 类库介绍





空间拓扑运算

1高级象:点(point)点(multipoint)线(polyline)面(polygon)multipatch等(multipatch:片三维形图中图符号包括点状符号线状符号面状符号体状符号片(MultiPatch)符号等)
2拓扑:空间拓扑描述事然界理象空间位置关系相邻重合连通等素集素类间关系集合参拓扑素类必须素集(具空间参考)样进行拓扑检查精确
3素集拓扑素类参拓扑拓扑中定义规理象空间属性部分目前ESRI提供数存储方式中CoverageGeoDatabase够建立拓扑Shape格式数建立拓扑
4 esriTRTAny———— 拓扑规查询拓扑时候(ESRI提供拓扑关系)
5AE中提供ITopologicalOperator接口拓扑运算ITopologicalOperator接口通已存象做空间拓扑运算产生新集合象ITopologicalOperator接口GIS开发中非常广泛通常GIS系统中缓区分析裁剪图形图形差分操作图形合操作等需接口
Boundary 方法图形象边界Polygon象Boundary组成Polyline象Polyline象Boundary组成顶点Point象Point象Boundary空象

Buffer 集合象缓区分析拓扑操作该方法高级象产生缓区PolygonPolylinePoint缓区具面积象
Clip 象进行裁剪空间拓扑操作Clip方法Envelope象象进行裁剪结果象Envelope象包围部分
ConstructUion枚举象单象合单象
ConvexHull 构建象凸边形ConvexHull方法产生图形边框凸边形(没凹面包含图形边形)
Cut 切割象支持GeometryBags象指定条切割曲线图形切割运算图形分左右两部分左右两部分相曲线方言点点分割PolylinePolygon切割曲线相交时执行Cut方法
Difference 图形中减图形相交部分产生两象差集
Intersection方法两纬度象交集部分
Simplify象拓扑致
SymmetricDifference称差分两图形集部分减两图形交集部分






开发实例

鹰眼功实现:

分析:鹰眼图操作动作控件中移动幅图时候控件中图发生变化控件中重新加载幅图时候外控件图发生相应变化时鸟瞰控件中加入红色边框注意实面填充颜色透明已通分析知道添加两MapControl控件名字分axMapControl1axMapControl2中axMapControl1图axMapControl2鸟瞰图

方法:步骤:名称axMapControl1MapControl控件需axMapControl1OnExtentUpdatedOnMapReplaced中分添加代码:

private void axMapControl1_OnExtentUpdated(object sender IMapControlEvents2_OnExtentUpdatedEvent e)
{
新范围
IEnvelope pEnvelope (IEnvelope)enewEnvelope
IGraphicsContainer pGraphicsContainer axMapControl2Map as IGraphicsContainer
IActiveView pActiveView pGraphicsContainer as IActiveView
绘制前清axMapControl2中图形元素
pGraphicsContainerDeleteAllElements()
IRectangleElement pRectangleEle new RectangleElementClass()
IElement pElement pRectangleEle as IElement
pElementGeometry pEnvelope
设置鹰眼图中红线框
IRgbColor pColor new RgbColorClass()
pColorRed 255
pColorGreen 0
pColorBlue 0
pColorTransparency 255
产生线符号象
ILineSymbol pOutline new SimpleLineSymbolClass()
pOutlineWidth 3
属性
IFillSymbol pFillSymbol new SimpleFillSymbolClass()
pFillSymbolColor pColor
pFillSymbolOutline pOutline
IFillShapeElement pFillShapeEle pElement as IFillShapeElement
pFillShapeEleSymbol pFillSymbol
pGraphicsContainerAddElement((IElement)pFillShapeEle 0)
pActiveViewPartialRefresh(esriViewDrawPhaseesriViewGraphics null null)
}
private void axMapControl1_OnMapReplaced(object sender IMapControlEvents2_OnMapReplacedEvent e)
{
if (axMapControl1LayerCount > 0)
{
axMapControl2Map new MapClass()
for (int i 0 i < axMapControl1MapLayerCount 1 i++)
{
axMapControl2AddLayer(axMapControl1get_Layer(i))
}
axMapControl2Extent axMapControl1Extent
axMapControl2Refresh()
}
}
步骤二:名称axMapControl2MapControl控件需axMapControl2OnMouseMoveOnMouseDown中分添加代码:
private void axMapControl2_OnMouseMove(object sender IMapControlEvents2_OnMouseMoveEvent e)
{
if (ebutton 1)
{
IPoint pPoint new PointClass()
pPointPutCoords(emapX emapY)
axMapControl1CenterAt(pPoint)
axMapControl1ActiveViewPartialRefresh(esriViewDrawPhaseesriViewGeography null null)
}
}
private void axMapControl2_OnMouseDown(object sender IMapControlEvents2_OnMouseDownEvent e)
{
if (axMapControl2MapLayerCount > 0)
{
if (ebutton 1)
{
IPoint pPoint new PointClass()
pPointPutCoords(emapX emapY)
axMapControl1CenterAt(pPoint)
axMapControl1ActiveViewPartialRefresh(esriViewDrawPhaseesriViewGeography null null)
}
else if (ebutton 2)
{
IEnvelope pEnv axMapControl2TrackRectangle()
axMapControl1Extent pEnv
axMapControl1ActiveViewPartialRefresh(esriViewDrawPhaseesriViewGeography null null)
}
}
}

二 显示属性表信息
知道ArcMap中Table of Contents功图:

ArcGIS Engine提供TOCControl控件没提供需开发里做显示属性表功
分析:显示某图层属性表首先图层选中然外Form中选中图层属性信息进行显示
方法:添加文菜单添加新Form窗体新窗体添加GridView控件TOCControl控件OnMouseDown事件添加代码(pGlobalFeatureLayer定义全局变量):
private void axTOCControl1_OnMouseDown(object sender ESRIArcGISControlsITOCControlEvents_OnMouseDownEvent e)
{
if (axMapControl1LayerCount > 0)
{
esriTOCControlItem pItem new esriTOCControlItem()
pGlobalFeatureLayer new FeatureLayerClass()
IBasicMap pBasicMap new MapClass()
object pOther new object()
object pIndex new object()
axTOCControl1HitTest(ex ey ref pItem ref pBasicMap ref pGlobalFeatureLayer ref pOther ref pIndex)
}
if (ebutton 2)
{
contextShow(axTOCControl1 ex ey)
}
}
文菜单开属性表Click事件中添加代码:
private void 开属性表ToolStripMenuItem_Click(object sender EventArgs e)
{
FormTable Ft new FormTable(pGlobalFeatureLayer as IFeatureLayer)
FtShow()
}
新窗体中添加属性表显示GridView控件中函数:
public void Itable2Dtable()
{
IFields pFields
pFields pFeatureLayerFeatureClassFields
dtGridViewColumnCount pFieldsFieldCount
for (int i 0 i < pFieldsFieldCounti++ )
{
string fldName pFieldsget_Field(i)Name
dtGridViewColumns[i]Name fldName
dtGridViewColumns[i]ValueType SystemTypeGetType(ParseFieldType(pFieldsget_Field(i)Type))
}
IFeatureCursor pFeatureCursor
pFeatureCursor pFeatureLayerFeatureClassSearch(null false)
IFeature pFeature
pFeature pFeatureCursorNextFeature()
while (pFeature null)
{
string[] fldValue new string[pFieldsFieldCount]
for (int i 0 i < pFieldsFieldCount i++)
{
string fldName
fldName pFieldsget_Field(i)Name
if (fldNamepFeatureLayer FeatureClass ShapeFieldName)
{
fldValue[i] ConvertToString(pFeatureShapeGeometryType)
}
else
fldValue[i] ConvertToString(pFeatureget_Value(i))
}
dtGridViewRowsAdd(fldValue)
pFeature pFeatureCursorNextFeature()
}
}

数库知识:
DB2InformixPostgreSQL


数库开方式方法:
1 开数库:
public IWorkspace GetMDBWorkspace(String _pGDBName)
{
IWorkspaceFactory pWsFac new AccessWorkspaceFactoryClass()
IWorkspace pWs pWsFacOpenFromFile(_pGDBName0)
return pWs
}

2 开文件数库:
public IWorkspace GetFGDBWorkspace(String _pGDBName)
{
IWorkspaceFactory pWsFac new FileGDBWorkspaceFactoryClass()
IWorkspace pWs pWsFacOpenFromFile(_pGDBName 0)
return pWs
}
3 开SDE数库:
开SDE数库Open方法方法IPropertySet象设置开SDE数库获取SDE数库服务器址数库实例数库户密码等参数IPropertySetKeyValue象帮组设置然传Open方法中
public IWorkspace GetSDEWorkspace(String _pServerIP String _pInstance String _pUser String _pPassword String _pDatabase String _pVersion)
{
ESRIArcGISesriSystemIPropertySet pPropertySet new ESRIArcGISesriSystemPropertySetClass()
pPropertySetSetProperty(SERVER _pServerIP)
pPropertySetSetProperty(INSTANCE _pInstance)
pPropertySetSetProperty(DATABASE _pDatabase)
pPropertySetSetProperty(USER _pUser)
pPropertySetSetProperty(PASSWORD _pPassword)
pPropertySetSetProperty(VERSION _pVersion)
ESRIArcGISGeodatabaseIWorkspaceFactory2 workspaceFactory
workspaceFactory (ESRIArcGISGeodatabaseIWorkspaceFactory2)new ESRIArcGISDataSourcesGDBSdeWorkspaceFactoryClass()
return workspaceFactoryOpen(pPropertySet 0)
}
注意开SDE数库需ArcGIS Engine运行时企业级许(时License需特设置——ArcEngineLisence应企业数库类型From1_Load事件中初始化lisencelisence控件设置否提示没许lisence)
具体解决代码:
private void From1_Load(object senderEventArg e)
{
IAoInitialize paonew AoInitializeClass()
paoInitialize(esriLisenceProductCodeesriLisenceProductCodeEngineGeoDB)
}


442 获取数库中素类
ArcGIS Engine中某类首获取工作空间然进入工作空间相应东西两步骤:
l 获取工作空间
l 获取相应素类

定义函数获取数库路径
public string WsPath()
{
string WsFileName
OpenFileDialog OpenFile new OpenFileDialog()
OpenFileFilter 数库(MDB)|*mdb
DialogResult DialogR OpenFileShowDialog()
if (DialogR DialogResultCancel)
{
}
else
{
WsFileName OpenFileFileName
}
return WsFileName
}

获取素类首先获取工作空间然工作空间中素类进行遍历代码:
private void button2_Click(object sender EventArgs e)
{
string WsName WsPath()
if (WsName )
{
IWorkspaceFactory pWsFt new AccessWorkspaceFactoryClass()
IWorkspace pWs pWsFtOpenFromFile(WsName 0)
IEnumDataset pEDataset pWsget_Datasets(esriDatasetTypeesriDTAny)
IDataset pDataset pEDatasetNext()
while (pDataset null)
{
if (pDatasetType esriDatasetTypeesriDTFeatureClass)
{
FeatureClassBoxItemsAdd(pDatasetName)
}
果数集
else if (pDatasetType esriDatasetTypeesriDTFeatureDataset)
{
IEnumDataset pESubDataset pDatasetSubsets
IDataset pSubDataset pESubDatasetNext()
while (pSubDataset null)
{
FeatureClassBoxItemsAdd(pSubDatasetName) 里???
pSubDataset pESubDatasetNext()
}
}
pDataset pEDatasetNext()
}
}
FeatureClassBoxText FeatureClassBoxItems[0]ToString()
}


判断素否编辑:
ArcGIS Engine 提供IDatasetEdit接口判断数否处编辑状态该接口方法:
示例代码:
public bool ISEdit (IFeatureClass pFeatureClass)
{
IDatasetEdit pDataEdit pFeatureClass as IDatasetEdit
return pDataEditIsBeingEdited()
}

删素类:
IFeatureWorkspace接口理基矢量数表素类素数集等
想删素类必须先开名称PointTest素类需OpenFeatureClass中传入素类名称代码:
IWorkspaceFactory pWsFt new AccessWorkspaceFactoryClass()
IWorkspace pWs pWsFtOpenFromFile(WsName 0)
IFeatureWorkspace pFWs pWs as IFeatureWorkspace
IFeatureClass pFClass pFWsOpenFeatureClass(PointTest)

果ArcMap中会切换Catalog中然进入相应数库然删相应素类种操作会想FeatureClas象会提供删方法实然删方法定义Dataset象中
private void button1_Click(object sender EventArgs e)
{
string WsName WsPath()
if( WsName )
{
IWorkspaceFactory pWsFt new AccessWorkspaceFactoryClass()
IWorkspace pWs pWsFtOpenFromFile(WsName 0)
IFeatureWorkspace pFWs pWs as IFeatureWorkspace
IFeatureClass pFClass pFWsOpenFeatureClass(PointTest)
IDataset pDatset pFClass as IDataset
pDatsetDelete()
}
}
删前:

删:


创建素类
创建素类IFeatureWorkspaceCreateFeatureClass方法
需接口:IFieldIFieldEditIFieldsIFieldsEditIGeometryDefIGeometryDefEdit接口

(注意 NET中会遇_2结尾属性属性写)
定义字段类型点类型
ISpatialReference pSpatialReference axMapControl1ActiveViewFocusMapSpatialReference
IGeometryDefEdit pGeoDef new GeometryDefClass()
IGeometryDefEdit pGeoDefEdit pGeoDef as IGeometryDefEdit
pGeoDefEditGeometryType_2 esriGeometryTypeesriGeometryPoint
pGeoDefEditSpatialReference_2 pSpatialReference

定义字段集合象
IFields pFields new FieldsClass()
IFieldsEdit pFieldsEdit (IFieldsEdit)pFields
定义单字段
IField pField new FieldClass()
IFieldEdit pFieldEdit (IFieldEdit)pField
pFieldEditName_2 SHAPE
pFieldEditType_2 esriFieldTypeesriFieldTypeGeometry
pFieldsEditAddField(pField)
pFieldEditGeometryDef_2 pGeoDef
定义单字段添加字段集合中
pField new FieldClass()
pFieldEdit (IFieldEdit)pField
pFieldEditName_2 STCD
pFieldEditType_2 esriFieldTypeesriFieldTypeString
pFieldsEditAddField(pField)
定义单字段添加字段集合中
pField new FieldClass()
pFieldEdit (IFieldEdit)pField
pFieldEditName_2 SLM10
pFieldEditType_2 esriFieldTypeesriFieldTypeString
pFieldsEditAddField(pField)
定义单字段添加字段集合中
pField new FieldClass()
pFieldEdit (IFieldEdit)pField
pFieldEditName_2 SLM20
pFieldEditType_2 esriFieldTypeesriFieldTypeString
pFieldsEditAddField(pField)
定义单字段添加字段集合中
pField new FieldClass()
pFieldEdit (IFieldEdit)pField
pFieldEditName_2 SLM40
pFieldEditType_2 esriFieldTypeesriFieldTypeString
pFieldsEditAddField(pField)
IWorkspaceFactory pFtWsFct new AccessWorkspaceFactory()
IFeatureWorkspace pWs pFtWsFctOpenFromFile(@E\arcgis\Engine\smdb 0) as IFeatureWorkspace
IFeatureClass pFtClass pWsCreateFeatureClass(Test pFields null null esriFeatureTypeesriFTSimple SHAPE null)——————


改变字段名?
public void ChangeFieldAliasName(ITable pTable string pOriFieldName string pDesFieldName)
{
IClassSchemaEdit pClassSchemaEdit (IClassSchemaEdit)pTable
象加锁
ISchemaLock pSchemaLock (ISchemaLock)pTable
pSchemaLockChangeSchemaLock(esriSchemaLockesriExclusiveSchemaLock)
if (pTableFindField(pOriFieldName) 1)
{
pClassSchemaEditAlterFieldAliasName(pOriFieldName pDesFieldName)
pSchemaLockChangeSchemaLock(esriSchemaLockesriSharedSchemaLock)

IFeatureSelection接口高亮显示
介绍IMap接口节IMapIMapSelectFeature方法实现查询素高亮显示现IFeatureSelection接口实现查询高亮显示

IMap pMap axMapControl1Map
IFeatureLayer pFeaturelayer GetLayer(pMap Roads) as IFeatureLayer
IFeatureSelection pFeatureSelection pFeaturelayer as IFeatureSelection
IQueryFilter pQuery new QueryFilterClass()
pQueryWhereClause TYPE +'paved'
pFeatureSelectionSelectFeatures(pQueryesriSelectionResultEnumesriSelectionResultNewfalse)
axMapControl1ActiveViewRefresh()

中GetLayer函数写根图层名称获取图层方法代码

private ILayer GetLayer(IMap pMap string LayerName)
{
IEnumLayer pEnunLayer
pEnunLayer pMapget_Layers(null false)
pEnunLayerReset()
ILayer pRetureLayer
pRetureLayer pEnunLayerNext()
while (pRetureLayer null)
{
if (pRetureLayerName LayerName)
{
break
}
pRetureLayer pEnunLayerNext()
}
return pRetureLayer
}

提问:三种方式区里?
axMapControl1Refresh(esriViewDrawPhaseesriViewGeoSelection null null)
axMapControl1ActiveViewRefresh()
axMapControl1Refresh()
创建符合求表:
public ITable CreateTable(string _TablePath string _TableName)
{
IWorkspaceFactory pWks new ShapefileWorkspaceFactoryClass()
IFeatureWorkspace pFwk pWksOpenFromFile(_TablePath 0) as IFeatureWorkspace
记录面中ID
IField pFieldID new FieldClass()
IFieldEdit pFieldIID pFieldID as IFieldEdit
pFieldIIDType_2 esriFieldTypeesriFieldTypeInteger
pFieldIIDName_2 面ID
记录数
IField pFieldCount new FieldClass()
IFieldEdit pFieldICount pFieldCount as IFieldEdit
pFieldICountType_2 esriFieldTypeesriFieldTypeInteger
pFieldICountName_2 数
添加表中必字段
ESRIArcGISGeodatabaseIObjectClassDescription objectClassDescription new ESRIArcGISGeodatabaseObjectClassDescriptionClass()
IFields pTableFields objectClassDescriptionRequiredFields
IFieldsEdit pTableFieldsEdit pTableFields as IFieldsEdit
pTableFieldsEditAddField(pFieldID)
pTableFieldsEditAddField(pFieldCount)
ITable pTable pFwkCreateTable(_TableName pTableFields null null )
return pTable
}
统计需数:

第参数面数第二参数点数第三输出表




public void StatisticPointCount(IFeatureClass _pPolygonFClass IFeatureClass _pPointFClass ITable _pTable)
{
IFeatureCursor pPolyCursor _pPolygonFClassSearch(null false)
IFeature pPolyFeature pPolyCursorNextFeature()

while (pPolyFeature null)
{
IGeometry pPolGeo pPolyFeatureShape
int Count 0
ISpatialFilter spatialFilter new SpatialFilterClass()
spatialFilterGeometry pPolGeo
spatialFilterSpatialRel esriSpatialRelEnumesriSpatialRelContains
IFeatureCursor pPointCur _pPointFClassSearch(spatialFilter false)
if (pPointCur null)
{
IFeature pPointFeature pPointCurNextFeature()
while (pPointFeature null)
{
pPointFeature pPointCurNextFeature()
Count++
}
}
if (Count 0)
{
IRow pRow _pTableCreateRow()
pRowset_Value(1 pPolyFeatureget_Value(0))
pRowset_Value(2 Count)
pRowStore()
}
pPolyFeature pPolyCursorNextFeature()
}
}
效果:

面例子空间滤没属性滤面代码稍微改动加句代码

结果:

查询图层快速浏览
步骤执行QueryLayer
1) 获取SqlWorkspaceFactory
2) 获取SqlWorkspace
3) 构造查询语句
4) 执行查询
5) 获取结果
public IFeatureLayer OracleQueryLayer()
{
创建SqlWorkspaceFactory象
Type pFactoryType TypeGetTypeFromProgID(esriDataSourcesGDBSqlWorkspaceFactory)
IWorkspaceFactory pWorkspaceFactory (IWorkspaceFactory)ActivatorCreateInstance(pFactoryType)
构造连接数库参数
IPropertySet pConnectionProps new PropertySetClass()
pConnectionPropsSetProperty(dbclient Oracle11g)
pConnectionPropsSetProperty(serverinstance esri)
pConnectionPropsSetProperty(authentication_mode DBMS)
pConnectionPropsSetProperty(user scott)
pConnectionPropsSetProperty(password arcgis)
开工作空间
IWorkspace workspace pWorkspaceFactoryOpen(pConnectionProps 0)
ISqlWorkspace pSQLWorkspace workspace as ISqlWorkspace
获取数库中表名称
IStringArray pStringArray pSQLWorkspaceGetTables()
for (int i 0 i < pStringArrayCount i++)
{
MessageBoxShow(pStringArrayget_Element(i))
}
构造滤条件 SELECT * FROM PointQueryLayer
IQueryDescription queryDescription pSQLWorkspaceGetQueryDescription(SELECT * FROM PointQueryLayer)
ITable pTable pSQLWorkspaceOpenQueryClass(QueryLayerTest queryDescription)
IFeatureLayer pFeatureLayer new FeatureLayerClass()
pFeatureLayerFeatureClass pTable as IFeatureClass
return pFeatureLayer
}
点象:
Point0维图形具XY坐标值选属性:高程值(Z值)度量值(M值) M属性线性参考动态分段中常ID号点象描述精确定位象时点象ZM两选属性代码演示创建Point象

获取点




private IPoint ConstructPoint(double x double y)
{
IPoint pPoint new PointClass()
pPointPutCoords(x y)
return pPoint
}

MultiPoint象系列序点群集点具相属性信息例点集表示整城市天然气调压站图示:Multipoint象8Point象组成

代码片段演示构建Multipoint象
private object pMissing TypeMissing
public IGeometry GetMultipointGeometry()
{
const double MultipointPointCount 25
IPointCollection pPointCollection new MultipointClass()
for (int i 0 i < MultipointPointCount i++)
{
pPointCollectionAddPoint(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) * pRandomNextDouble()
double y Min + (Max Min) * pRandomNextDouble()
return ConstructPoint(x y)
}
Segment象
Segment象起点终点线说Segement两点两点间线直曲需余参数定义Segment起点终点参数三方面决定Segment4子类4子类(直线圆弧椭圆弧贝赛尔曲线)

ISegment两方法图:

两方法该Segment进行分割成Segement

Path象
Path连续Segment集合路径第SegmentSegment外余Segment起始点前Segment终止点Path象中Segment出现分离Path意数Segment子类组合


该Path象常方法滑曲线曲线抽稀等操作

Ring象
Ring封闭Path起始终止点相坐标值部外部属性

Polyline象
Polyline象相连者相连path象序集合通常代表线状物道路河流线等等该象ArcGIS Engine中模型图:

意味着户必须种层次构造polyline实际Point集合直接构成Polyline组成Polyline路径连续连续

Polyline序path组成集合拥MZID属性值Polyline象IPointCollection接口包含节点信息IGeometryCollection接口获取polylinepathsISegmentCollection接口获取 polylinesegments
Polyline象必须满足准:
1组成Polyline象Path象必须效
2组成Polyline象Path象重合相交相交
3组成Polyline象Path象连接某点分离
4Path象长度0
IPolylinePolyline类接口IPolylineReshape方法Path象Polyline象整形IPolylineSimplifyNetwork方法简化网络
Polyline象IGeometryCollection接口添加Path象方法创建该接口需注意情况:
1Path象必须效IPathSimplify方法效
2PolylinePath象序集合添加Path象时必须注意序方
3保证Polyline效创建完Polyline象ITopologicalOperator接口Simplify方法
面代码片段演示Polyline构成:
private object pMissing TypeMissing
public IGeometry GetPolylineGeometry()
{
const double PathCount 3
const double PathVertexCount 3
IGeometryCollection pGeometryCollection new PolylineClass()
for (int i 0 i < PathCount i++)
{
IPointCollection pPointCollection new PathClass()
for (int j 0 j < PathVertexCount j++)
{
pPointCollectionAddPoint(GetPoint() ref pMissing ref pMissing)
}
pGeometryCollectionAddGeometry(pPointCollection as IGeometry ref pMissing ref pMissing)
}
return pGeometryCollection as IGeometry
}
private IPoint GetPoint()
{
const double Min 10
const double Max 10
Random random new Random()
double x Min + (Max Min) * randomNextDouble()
double y Min + (Max Min) * randomNextDouble()
return ConstructPoint(x y)
}


SegmentPathRingPolyline区
四者中Segment单位具体构成路线分两条:
SegmentPathRing(封闭Path)
SegmentPathPolyline
样说SegmentPathPathSegment组成Ring种Path起点终点重合PathPolyline明显区图出:





Polygon象
Polylgon象Ring象序集合单Ring 象构成Ring组成Polygon通常代表面积边形矢量象行政区建筑物等Polygon组成结构图:

图出 PolygonRings构成RingSegment构成意味着户必须种层次构造Polygon实际Point集合构成Polygon


通点构造面



public IPolygon CreatePolygonByPoints(IPointCollection pPointCollection)
{
IGeometryBridge2 pGeometryBridge2 new GeometryEnvironmentClass()
IPointCollection4 pPolygon new PolygonClass()
WKSPoint[] pWKSPoint new WKSPoint[pPointCollectionPointCount]
for (int i 0 i < pPointCollectionPointCount i++)
{
pWKSPoint[i]X pPointCollectionget_Point(i)X
pWKSPoint[i]Y pPointCollectionget_Point(i)Y
}
pGeometryBridge2SetWKSPoints(pPolygon ref pWKSPoint)
IPolygon pPoly pPolygon as IPolygon
pPolyclose()
return pPoly
}

组成PolygonRing中Ring分Outer Ring(外环)Inner Ring(环)分外环环方区外环方时针环方逆时针


Polygon象实现接口IArea该接口Poylgon中心重心面积进行访问面片段获取Polygoe面积:
IArea pArea pPolygon as IArea
Double S pArea Area


IGeometryCollection接口

通IGeometryCollection创建Polygon象代码片段:
private IPolygon ConstructorPolygon(List pRingList)
{
try
{
IGeometryCollection pGCollection new PolygonClass()
object o TypeMissing
for (int i 0 i < pRingListCount i++)
{
通IGeometryCollection接口AddGeometry方法Polygon象中添加Ring子象
pGCollectionAddGeometry(pRingList[i] ref o ref o)
}
QIITopologicalOperator
ITopologicalOperator pTopological pGCollection as ITopologicalOperator
执行Simplify操作
pTopologicalSimplify()
IPolygon pPolygon pGCollection as IPolygon
返回Polygon象
return pPolygon
}
catch (Exception Err)
{
return null
}
}

private IPolygon MergePolygons(IPolygon firstPolygon IPolygon SecondPolygon)
{
try
{
创建Polygon象
IGeometryCollection pGCollection1 new PolygonClass()
IGeometryCollection pGCollection2 firstPolygon as IGeometryCollection
IGeometryCollection pGCollection3 SecondPolygon as IGeometryCollection
添加firstPolygon
pGCollection1AddGeometryCollection(pGCollection2)
添加SecondPolygon
pGCollection1AddGeometryCollection(pGCollection3)
QIITopologicalOperator
ITopologicalOperator pTopological pGCollection1 as ITopologicalOperator
执行Simplify操作
pTopologicalSimplify()
IPolygon pPolygon pGCollection1 as IPolygon
返回Polygon象
return pPolygon
}
catch (Exception Err)
{
return null
}
}

唯值渲染代码:
public UniqueValueRender(AxMapControl pMapcontrol IFeatureLayer pFtLayerint pCount string pFieldName)
{
IGeoFeatureLayer pGeoFeaturelayer pFtLayer as IGeoFeatureLayer
IUniqueValueRenderer pUnique new UniqueValueRendererClass()
pUniqueFieldCount 1
pUniqueset_Field(0 pFieldName)
ISimpleFillSymbol pSimFill new SimpleFillSymbolClass()
颜色
IFeatureCursor pFtCursor pFtLayerFeatureClassSearch(null false)
IFeature pFt pFtCursorNextFeature()
IFillSymbol pFillSymbol1
添加第符号
pFillSymbol1 new SimpleFillSymbolClass()
pFillSymbol1Color GetRGBColor(103 252 179) as IColor
添加第二符号
IFillSymbol pFillSymbol2 new SimpleFillSymbolClass()
pFillSymbol2Color GetRGBColor(125 155 251) as IColor
创建设置机色谱面图出值定义种颜色创建色谱色谱参数
IRandomColorRamp pColorRamp new RandomColorRampClass()
pColorRampStartHue 0
pColorRampMinValue 20
pColorRampMinSaturation 15
pColorRampEndHue 360
pColorRampMaxValue 100
pColorRampMaxSaturation 30
pColorRampSize pCount
pColorRampSize pUniqueValueRendererValueCount
bool ok true
pColorRampCreateRamp(out ok)
IEnumColors pEnumRamp pColorRampColors
IColor pColor pEnumRampNext()
int pIndex pFtFieldsFindField(pFieldName)
24条记录改变会超255者负数求余
int i 0
while (pFt null)
{
IColor pColor pEnumRampNext()
if(pColor null)
{
pEnumRampReset()
pColor pEnumRampNext()
}
注释代码定义两种颜色 果机颜色采样
if (i 2 0)
{
pUniqueAddValue(ConvertToString(pFtget_Value(pIndex)) pFieldName pFillSymbol1 as ISymbol)
}
else
{
pUniqueAddValue(ConvertToString(pFtget_Value(pIndex)) pFieldName pFillSymbol2 as ISymbol)
}
i++
pFillSymbol1 new SimpleFillSymbolClass()
pFillSymbol1Color pColor
pUniqueAddValue(ConvertToString(pFtget_Value(pIndex)) pFieldName pFillSymbol1 as ISymbol)
pFt pFtCursorNextFeature()
pColor pEnumRampNext()
}
pGeoFeaturelayerRenderer pUnique as IFeatureRenderer
pMapcontrolActiveViewPartialRefresh(esriViewDrawPhaseesriViewGeography null null)
}
private IRgbColor GetRGBColor(int R int G int B)子类赋父类
{
IRgbColor pRGB
pRGB new RgbColorClass()
pRGBRed R
pRGBGreen G
pRGBGreen B
return pRGB
}
}




第二部分 AO GIS应开发
1 ArcViewAecEditArcInfo软件名称桌面版GIS种版代码三种版软件系统ArcMapArcCatalogArcScene等单软件组成包含GIS功样中ArcInfo功强
2 GIS服务器通网络发布理信息包括ArcGIS ServerArcIMSArcSDE三种软件ArcGIS Server通常建构企业级互联网GIS应
ArcIMS定制扩展够网络发布理信息网络图发布系统ArcSDE空间数引擎理关系数库实现理数海量存储等高级特性

文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

早教客户开发实例

金宝贝早教客户开发实例 在中秋与教师节来临的前一天,在金宝贝早教的授权下,我省速递物流配送了200份教师月饼与节日慰问卡,再由邮递员为奋战在全市各条战线上的教育工作者送去教师节的慰问和中秋祝福。节日慰问卡体现了“尊师重教”的传统,又为教育工作者提供了一定的消费优惠,受到广大教师的热烈欢迎。    EMS赢得业务的同时,又为湖南省尊师传统添了一笔浓彩。 2014年教师节与中秋节相连,机会难得

x***5 9年前 上传6975   0

关于异地开发中的源代码管理问题

关于异地开发中的源代码管理问题最近在带领一个异地的团队在进行.NetB/S系统开发工作。两地相隔1000多公里,两地都有开发人员,源码的统一管理就成了需要解决的问题。针对这个问题,想到如下的解决方法:   一、利用MicrosoftVisualSourceSafe的Internet功能   优点:   1.考虑使用VSS是因为他与MicrosoftVisualStudio集成的很紧密。可以在

晓***1 10年前 上传521   0

敏捷开发中高质量Java代码开发实践

本文将介绍在敏捷开发过程中如何通过采取一系列的步骤来保证和提高整个工程的代码质量,阐述了每一步可以利用的工具和最正确实践,从而使开发过程更加标准化,成就高质量的代码。概述Java 工程开发过程中,由于开发人员的经验、代码风格各不相同,以及缺乏统一的标准和管理流程,往往导致整个工程的代码质量较差,难于维护,需要较大的测试投入和周期等问题。这些问题在一个工程组初建、需求和设计均具有不完全可预

静***雅 2年前 上传303   0

AE绩效考核方案

AE绩效考核方案一、考核目的作为员工薪资调整、绩效工资发放、职务调整的依据。二、考核原则考核的有效性,可行性,客观、公开的进行测评。三、适用范围此绩效考核方案主要是对ae进行考评。四、ae工作负责人及职责工作对接人:赵宁、张岩主要负责销售签单后,交至ae处,由ae负责对接设计及客户方,待设计完成并制作完成后,后续款项的催款由ae协助销售一并完成。五、考核内

旅***0 4年前 上传1501   0

超强AE培训手册

广告AE升级系统实战篇(一)--培养卓越心理素质 修炼“五心“上将 广告AE升级系统 广告AE系统升级主要从调整业务心态、打造业务战斗力,实现专业突破和改变自我价值理念几个方面着手,把广告AE打造成鹰一样的个人,雁一般的团队。 心态升级 心态是成功的基础,我经常给学员讲到,心态比专业技能更s重要,没有专业技能并不可怕,关键在于有没有良好的态度。假如没有正确的心态,再好的职业技能也起不了作

季***洁 15年前 上传10693   0

AE及SAE的处理与报告的管理制度

建立本专业AE及SAE的处理与报告制度,确保在及时救治受试者的同时,规范处理本专业发生的AE及SAE。

s***2 3年前 上传993   0

企业大数据基础平台搭建和实用开发代码

在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。而一旦在系统中,引入网络,就不可避免地引入了所有网络编程的复杂性,例如挑战之一是如果保证在节点不可用的时候数据不丢失。

章***明 3年前 上传2468   0

C语言代码大全

 乘法口诀表 #include <stdio.h> #include <conio.h> void main(void) { int i,j,x,y; clrscr(); printf(“\n\n * * * 乘法口诀表 * * * \n\n“); x=9; y=5; for(i=1;i<=9;i++) { gotoxy(x,y); printf(“%2d “,i);

山***1 5年前 上传1763   0

如何写代码

如何写代码现在空间的代码其实都是JS...什么是JS??就是 JAVA SCRIPT 一种JAVA脚本..下面是关于QQ空间JS代码的总结...大家认真看完,差不多你也可以是代码高手..你也可以写代码给大家用了..呵呵...每一款全屏皮肤都分为top和bg.在试穿小窝和全屏2种皮肤的时候分别执行了2种javascript参数,比如最近到处流传的(我随便举个例)ja

冰***1 12年前 上传536   0

均衡化代码

#include <iostream>#include <vector>#include <opencv2/core.hpp>#include <opencv2/imgproc.hpp>#include <opencv2/highgui.hpp>#include <opencv2/features2d.hpp>#include <opencv2/xfeatures2d.hpp>#i

汪***流 4年前 上传651   0

高效整洁css代码原则

CSS学起来并不难,但在大型项目中,就变得难以管理,特别是不同的人在CSS书写风格上稍有不同,团队上就更加难以沟通,为此总结了一些如何实现高效整洁的CSS代码原则:1. 使用Reset但并非全局Reset不同浏览器元素的默认属性有所不同,使用Reset可重置浏览器元素的一些默认属性,以达到浏览器的兼容。但需要注意的是,请不要使用全局Reset:*{ margin:0; padding

2***9 9年前 上传514   0

新疆行政区代码

  **维吾尔自治区行政区划代码   名   称 数字代码 名   称 数字代码 **市 650100 **县 652325   市辖区 650101   **市 652302   天山区 650102   **县 652327   **区 650103   ****自治县 652328   新市区 650104 **蒙古自治州 652700

t***4 5年前 上传2528   0

单位类型代码表

17 全额拨款全民事业单位 18 差额拨款全民事业单位 19 自收自支全民事业单位 27 全额拨款集体事业单位 28 差额拨款集体事业单位 29 自收自支集体事业单位

7***9 12年前 上传5841   0

商务智能BI应用实例总结

商务智能BI应用实例案例一:公安领域BI产品应用解决方案 1案例二:李宁集团在零售领域BI产品应用解决方案 2案例三:奥克斯集团BI系统成功应用 5案例四:应用商业智能提升水泥企业的管理效率 6其他应用1:商务智能大众化:《纽约时报》启示录 8其他应用2:服务型政府的BI视野 10案例一:公安领域BI产品应用解决方案应 用 摘 要:  公安交通管理局警务的业务处理系统建设已经

z***u 2年前 上传975   0

「实例」上海理光传真机有限公司-人力资源开发方案-44页

公司改革 方案之二 上海理光传真机有限公司 人力资源开发方案 策划设计:专家组 上海三元企业管理有限公司 目 录 第一部分: 公司现行人事管理状况分析 1 一、人事制度的基本状况 1 1.人事课的人员构成及有关职责 1 2、人事制度现状及存在问题 1 3、人事制度存在问题 2 二、职工队伍的结构分析

杏***手 10年前 上传9607   0

数据库应用系统设计与开发报告实例自习室座位管理系统

数据库应用系统设计与开发报告实例自习室座位管理系统一、开发背景每学期期末,华师校园都会掀起一阵自习热,一时间,自习室供不应求。许多同学天还未亮专程赶到自习室去占座,特别是高职A栋自习室,每天早上都有几百号人涌在大门口等待开门,隐藏着巨大的安全隐患。现代信息技术的飞速发展给我们生活带来了极大的便利和无穷的乐趣。,如果我们将信息技术运用至自习室座位管理系统,那么再给我们带来方便的同时,也能让

文***享 3年前 上传634   0

「实例」天鹏房地产开发有限公司-考核指标(84页)

 天鹏房地产开发有限公司 考核指标 二○○六年八月 目 录 第一部分 高层考核指标 1 常务副总经理考核指标 1 行政副总经理考核指标 2 副总经理(租赁、拆迁)考核指标 3 销售副总经理考核指标 4 总经济师考核指标 5 总会计师考核指标 6 总建筑师考核指标 7 总工程师考核指标 8 分公司经理考核指标 9 第

水***袖 8年前 上传19884   0

「实例」综合投资型房地产开发集团职位说明书

 1 2 1.总经理(总裁) 3 2.副总经理 5 3.人力资源总监 6 4.财务总监(CFO) 7 5.营销总监 8 6.市场总监(CMO) 9 7.销售总监 10 8.生产总监 11 9.运营总监 12 10.技术总监(CTO) 13 11.总经理助理 14 15 1.人力资源经理 16 2.人力资源助理 18 3.人力资源专员 19 4.招聘主管 20

w***8 14年前 上传16942   0

代码和界面设计

摘   要 随着现代计算机科学的发展,网络已经越来越普及,如今网络已经成为每个人生活的一部分,同时网络也提供了一种很好的信息交换平台,而个人主页是一个可以在网络上展示个人信息的方便手段。本文介绍了如何开发个人网站。文章从理论和实践两个角度出发,对个人主页生成系统进行了深入的探讨。论文首先从构建系统环境谈起,分析了要实现各模块功能所必备的各种知识和技术手段。接着对系统的整体结构进行了详

平***苏 2年前 上传497   0

物料代码输入ERP系统流程6

1. 目的 使MRPⅡ系统的供应商规格范围吻合合格供应商的限定。 2. 适用范围 本公司所有合格供应商的物料代码。 3. 流程/职责和工作要求 流 程 职 责 工作要求 相关文件 /记录 开 始 物料选型 申请料号 将通用物 料输入ERPⅡ 项目工程师安排送样 采购安排送样及提供规格书 开发新机型/ECN

l***4 8年前 上传12882   0

源代码使用许可协议

________源代码使用许可合同甲方:XX软件有限公司 乙方:法定地址: 法定地址:法定代表人: 法定代表人:联系电话: 联系电话:鉴于:1、 甲方设计开发了________软件,依法对________源代码享有著作权;2、 乙方希望获得________源代码的使用许可,甲方同意授予乙方对________源代

文***享 4年前 上传1736   0

HTML代码写法规范

HTML代码写法规范HTML代码写法规范1.页面内码标识顺序l<html>l<head>l<meta http-equiv=“Content-Type“ content=“text/html; charset=gb2312“>l<title>页面标题_栏目名_频道名_山东教育资源网</title>l<style type=“text/css“>……</style>

j***r 12年前 上传599   0

开发工作总结

2011年度开发部工作总结 2011年,又一个房地产“政策年”,也是历年来国家实施房地产宏观调控力度最大的一年。为稳定房价,国家及地方接连不断地集中出台相关调控新政策,房地产市场一度呈现持币观望,成交量大幅放缓的局面。面对风云变幻、市场动荡不安的2010年,在集团公司董事会的正确领导和决策下,全体同仁通过进一步转变观念,认真分析当前的形势,努力克服各种不利因素,齐心协力,扎实工作,基本完成了年

p***a 5年前 上传909   0

24「实例」人力资源规划—实例

某公司人力资源规划实例介绍   下面是某公司人力资源部编写的一个较为完整的人力资源计划实例。该计划主要分了六个部分,它们是职务设置与人员配置计划、人员招聘计划、选择方式调整计划、绩效考评政策调整计划、培训政策调整计划和人力资源预算。 由于人员招聘是人力资源部新年度的工作重点,所以计划中的“人员招聘计划“部分最为详细。   需注意的是,人力资源管理计划只是人力资源部门的一个年度工作计

y***g 13年前 上传19599   0

公务员年度考核总结实例

公务员年度考核总结实例  ×××同志注重政治理论学习,作为省局下派干部,能克服各种困难,创新工作方式方法,对其分管的***、***、计财以及全局的具体工作都提出不少建设性的意见,较好地完成了分管工作和局党组交办的各项工作任务。  ×××同志注重学习,政治理论水平较高,能以大局为重,服从组织安排,勤政廉政,较好地完成了局党组交办的各项工作任务,其分管的**和***等工作呈现出不少新的亮点。

守***r 9年前 上传579   0