阅读:1532回复:3
请教关于dxf文件导入sde的问题
<P>最近一直在研究这个问题,苦思不得结果,请高人指点一二</P>
<P>在ArcMap 9.0里,可以很轻松地将dxf 文件转换成四个shape文件,分别是点、</P> <P>线、面、标注层,</P> <P>现在需要在AO里用程序读出dxf文件里的四个层,然后分别存入sde的四个featureclass</P> <P>最大的问题还是不知道怎么读取dxf的标识,判断哪是点层的数据,哪是面层的数据</P> <P>dxf文件的格式的文章也看过不少,但是感觉都是很空泛地谈,针对性不强</P> <P>请哪位有经验的高人指点一二,感激不尽,已经想了很久都不知如何下手,</P> <P>若有相关代码,能发到我的信箱<a href="mailtboatdream@126.com" target="_blank" >boatdream@126.com</A>,感激涕零</P> |
|
1楼#
发布于:2006-08-01 14:52
<P>Private Sub Command1_Click()<BR>On Error GoTo EH:</P>
<P>Dim pt As ITopologicalOperator</P> <P>Set cadwf = New CadWorkspaceFactory<BR>Set cadws = cadwf.OpenFromFile("d:\", 0)<BR>Set cadFeatws = cadws</P> <P>Set pFeatClass = cadFeatws.OpenFeatureClass("test.dxf:polyline")</P> <P><BR>Set wf = New AccessWorkspaceFactory<BR>Set ws = wf.OpenFromFile("D:\Pipe.mdb", 0)</P> <P>Set accfeatws = ws</P> <P>Set fc = accfeatws.OpenFeatureClass("city_line1")</P> <P>j = 1<BR>Set pfeaturecursor = pFeatClass.Search(Nothing, False)<BR>Set pfeature = pfeaturecursor.NextFeature</P> <P>For k = 0 To 4800000<BR>'Do While Not pfeature Is Nothing<BR>If Not pfeature Is Nothing Then</P> <P>If pfeature.Fields.FindField("Layer") <> -1 Then<BR>If pfeature.Value(pfeature.Fields.FindField("Layer")) = "地形" Then<BR> If i > 70000 And j < 41 Then<BR> i = 0<BR> Set ws = wf.OpenFromFile("D:\Pipe" ; CStr(j) ; ".mdb", 0)<BR> Set accfeatws = ws<BR> Set fc = accfeatws.OpenFeatureClass("city_line1")<BR> j = j + 1<BR> End If</P> <P> Set p = fc.CreateFeature<BR> Set pPoly = pfeature.Shape<BR> DoEvents<BR> If pPoly.Length > 0.1 Then<BR> Set pt = pfeature.Shape<BR> pt.Simplify<BR> Set p.Shape = pfeature.Shape<BR> p.Store<BR> i = i + 1<BR> Set p = Nothing<BR> End If<BR>End If<BR>End If<BR>End If</P> <P>EH:<BR>Set pfeature = pfeaturecursor.NextFeature<BR>'Loop<BR>Next</P> <P>'Loop</P> <P>MsgBox "done"</P> |
|
2楼#
发布于:2006-08-02 09:08
<P>dxf 文件转换成四个shape文件</P>
<P>其实也丢失不少的东西了</P> |
|
|
3楼#
发布于:2006-08-02 12:36
谢谢各位了,dxf文件转化成四个shape文件 一定会丢失一些东西么,有时候非得读出dxf文件里的某个featureclass,有方法不让丢失信息么再次谢谢了
|
|