winmiracle
路人甲
路人甲
  • 注册日期2006-01-16
  • 发帖数7
  • QQ
  • 铜币161枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1677回复:1

创建拓扑(topology)

楼主#
更多 发布于:2006-02-24 11:04
<P>各位大哥:下面是我在创建拓扑时用的代码,但运行时总是出问题()</P>
<P>IWorkspaceFactory pWSFact = new AccessWorkspaceFactoryClass();</P>
<P>    IWorkspace pWorkspace = pWSFact.OpenFromFile(fullFileName,0);//打开工作空间</P>
<P>/* 下面的是联结数据库用的,我现在用文件,所以注释了  </P>
<P>   // IFeatureWorkspace pFeatureWorkspace = pWorkspace as IFeatureWorkspace;</P>
<P>   // IWorkspace pWorkspace = DataBaseConnectClass.getIWorkspace();</P>
<P>*/</P>
<P>    IFeatureWorkspace pFeatureWorkspace = new WorkspaceClass();<BR>    pFeatureWorkspace = pWorkspace as IFeatureWorkspace;<BR>   <BR>    <BR>    IDataset pDataset = new FeatureDatasetClass();<BR>    pDataset = pFeatureWorkspace.OpenFeatureDataset("GDB_FeatureDataset");//GDB_FeatureDataset为.mdb文件中的一个表格里面存有FeatureDataset数据<BR>    <BR>   <BR>    //IDataset pDataset = pFeatureWorkspace.OpenFeatureClass("WS_GX")//该处也是数据库的<BR>    <BR>    ITopologyContainer pTopoContainer = pDataset as ITopologyContainer;</P>
<P>   <BR>    ITopology pTopo = new TopologyClass();<BR>    pTopo = pTopoContainer.CreateTopology("Topo" ,pTopoContainer.DefaultClusterTolerance ,-1 ,"");//</P>
<P>    IFeatureClassContainer pFeatClassContainer = pDataset as IFeatureClassContainer;<BR>    IFeatureClass pFeatureClass = new FeatureClassClass();<BR>    pFeatureClass = pFeatClassContainer.get_ClassByID(3);//get_ClassByName("FeatureInspector");//在该处无论是用ID或Name获取FeatureClass总是出错。下面的程序还没有运行过,如也有错误请指出来<BR>    pTopo.AddClass(pFeatureClass,5,1,1,false);</P>
<P>    ITopologyRule pRule = new TopologyRuleClass();</P>
<P>    pRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoOverlap;<BR>    pRule.OriginClassID = pFeatureClass.ObjectClassID;<BR>    pRule.AllOriginSubtypes = true; <BR>    pRule.Name = "No Dangles";</P>
<P>     //Add the rule to the topology<BR>    ITopologyRuleContainer pRuleContainer = pTopo as ITopologyRuleContainer;<BR>    pRuleContainer.AddRule(pRule);</P>
<P>     //Create the second rule<BR>    pRule = new TopologyRuleClass();<BR>    pRule.TopologyRuleType = esriTopologyRuleType.esriTRTLineNoDangles;<BR>    pRule.OriginClassID = pFeatureClass.ObjectClassID;<BR>    pRule.AllOriginSubtypes = true;<BR>    pRule.Name = "No Overlap" ;</P>
<P>    if(pRuleContainer.get_CanAddRule(pRule))pRuleContainer.AddRule(pRule);</P>
喜欢0 评分0
gis06
路人甲
路人甲
  • 注册日期2005-01-15
  • 发帖数10
  • QQ
  • 铜币132枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-04-26 13:40
<P><BR>  pFeatureClass = pFeatClassContainer.get_ClassByID(3);</P>
<P>//get_ClassByName("FeatureInspector");//在该处无论是用ID或Name获取FeatureClass总是出错。下面的程序还没有运行过,如也有错误请指出来<BR>  </P>
<P>我觉得最好直接用</P>
<P>pFeatureClass = pFeatClassContainer.get_Class(n);//n你自己知道的</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部