阅读:2302回复:4
求助:VB.NET+AE数据导入问题
<P>将带有(X,Y,Z)三列数据的文本文件导入到mapcontrol中生成shp文件...各X,Y,Z能生成point feature?</P>
<P>不知道怎么实现..请各位高手支招</P> |
|
1楼#
发布于:2006-01-04 11:40
<P>为什么没有人帮一下忙呀...难道这儿的GIS气氛还不够活跃吗?</P>
|
|
2楼#
发布于:2006-01-04 17:07
<P>问题很实用,我这里没有.net环境,你可以自己把这个程序转换一下,希望看到你的好消息</P>
<P>这个程序可以帮你把xyz的文本转换成一个featureclass到一个存在的geodatabase中,具体使用看文件里,有帮助.</P> <P><a href="attachment/2006-1/2006141761044336.rar">2006-1/2006141761044336.rar</a></P> <P><FONT face="Times New Roman" size=3></FONT></P> <P><br></P> [此贴子已经被作者于2006-1-4 17:08:45编辑过]
|
|
|
3楼#
发布于:2006-01-13 15:26
<P>Private Sub cmdOk_Click()<BR> If txtShp.Text = "" Then<BR> MsgBox "请设置SHP文件的存放路径!", vbExclamation, App.Title ; "--" ; "错误提示"<BR> Exit Sub<BR> End If<BR> <BR> On Error GoTo ErrHandle<BR> Me.MousePointer = vbArrowHourglass<BR> Dim pIniFields As IFields<BR> Set pIniFields = New Fields<BR> Dim pIniFieldsEdit As IFieldsEdit<BR> Set pIniFieldsEdit = pIniFields<BR> pIniFieldsEdit.FieldCount = 3<BR> Dim pIniField As IField<BR> Dim pIniFieldEdit As IFieldEdit<BR> Set pIniField = New Field<BR> Set pIniFieldEdit = pIniField<BR> With pIniFieldEdit<BR> .Name = "OBJECTID"<BR> .AliasName = "FID"<BR> .Type = esriFieldTypeOID<BR> End With<BR> Set pIniFieldsEdit.Field(0) = pIniField<BR> <BR> Dim pGeoDef As IGeometryDef<BR> Dim pGeoDefEdit As IGeometryDefEdit<BR> Set pGeoDef = New GeometryDef<BR> Set pGeoDefEdit = pGeoDef</P>
<P> Set pIniField = New Field<BR> Set pIniFieldEdit = pIniField<BR> pGeoDefEdit.GeometryType = esriGeometryPoint<BR> With pGeoDefEdit<BR> .AvgNumPoints = 5<BR> .GridCount = 2<BR> .GridSize(0) = 200<BR> .GridSize(1) = 500<BR> .HasM = False<BR> .HasZ = False<BR> End With<BR> If optSR.Item(0).value = True Then<BR> Dim pSpatialRefFactory As ISpatialReferenceFactory<BR> Dim pSpatialRef As ISpatialReference<BR> Dim pProCoordSys As IProjectedCoordinateSystem<BR> Set pSpatialRefFactory = New SpatialReferenceEnvironment<BR> Set pProCoordSys = pSpatialRefFactory.CreateProjectedCoordinateSystem(esriSRProjCS_Xian1980_GK_CM_117E)<BR> Set pSpatialRef = pProCoordSys 'QI<BR> Set pGeoDefEdit.SpatialReference = pSpatialRef<BR> End If<BR> With pIniFieldEdit<BR> .Name = "SHAPE"<BR> .Type = esriFieldTypeGeometry<BR> Set .GeometryDef = pGeoDef<BR> .IsNullable = True<BR> .Required = True<BR> End With<BR> Set pIniFieldsEdit.Field(1) = pIniField<BR> <BR> Set pIniField = New Field<BR> Set pIniFieldEdit = pIniField<BR> With pIniFieldEdit<BR> .Name = "点名"<BR> .AliasName = "点名"<BR> .Type = esriFieldTypeString<BR> .Length = 30<BR> End With<BR> Set pIniFieldsEdit.Field(2) = pIniField<BR> <BR> Set pFeatCls = basFunction.CreateFeatureClassAtLocationByFields(pIniFields, sShpPath, sShpName)<BR> Dim pPt As IPoint<BR> Set fso = New FileSystemObject<BR> Dim txtStream As textStream<BR> Set txtStream = fso.OpenTextFile(txtPath.Text, ForReading)<BR> Dim iPtName As Integer<BR> Dim iX As Integer: Dim iY As Integer<BR> Dim sLine As String<BR> sLine = txtStream.ReadLine<BR> Dim sFld() As String<BR> sFld = Split(sLine, Chr(9))<BR> Dim i As Integer<BR> For i = 0 To UBound(sFld)<BR> If sFld(i) = "点名" Then<BR> iPtName = i<BR> End If<BR> If sFld(i) = cboX.Text Then<BR> iX = i<BR> End If<BR> If sFld(i) = cboY.Text Then<BR> iY = i<BR> End If<BR> Next<BR> Dim pFeat As IFeature<BR> Do While txtStream.AtEndOfStream <> True<BR> Set pPt = New Point<BR> sLine = txtStream.ReadLine<BR> Set pFeat = pFeatCls.CreateFeature<BR> sFld = Split(sLine, Chr(9))<BR> pPt.X = Val(sFld(iX))<BR> pPt.Y = Val(sFld(iY))<BR> Set pFeat.Shape = pPt<BR> pFeat.value(pFeat.Fields.FindField("点名")) = sFld(iPtName)<BR> pFeat.Store<BR> Loop<BR> txtStream.Close<BR> Set txtStream = Nothing<BR> Set fso = Nothing<BR> Set pPt = Nothing<BR> Set pFeat = Nothing<BR> Dim sAnswer As String<BR> sAnswer = MsgBox("操作成功,把该图层加入地图窗口?", vbYesNo, App.Title ; "--" ; "是否加载该图层")<BR> If sAnswer = vbYes Then<BR> Dim pOutFeatureWKS As IFeatureWorkspace<BR> Dim pWorkspaceFactory As IWorkspaceFactory<BR> Set pWorkspaceFactory = New ShapefileWorkspaceFactory<BR> Set pOutFeatureWKS = pWorkspaceFactory.OpenFromFile(sShpPath, 0)<BR> Dim pOutFCS As IFeatureClass<BR> Set pOutFCS = pOutFeatureWKS.OpenFeatureClass(sShpName)<BR> If pOutFCS Is Nothing Then<BR> Me.MousePointer = vbDefault<BR> MsgBox "加载失败!", vbCritical, App.Title ; "--" ; "错误处理"<BR> Unload Me<BR> End If<BR> Dim pFeatureLayer As IFeatureLayer<BR> Set pFeatureLayer = New FeatureLayer<BR> pFeatureLayer.Name = pOutFCS.AliasName<BR> Set pFeatureLayer.FeatureClass = pOutFCS<BR> Call AddLyrToMapByType(pFeatureLayer, m_MainMapWindow)<BR> Set pWorkspaceFactory = Nothing<BR> Set pFeatureLayer = Nothing<BR> Set pOutFeatureWKS = Nothing<BR> End If<BR> Me.MousePointer = vbDefault<BR> Unload Me</P> <P> Exit Sub<BR> <BR>ErrHandle:<BR> Me.MousePointer = vbDefault<BR> Set fso = Nothing<BR> MsgBox Err.Description ; Err.Number, vbCritical, App.Title ; "--" ; "错误处理"<BR> Exit Sub<BR> <BR> <BR>End Sub<BR></P> |
|
|
4楼#
发布于:2006-02-09 09:50
<img src="images/post/smile/dvbbs/em05.gif" />
|
|