没有合适的资源?快使用搜索试试~ 我知道了~
学习教程大全:AE开发集合:2022年.pdf
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 93 浏览量
2022-06-29
15:12:57
上传
评论 1
收藏 614KB PDF 举报
温馨提示
试读
120页
ArcEngine开发代码集合
资源推荐
资源详情
资源评论
c#制作 Symbol 选择对话框
现在要实现双击 toccontrol 中的某一层的 symbol 调出 symbol 选择对话框.vb 中有示例实
现了类似于 arcmap 中的 symbol 选择对话框,用到了 ISymbolSelector 接口. 你看的是 AO
的例子,在 ENGINE 中是没有这个接口的,不过这个例子转换成 C#的代码如下:
private void axTOCCtl_OnDoubleClick(object sender,
ESRI.ArcGIS.TOCControl.ITOCControlEvents_OnDoubleClickEvent e)
{
IBasicMap map = null;
object pOther = null;
object index = null;
if (e.button==1)
{
m_TOCControl.HitTest(e.x, e.y, ref m_TocItem, ref map, ref m_TocLayer, ref
pOther, ref index);
System.Drawing.Point pos=new System.Drawing.Point(e.x,e.y);
if (this.m_TocItem == esriTOCControlItem.esriTOCControlItemLegendClass)
{
ESRI.ArcGIS.Carto.ILegendClass pLC=new LegendClassClass();
ESRI.ArcGIS.Carto.ILegendGroup pLG=new LegendGroupClass();
if(pOther is ILegendGroup)
{
pLG=(ILegendGroup)pOther;
}
pLC=pLG.get_Class((int)index);
ISymbol pSym;
pSym=pLC.Symbol;
ESRI.ArcGIS.DisplayUI.ISymbolSelector pSS=new
ESRI.ArcGIS.DisplayUI.SymbolSelectorClass();
bool bOK=false;
pSS.AddSymbol(pSym);
bOK=pSS.SelectSymbol(0);
if (bOK)
{
pLC.Symbol=pSS.GetSymbolAt(0);
}
this.axMapCtl.ActiveView.Refresh();
this.axTOCCtl.Refresh();
}
}
}
那么在 c#中怎么实现呢?有相应的接口吗?
如何实现在 MAP 空间里选择一块区域打印
如何实现在 MAP 空间里选择一块区域打印?用 ARCENGINE 里的对象实现,大家都来说说啊
把选择的区域对每一个图层做区域切割进保存为 shap 文件在本地.
在对每一个图层做 shap 文件保存的时候,同时把保存好的 shap 文件用本地文件的方式加载
到一个 MapControl 控件(或者其它控件,我是自己用 PictureBox 来显示地图的).
然后通过控件把显示的地图数据打印出来就可以了.
其中对图层进行切割的代码如下:
'‖=================================================
'‖TrimFeatureClass2ShpFile: 裁剪到 shape 文件
'‖
'‖pFC: 裁剪的实体类
'‖pPolygon: 裁剪的范围
'‖strShpFileName: 输出的 shape 文件名
'‖bShowProgress: 是否显示进度条
'‖pTrimedFeatureClass:输出的 FeatureClass
'‖返回:输出的 FeatureClass,nothing - 失败
'‖=================================================
Public Function TrimFeatureClass2ShpFile(pFC As esriGeoDatabase.IFeatureClass,
pPolygon As esriGeometry.IPolygon, strShpFileName As String, bShowProgress As
Boolean) As esriGeoDatabase.IFeatureClass
On Error GoTo ErrorHandler
Set TrimFeatureClass2ShpFile = Nothing
DimiAsLong
Dim pos As Long
Dim pFeatureCursor As esriGeoDatabase.IFeatureCursor
Dim pFeature As esriGeoDatabase.IFeature
Dim pNewFeatureCursor As esriGeoDatabase.IFeatureCursor
Dim pTopologicalOperator As esriGeometry.ITopologicalOperator
Dim pGeometry As esriGeometry.IGeometry
Dim pFeatureBuffer As esriGeoDatabase.IFeatureBuffer
Dim pFeatureCount As Long
Dim pTrimedFeatureClass As IFeatureClass
Dim nOldPercent As Integer
'获取数据库系统时间
Dim pSpatialFilter As esriGeoDatabase.ISpatialFilter
Set pSpatialFilter = New SpatialFilter
Dim pFeatureLayer As esriCarto.IFeatureLayer
With pSpatialFilter
'设置筛选器实体
Set .Geometry = pPolygon
'设置筛选字段
.GeometryField = pFC.ShapeFieldName
'设置空间关系
.SpatialRel = esriSpatialRelIntersects
'设置查询顺序
.SearchOrder = esriSearchOrderSpatial
End With
'获取筛选的实体个数
pFeatureCount = pFC.FeatureCount(pSpatialFilter)
'判断筛选个数为 0
IfpFeatureCount=0Then
Set pSpatialFilter = Nothing
Exit Function
End If
'创建新的 SHAPE 文件
Set pTrimedFeatureClass = CreateNewShapefile(pFC, strShpFileName)
'判断实体类为空
If pTrimedFeatureClass Is Nothing Then
'设置对象为空
Set pSpatialFilter = Nothing
Exit Function
End If
'获取实体指针
Set pFeatureCursor = pFC.Search(pSpatialFilter, False)
Set pSpatialFilter = Nothing
'获取实体
Set pFeature = pFeatureCursor.NextFeature
nOldPercent = 0
'获取插入实体指针
Set pNewFeatureCursor = pTrimedFeatureClass.Insert(True)
'判断实体不为空
Do While Not pFeature Is Nothing
'创建实体缓冲
Set pFeatureBuffer = pTrimedFeatureClass.CreateFeatureBuffer
If pFC.ShapeType = esriGeometryPolygon Then
' 若实体类型为面,则做相交
Set pTopologicalOperator = pPolygon
Set pGeometry =
剩余119页未读,继续阅读
资源评论
梅里雪山GIS
- 粉丝: 2w+
- 资源: 500
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功