|
阅读:1189回复:2
关于如何以SHP格式保存
<P>因工作需要,现在把1个SHP的图层分解成N个图层,现在想把这N个图层分解以图层名为文件名保存成SHP格式,请问代码怎么写?</P>
|
|
|
1楼#
发布于:2008-06-03 09:48
<P>补充下用的是ENGINE</P>
|
|
|
2楼#
发布于:2008-06-03 14:16
<P>先建立图层,然后写入要素了,这些功能在开发包的例子里有滴</P>
<P>比如下面的函数,是建立个shapefile</P> <P><FONT color=#0000ff>Public Function</FONT> <FONT style="BACKGROUND-COLOR: #93a070" color=#ffffff>CreateShapefile</FONT>( _<BR> sDir <CODE><FONT color=#0000ff>As String</FONT></CODE>, sName <CODE><FONT color=#0000ff>As String</FONT></CODE>, _ shapeType <CODE><FONT color=#0000ff>As</FONT></CODE> esriGeometryType, _<BR> hasM <CODE><FONT color=#0000ff>As Boolean</FONT></CODE>, _<BR> hasZ <CODE><FONT color=#0000ff>As Boolean</FONT></CODE>, _<BR> pSR <CODE><FONT color=#0000ff>As</FONT></CODE> ISpatialReference, _<BR> <CODE><FONT color=#0000ff>Optional</FONT></CODE> dGridSize <CODE><FONT color=#0000ff>As Double</FONT></CODE> = 0) <CODE><FONT color=#0000ff>As</FONT></CODE> IFeatureClass<BR> <BR><CODE><FONT color=#0000ff>On Error GoTo</FONT></CODE> CreateShape_ERR<BR><BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> <FONT style="BACKGROUND-COLOR: #93a070" color=#ffffff>CreateShapefile</FONT> = <CODE><FONT color=#0000ff>Nothing<BR> <BR> Dim</FONT></CODE> shapeWorkspaceFactory <CODE><FONT color=#0000ff>As</FONT></CODE> IWorkspaceFactory<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> shapeWorkspaceFactory = <CODE><FONT color=#0000ff>New</FONT></CODE> ShapefileWorkspaceFactory<BR> <BR> <CODE><FONT color=#0000ff>Dim</FONT></CODE> connectionProperties <CODE><FONT color=#0000ff>As</FONT></CODE> IPropertySet<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> connectionProperties = <CODE><FONT color=#0000ff>New</FONT></CODE> PropertySet<BR> connectionProperties.SetProperty "DATABASE", sDir<BR> <BR> <CODE><FONT color=#0000ff>Dim</FONT></CODE> shapeWorkspace <CODE><FONT color=#0000ff>As</FONT></CODE> IFeatureWorkspace<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> shapeWorkspace = shapeWorkspaceFactory.Open(connectionProperties, 0)<BR> <CODE><FONT color=#0000ff>If</FONT></CODE> (<CODE><FONT color=#0000ff>Not</FONT></CODE> shapeWorkspace <CODE><FONT color=#0000ff>Is Nothing</FONT></CODE>) <CODE><FONT color=#0000ff>Then<BR> Dim</FONT></CODE> pFC <CODE><FONT color=#0000ff>As</FONT></CODE> IFeatureClass<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> pFC = OpenShapeFile(sDir, sName)<BR> <BR> <CODE><FONT color=#0000ff>If Not</FONT></CODE> pFC <CODE><FONT color=#0000ff>Is Nothing Then<BR> Dim</FONT></CODE> pDS <CODE><FONT color=#0000ff>As</FONT></CODE> IDataset<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> pDS = pFC<BR> pDS.Delete<BR> <CODE><FONT color=#0000ff>End If<BR> <BR> Dim</FONT></CODE> pFields <CODE><FONT color=#0000ff>As</FONT></CODE> IFields<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> pFields = CreateBasicFields(shapeType, hasM, hasZ, pSR, dGridSize)<BR> <BR> <CODE><FONT color=#0000ff>Dim</FONT></CODE> pFClass <CODE><FONT color=#0000ff>As</FONT></CODE> IFeatureClass<BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> pFClass = shapeWorkspace.CreateFeatureClass(sName, pFields, <CODE><FONT color=#0000ff>Nothing</FONT></CODE>, <CODE><FONT color=#0000ff>Nothing</FONT></CODE>, esriFTSimple, "Shape", "")<BR> <BR> <CODE><FONT color=#0000ff>Set</FONT></CODE> <FONT style="BACKGROUND-COLOR: #93a070" color=#ffffff>CreateShapefile</FONT> = pFClass<BR> <CODE><FONT color=#0000ff>End If<BR> <BR> Exit Function</FONT></CODE><BR>CreateShape_ERR:<BR><CODE><FONT color=#0000ff>Debug.Print</FONT></CODE> "CreateShape_ERR: " ; Err.Description<BR> <CODE><FONT color=#0000ff>Resume Next<BR> <BR>End Function<BR></FONT></CODE></P> |
|
|