免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 2185|回复: 2
收起左侧

[求助] 我用AE便携拓扑代码,大致如下:

[复制链接]

2

主题

118

铜板

1

好友

技术员

Rank: 3Rank: 3

积分
30
发表于 2014-8-3 10:59 | 显示全部楼层 |阅读模式
  1. public void CreateTopology()
  2. {
  3.     // Open the workspace and the required datasets.
  4.     Type factoryType = Type.GetTypeFromProgID(
  5.         "esriDataSourcesGDB.FileGDBWorkspaceFactory");
  6.     IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
  7.         (factoryType);
  8.     IWorkspace workspace = workspaceFactory.OpenFromFile(@
  9.         "C:\arcgis\ArcTutor\BuildingaGeodatabase\Montgomery.gdb", 0);
  10.     IFeatureWorkspace featureWorkspace = (IFeatureWorkspace)workspace;
  11.     IFeatureDataset featureDataset = featureWorkspace.OpenFeatureDataset("Landbase");
  12.     IFeatureClass blocksFC = featureWorkspace.OpenFeatureClass("Blocks");
  13.     IFeatureClass parcelsFC = featureWorkspace.OpenFeatureClass("Parcels");

  14.     // Attempt to acquire an exclusive schema lock on the feature dataset.
  15.     ISchemaLock schemaLock = (ISchemaLock)featureDataset;
  16.     try
  17.     {
  18.         schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock);

  19.         // Create the topology.
  20.         ITopologyContainer2 topologyContainer = (ITopologyContainer2)featureDataset;
  21.         ITopology topology = topologyContainer.CreateTopology("Landbase_Topology",
  22.             topologyContainer.DefaultClusterTolerance,  - 1, "");

  23.         // Add feature classes and rules to the topology.
  24.         topology.AddClass(blocksFC, 5, 1, 1, false);
  25.         topology.AddClass(parcelsFC, 5, 1, 1, false);

  26.         AddRuleToTopology1(topology, esriTopologyRuleType.esriTRTAreaNoOverlap,
  27.             "No Block Overlap", blocksFC);

  28.         AddRuleToTopology2(topology,
  29.             esriTopologyRuleType.esriTRTAreaCoveredByAreaClass,
  30.             "ResParcels Covered by ResBlocks", parcelsFC, 1, blocksFC, 1);
  31. //上面两个拓扑方法如果有需要我再上传,个人觉得没有多大的问题

  32.         // 验证拓扑规则
  33.         IGeoDataset geoDataset = (IGeoDataset)topology;
  34.         IEnvelope envelope = geoDataset.Extent;
  35.         ValidateTopology(topology, envelope);
  36.     }
  37.     catch (COMException comExc)
  38.     {
  39.         throw new Exception(String.Format(
  40.             "Error creating topology: {0} Message: {1}", comExc.ErrorCode,
  41.             comExc.Message), comExc);
  42.     }
  43.     finally
  44.     {
  45.         schemaLock.ChangeSchemaLock(esriSchemaLock.esriSharedSchemaLock);
  46.     }
  47. }
复制代码
但问题是:好像在拓扑规则添加的时候出了点问题(个人感觉可能是软件自身的问题),请看截图。
1是我用AE编写的代码添加的,2是我用AE自带的拓扑添加功能添加的,两者差别不用我说。我认为最有可能出错的地方就是这里了~恳请各位大侠能不吝赐教

1

主题

4711

铜板

5

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
11612
发表于 2014-8-4 10:00 | 显示全部楼层
问题没说清楚。
回复 支持 反对

使用道具 举报

1

主题

4711

铜板

5

好友

钻石会员

Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26Rank: 26

积分
11612
发表于 2014-8-4 10:02 | 显示全部楼层
建议提问有目的性一点
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

在线客服
快速回复 返回顶部 返回列表