birdman
路人甲
路人甲
  • 注册日期2003-08-05
  • 发帖数4
  • QQ
  • 铜币24枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2072回复:4

求助:VB.NET+AE数据导入问题

楼主#
更多 发布于:2005-12-31 09:55
<P>将带有(X,Y,Z)三列数据的文本文件导入到mapcontrol中生成shp文件...各X,Y,Z能生成point feature?</P>
<P>不知道怎么实现..请各位高手支招</P>
喜欢0 评分0
birdman
路人甲
路人甲
  • 注册日期2003-08-05
  • 发帖数4
  • QQ
  • 铜币24枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2006-01-04 11:40
<P>为什么没有人帮一下忙呀...难道这儿的GIS气氛还不够活跃吗?</P>

举报 回复(0) 喜欢(0)     评分
gis
gis
管理员
管理员
  • 注册日期2003-07-16
  • 发帖数15945
  • QQ554730525
  • 铜币25337枚
  • 威望15352点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
  • 帝国沙发管家
  • GIS帝国明星
  • GIS帝国铁杆
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编辑过]
举报 回复(0) 喜欢(0)     评分
zhousky
论坛版主
论坛版主
  • 注册日期2003-08-01
  • 发帖数281
  • QQ
  • 铜币1027枚
  • 威望3点
  • 贡献值0点
  • 银元0个
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>
不要看我噢
举报 回复(0) 喜欢(0)     评分
wanilyer
路人甲
路人甲
  • 注册日期2004-12-29
  • 发帖数43
  • QQ
  • 铜币60枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2006-02-09 09:50
<img src="images/post/smile/dvbbs/em05.gif" />
举报 回复(0) 喜欢(0)     评分
游客

返回顶部