zhengtj1234
路人甲
路人甲
  • 注册日期2008-01-10
  • 发帖数6
  • QQ
  • 铜币128枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1495回复:3

multipoint feature 到point feature的转换问题

楼主#
更多 发布于:2008-03-11 14:26
<P>multipoint feature 到point feature的转换问题</P>
<P>C# ArcEngine ArcSDE环境下</P>
<P>esriGeometryMultipoint怎么不支持编辑呢</P>
<P>怎么转换成esriGeometryPoint</P>
<P>esriGeometryPoint格式的支持编辑</P>
喜欢0 评分0
QQ:67034680 Email:zhengtj1234@163.com
chaoyuewsy
路人甲
路人甲
  • 注册日期2006-07-06
  • 发帖数17
  • QQ
  • 铜币164枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-03-12 08:45
<P>关注中。。。 我感觉是不是要用pointcollection 接口</P>
举报 回复(0) 喜欢(0)     评分
zhengtj1234
路人甲
路人甲
  • 注册日期2008-01-10
  • 发帖数6
  • QQ
  • 铜币128枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-03-12 09:05
<P>IFeatureClass pFC = pFlyr.FeatureClass;</P>
<P>pFeature = pFC.CreateFeature();</P>
<P>pFeature.Shape = pGeo;</P>
<P>提示pFeature.Shape是esriGeometryType.esriGeometryMultipoint类型</P>
<P>pGeo是  esriGeometryType.esriGeometryPoint类型</P>
<P>报错 提示 不支持这种类型的编辑。</P>
<P>请高手指教 感激不尽 谢谢</P><img src="images/post/smile/dvbbs/em23.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
QQ:67034680 Email:zhengtj1234@163.com
举报 回复(0) 喜欢(0)     评分
gisempire100
捉鬼专家
捉鬼专家
  • 注册日期2004-08-13
  • 发帖数552
  • QQ
  • 铜币2462枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2008-03-14 00:21
  本例要实现的功能是根据一个FeatureLayer中被选择一个或多个MultiPoint,生成多个Point并把这些新生成的Point保存在一个Point类型的Feature Layer上。<BR>  &#61548; 要点<BR>  本例将选择的Multipoints上的每个点都生成一个对应得Point,并用一个接口IPointCollection的变量来接收。利用IPointCollection的方法point(index),取出新生成的每个点,用来创建Point类型的Feature。<BR>  &#61548; 程序说明<BR>  本例要求在ArcMap中添加两个层,最上面的是层Multipoint,下面是层wind。根据循环得到选择的每个Multipoint的每个点,为wind层生成新的Feature并保存<BR>  &#61548; 代码<BR>  Sub convertMultipointToPoints()<BR>   Dim pMxDocument As IMxDocument<BR>   Dim pMap As IMap<BR>   Dim pActiveView As IActiveView<BR>   Dim pEnumFeature As IEnumFeature<BR>   Dim pFeature0 As IFeature<BR>   Dim pFeatureLayer0 As IFeatureLayer<BR>   Dim pFeatureClass0 As IFeatureClass<BR>   Dim pFeature1 As IFeature<BR>   Dim pFeatureLayer1 As IFeatureLayer<BR>   Dim pFeatureClass1 As IFeatureClass<BR>   Dim pPointCollection As IPointCollection<BR>   Dim pDataSet As IDataset<BR>   Dim pWorkspaceFactory As IWorkspaceFactory<BR>   Dim pWorkspaceEdit As IWorkspaceEdit<BR>   Dim lPointIndex As Long<BR>   Dim lPointFieldIndex As Long<BR>  <BR>   On Error GoTo ErrorHanlder<BR>   '得到当前层<BR>   Set pMxDocument = ThisDocument<BR>   Set pMap = pMxDocument.FocusMap<BR>   Set pActiveView = pMap<BR>   '得到0层和1层的FeatureClass<BR>   Set pFeatureLayer0 = pMxDocument.FocusMap.Layer(0)<BR>   Set pFeatureClass0 = pFeatureLayer0.FeatureClass<BR>   Set pFeatureLayer1 = pMxDocument.FocusMap.Layer(1)<BR>   Set pFeatureClass1 = pFeatureLayer1.FeatureClass<BR>   '建立编辑工作区<BR>   Set pDataSet = pFeatureClass1<BR>   Set pWorkspaceFactory = New ShapefileWorkspaceFactory<BR>   Set pWorkspaceEdit = pWorkspaceFactory.OpenFromFile(pDataSet.Workspace.PathName, 0)<BR>   pWorkspaceEdit.StartEditOperation<BR>   pWorkspaceEdit.StartEditing True<BR>   '得到Feature<BR>   Set pEnumFeature = pMxDocument.FocusMap.FeatureSelection<BR>   Set pFeature0 = pEnumFeature.Next<BR>  <BR>  If pFeature0 Is Nothing Then<BR>   MsgBox "Must have Select in Position 0"<BR>   Exit Sub<BR>  End If<BR>  <BR>  '循环,通过每个MultiPoint,在1图层上,生成以每个点为特征的Points<BR>   While Not pFeature0 Is Nothing<BR>   If pFeature0.ShapeCopy.GeometryType = esriGeometryMultipoint Then<BR>   Set pPointCollection = pFeature0.ShapeCopy<BR>   For nPointIndex = 0 To pPointCollection.PointCount - 1<BR>     Set pFeature1 = pFeatureClass1.CreateFeature<BR>   '在pFeature1上生成Point<BR>   Set pFeature1.Shape = pPointCollection.Point(nPointIndex)<BR>   '如果两Feature的FieldCount相同,赋每个Field的值,ID,<BR>  'TypeGeometry的Field除外<BR>   If pFeature1.Fields.FieldCount = pFeature0.Fields.FieldCount Then<BR>   For lPointFieldIndex = 0 To pFeature1.Fields.FieldCount - 1<BR>   If Not pFeature1.Fields.Field(lPointFieldIndex).Type = _<BR>  esriFieldTypeGeometry And Not pFeature1.Fields. _<BR>  Field(lPointFieldIndex).Type = esriFieldTypeOID Then<BR>   pFeature1.Value(lPointFieldIndex) = _<BR>  pFeature0.Value(lPointFieldIndex)<BR>   End If<BR>   Next<BR>   End If<BR>   '保存Feature<BR>   pFeature1.Store<BR>   Next<BR>   Else<BR>   MsgBox "Must have Multipoint in position 0"<BR>   Exit Sub<BR>   End If<BR>   Set pFeature0 = pEnumFeature.Next<BR>   Wend<BR>   '停止编辑<BR>   pWorkspaceEdit.StopEditOperation<BR>   pWorkspaceEdit.StopEditing True<BR>   Exit Sub<BR>  <BR>  ErrorHanlder:<BR>  pWorkspaceEdit. AbortEditOperation<BR>   MsgBox Err.Description<BR>  End Sub
A friend is never known till a man has need. ...CL
举报 回复(0) 喜欢(0)     评分
游客

返回顶部