champman
路人甲
路人甲
  • 注册日期2004-10-12
  • 发帖数10
  • QQ
  • 铜币213枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1942回复:2

执行相交的代码生成shape文件,请教如何生成MDB里面的要素呢

楼主#
更多 发布于:2008-11-28 22:32
<P>以下为执行相交,生成shape文件的代码(先在arcmap里加载两个图层,生成后并加载到arcmap中,执行正常。</P>
<P>      '产生新的要素<BR>        Dim pfeatureclassname As ESRI.ArcGIS.Geodatabase.IFeatureClassName<BR>        pfeatureclassname = New ESRI.ArcGIS.Geodatabase.FeatureClassName<BR>        '产生新的工作空间<BR>        Dim pworkspacename As ESRI.ArcGIS.Geodatabase.IWorkspaceName<BR>        pworkspacename = New ESRI.ArcGIS.Geodatabase.WorkspaceName<BR>        pworkspacename.WorkspaceFactoryProgID = "esriDataSourcesFile.ShapefileWorkspaceFactory"<BR>        pworkspacename.PathName = "D:\"<BR>        '产生新的数据集<BR>        Dim pdatasetname As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        pdatasetname = pfeatureclassname<BR>        pdatasetname.Name = "ccc"<BR>        pdatasetname.WorkspaceName = pworkspacename<BR>        '产生新的基本地理处理器<BR>        Dim pbasicgeoprocessor As ESRI.ArcGIS.Carto.IBasicGeoprocessor<BR>        pbasicgeoprocessor = New ESRI.ArcGIS.Carto.BasicGeoprocessor<BR>        '定义基本地理处理器参数<BR>        Dim pinputtable As ESRI.ArcGIS.Geodatabase.ITable<BR>        pinputtable = pmap.Layer(0)<BR>        Dim poverlaytable As ESRI.ArcGIS.Geodatabase.ITable<BR>        poverlaytable = pmap.Layer(1)<BR>        '执行相交<BR>        Dim poutputfeatureclass As ESRI.ArcGIS.Geodatabase.IFeatureClass<BR>        poutputfeatureclass = pbasicgeoprocessor.Intersect(pinputtable, False, poverlaytable, False, 0.0#, pfeatureclassname)<BR>        '将生成的数据添加到当前地图中<BR>        Dim poutputfeaturelayer As ESRI.ArcGIS.Carto.IFeatureLayer<BR>        poutputfeaturelayer = New ESRI.ArcGIS.Carto.FeatureLayer<BR>        poutputfeaturelayer.FeatureClass = poutputfeatureclass<BR>        poutputfeaturelayer.Name = poutputfeatureclass.AliasName<BR>        pdoc.FocusMap.AddLayer(poutputfeaturelayer)</P>
喜欢0 评分0
champman
路人甲
路人甲
  • 注册日期2004-10-12
  • 发帖数10
  • QQ
  • 铜币213枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2008-11-28 22:38
<P>将 产生新的工作空间改为创建mdb数据库后,在执行poutputfeatureclass = pbasicgeoprocessor.Intersect(pinputtable, False, poverlaytable, False, 0.0#, pfeatureclassname)这句时就过不去,请问哪位高人知道怎么弄,感谢!<BR>        '产生新的要素<BR>        Dim pfeatureclassname As ESRI.ArcGIS.Geodatabase.IFeatureClassName<BR>        pfeatureclassname = New ESRI.ArcGIS.Geodatabase.FeatureClassName<BR>        '产生新的工作空间<BR>        Dim pworkspacefactory As New ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactory<BR>        Dim pworkspacename As ESRI.ArcGIS.Geodatabase.IWorkspaceName<BR>        pworkspacename = pworkspacefactory.Create("d:\", "aaaa", Nothing, 0)<BR>        '产生新的数据集<BR>        Dim pdatasetname As ESRI.ArcGIS.Geodatabase.IDatasetName<BR>        pdatasetname = pfeatureclassname<BR>        pdatasetname.Name = "ccc"<BR>        pdatasetname.WorkspaceName = pworkspacename<BR>        '产生新的基本地理处理器<BR>        Dim pbasicgeoprocessor As ESRI.ArcGIS.Carto.IBasicGeoprocessor<BR>        pbasicgeoprocessor = New ESRI.ArcGIS.Carto.BasicGeoprocessor<BR>        '定义基本地理处理器参数<BR>        Dim pinputtable As ESRI.ArcGIS.Geodatabase.ITable<BR>        pinputtable = pmap.Layer(0)<BR>        Dim poverlaytable As ESRI.ArcGIS.Geodatabase.ITable<BR>        poverlaytable = pmap.Layer(1)<BR>        '执行相交<BR>        Dim poutputfeatureclass As ESRI.ArcGIS.Geodatabase.IFeatureClass<BR>        poutputfeatureclass = pbasicgeoprocessor.Intersect(pinputtable, False, poverlaytable, False, 0.0#, pfeatureclassname)<BR>        '将生成的数据添加到当前地图中<BR>        Dim poutputfeaturelayer As ESRI.ArcGIS.Carto.IFeatureLayer<BR>        poutputfeaturelayer = New ESRI.ArcGIS.Carto.FeatureLayer<BR>        poutputfeaturelayer.FeatureClass = poutputfeatureclass<BR>        poutputfeaturelayer.Name = poutputfeatureclass.AliasName<BR>        pdoc.FocusMap.AddLayer(poutputfeaturelayer)</P>
举报 回复(0) 喜欢(0)     评分
champman
路人甲
路人甲
  • 注册日期2004-10-12
  • 发帖数10
  • QQ
  • 铜币213枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2008-12-01 22:38
<P>怎么没人知道吗,高手帮帮忙啊</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部