seeking
路人甲
路人甲
  • 注册日期2007-04-26
  • 发帖数11
  • QQ
  • 铜币151枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:1466回复:1

高手帮我修改一下代码吧!

楼主#
更多 发布于:2007-05-28 20:23
<P>我的代码实现的是读取.shp文件并且在PageLayoutControl中显示,但是在调试的过程中出现了错误 </P>
<P> 未处理的“System.NullReferenceException”类型的异常出现在 openshapefile.exe 中。</P>
<P>其他信息: 无效指针</P>
<P>高手们帮我看看是哪里出现了错误!</P>
<P>多谢了!</P>
<P>Dim columName As String<BR>        Dim shapeFileName As String<BR>        Dim shapeFilePath As String<BR>        Dim pWorkspaceFact As IWorkspaceFactory<BR>        Dim pWorkspace As IWorkspace<BR>        Dim pFeatureWorkspace As IFeatureWorkspace<BR>        pWorkspaceFact = New ShapefileWorkspaceFactory<BR>        pWorkspace = pWorkspaceFact.OpenFromFile(shapeFilePath, 0)<BR>        pFeatureWorkspace = pWorkspace</P>
<P>        Dim pFeatureClass As IFeatureClass<BR>        pFeatureClass = pFeatureWorkspace.OpenFeatureClass(shapeFileName)</P>
<P>        Dim pFeatCur As IFeatureCursor<BR>        Dim pFeat As IFeature<BR>        Dim pQueryFilter As IQueryFilter</P>
<P>        pQueryFilter = New QueryFilter<BR>        pQueryFilter.WhereClause = ""</P>
<P>        pFeatCur = pFeatureClass.Search(pQueryFilter, False)<BR>        pFeat = pFeatCur.NextFeature</P>
<P>        Dim value As String<BR>        Do Until pFeat Is Nothing<BR>            If Not IsNothing(pFeat.Value(pFeat.Fields.FindField(columName))) Then<BR>                value = pFeat.Value(pFeat.Fields.FindField(columName))<BR>                Debug.WriteLine(value)<BR>            End If</P>
<P>            pFeat = pFeatCur.NextFeature<BR>        Loop</P>
<P>        Dim sFileName As String<BR>        sFileName = sFileName = "..\..\..\..\..\..\..Data\Data\vegetation.shp"<BR>        If AxPageLayoutControl1.CheckMxFile(sFileName) Then<BR>            AxPageLayoutControl1.LoadMxFile(sFileName)<BR>        End If</P>
喜欢0 评分0
wy8705244
路人甲
路人甲
  • 注册日期2006-10-21
  • 发帖数23
  • QQ
  • 铜币164枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-05-29 22:31
<P>下面是我在你代码的基础上在VB+AE上实现的</P>
<P>在MapControl中加载图层"States"</P>
<P>   Dim columName As String<BR>   Dim shapeFileName As String<BR>   Dim shapeFilePath As String<BR>   Dim pWorkspaceFact As IWorkspaceFactory<BR>   Dim pWorkspace As IWorkspace<BR>   Dim pFeatureWorkspace As IFeatureWorkspace<BR>   <BR>   shapeFilePath = "E:\新建文件夹\MO课程设计\课程设计\USA"<BR>   shapeFileName = "States"<BR>   columName = "AREA"<BR>   <BR>   Set pWorkspaceFact = New ShapefileWorkspaceFactory<BR>   Set pWorkspace = pWorkspaceFact.OpenFromFile(shapeFilePath, 0)<BR>   <BR>   Set pFeatureWorkspace = pWorkspace</P>
<P>   Dim pFeatureClass As IFeatureClass<BR>   <BR>   Set pFeatureClass = pFeatureWorkspace.OpenFeatureClass(shapeFileName)</P>
<P>   Dim pFeatCur As IFeatureCursor<BR>   Dim pFeat As IFeature<BR>   Dim pQueryFilter As IQueryFilter</P>
<P>   Set pQueryFilter = New QueryFilter<BR>   pQueryFilter.WhereClause = ""</P>
<P>   Set pFeatCur = pFeatureClass.Search(pQueryFilter, False)<BR>   Set pFeat = pFeatCur.NextFeature</P>
<P>   Dim value As String<BR>   Do Until pFeat Is Nothing<BR>      If Not pFeat Is Nothing Then<BR>         value = pFeat.value(pFeat.Fields.FindField(columName))<BR>         Debug.Print value<BR>      End If</P>
<P>      Set pFeat = pFeatCur.NextFeature<BR>    Loop<BR>    <BR>    Dim pFeatureLayer As IFeatureLayer<BR>    Set pFeatureLayer = New FeatureLayer<BR>    Set pFeatureLayer.FeatureClass = pFeatureClass<BR>    Dim pLayer As ILayer<BR>    Set pLayer = pFeatureLayer<BR>    <BR>    Dim pMap As IMap<BR>    Set pMap = MapControl1.Map<BR>    <BR>    pMap.AddLayer pLayer<BR>    <BR>    MapControl1.ActiveView.Refresh</P>
<P>把这段代码放在Private Sub Form_Load()下,记住改一下路径</P>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部