|
阅读:2310回复:5
MO如何创建shapefile文件?
MO如何创建shapefile文件?<br>最好有代码示例!<br>谢谢!!!<br>
|
|
|
1楼#
发布于:2007-02-28 10:53
csdn-bbs里的企业开发有篇帖子有。今年的,你找找。
|
|
|
2楼#
发布于:2007-02-28 21:16
感谢楼主<img src="images/post/smile/dvbbs/em01.gif" />
|
|
|
3楼#
发布于:2007-03-05 09:51
n多示例代码,lz找找
|
|
|
4楼#
发布于:2007-03-07 10:25
谢谢大家!!!
|
|
|
5楼#
发布于:2007-04-05 00:56
<P>下面是代码:</P>
<P>'Xuewei,2003/6/13<BR>'新建一个polygon图层的示例;</P> <P>Option Explicit</P> <P>Dim moSymbol As New MapObjects2.Symbol<BR>Dim moPolygons As New Collection</P> <P>Private Sub Command1_Click()<BR> Dim gds As MapObjects2.GeoDataset<BR> Dim sName As String<BR> Dim Desc As New TableDesc<BR> Dim dc As New DataConnection<BR> Dim Lyr As New MapObjects2.MapLayer<BR> Dim lPoly As Long<BR> <BR> If moPolygons.Count < 1 Then<BR> MsgBox "先在地图上画多边形"<BR> Exit Sub<BR> End If<BR> <BR> With CommonDialog1<BR> .Filter = "ESRI Shapefiles (*.shp)|*.shp"<BR> .DefaultExt = ".shp"<BR> .ShowSave</P> <P> If Len(.FileName) = 0 Then Exit Sub<BR> dc.Database = CurDir<BR> If Not dc.Connect Then Exit Sub<BR> <BR> '取掉扩展名;<BR> sName = Left(.FileTitle, Len(.FileTitle) - 4)<BR> End With<BR> MsgBox sName</P> <P> With Desc<BR> .FieldCount = 3</P> <P> '设置字段名;<BR> .FieldName(0) = "Name"<BR> .FieldName(1) = "Area"<BR> .FieldName(2) = "Perimeter"</P> <P> '设置字段类型;<BR> .FieldType(0) = moString<BR> .FieldType(1) = moDouble<BR> .FieldType(2) = moDouble</P> <P> '设置字段长度;<BR> .FieldLength(0) = 16<BR> .FieldPrecision(1) = 15<BR> .FieldScale(1) = 3<BR> .FieldPrecision(2) = 15<BR> .FieldScale(2) = 3<BR> End With</P> <P> Set gds = dc.AddGeoDataset(sName, moPolygon, Desc)<BR> If gds Is Nothing Then Exit Sub<BR> <BR> Set Lyr.GeoDataset = gds<BR> Map1.Layers.Add Lyr<BR> Map1.Refresh</P> <P> For lPoly = 1 To moPolygons.Count<BR> With Lyr.Records<BR> .AddNew<BR> .Fields("Shape").Value = moPolygons(lPoly)<BR> .Fields("Name").Value = "Name " ; lPoly<BR> .Fields("Area").Value = moPolygons(lPoly).Area<BR> .Fields("Perimeter").Value = moPolygons(lPoly).Perimeter<BR> .Update<BR> End With<BR> Next<BR> Lyr.Records.StopEditing<BR>End Sub</P> <P>Private Sub Form_Load()<BR> With moSymbol<BR> .SymbolType = moFillSymbol<BR> .Style = moSolidFill<BR> .Color = moRed<BR> End With<BR> Command1.Caption = "保存"<BR> Me.Caption = "Shape文件生成"<BR>End Sub</P> <P>Private Sub Map1_AfterTrackingLayerDraw(ByVal hDC As stdole.OLE_HANDLE)<BR> Dim oPoly As MapObjects2.Polygon<BR> If moPolygons.Count <> 0 Then<BR> For Each oPoly In moPolygons<BR> Map1.DrawShape oPoly, moSymbol<BR> Next<BR> End If<BR>End Sub</P> <P>Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)<BR> Dim oRect As MapObjects2.Rectangle<BR> Dim oPoly As New MapObjects2.Polygon<BR> <BR> Set oPoly = Map1.TrackPolygon<BR> moPolygons.Add oPoly<BR> Map1.TrackingLayer.Refresh True<BR>End Sub<BR></P> |
|