阅读:1466回复:1
高手帮我修改一下代码吧!
<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> |
|
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> |
|