鸵鸟也要飞
路人甲
路人甲
  • 注册日期2007-02-26
  • 发帖数19
  • QQ
  • 铜币200枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2310回复:5

MO如何创建shapefile文件?

楼主#
更多 发布于:2007-02-28 08:26
 MO如何创建shapefile文件?<br>最好有代码示例!<br>谢谢!!!<br>
喜欢0 评分0
lhfde
路人甲
路人甲
  • 注册日期2006-05-23
  • 发帖数51
  • QQ
  • 铜币243枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2007-02-28 10:53
csdn-bbs里的企业开发有篇帖子有。今年的,你找找。
举报 回复(0) 喜欢(0)     评分
whmwxhanshan123
路人甲
路人甲
  • 注册日期2006-06-17
  • 发帖数3108
  • QQ
  • 铜币6445枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2007-02-28 21:16
感谢楼主<img src="images/post/smile/dvbbs/em01.gif" />
举报 回复(0) 喜欢(0)     评分
green
外卖仔
外卖仔
  • 注册日期2003-10-01
  • 发帖数51
  • QQ
  • 铜币170枚
  • 威望0点
  • 贡献值0点
  • 银元0个
  • GIS帝国居民
3楼#
发布于:2007-03-05 09:51
n多示例代码,lz找找
举报 回复(0) 喜欢(0)     评分
鸵鸟也要飞
路人甲
路人甲
  • 注册日期2007-02-26
  • 发帖数19
  • QQ
  • 铜币200枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2007-03-07 10:25
谢谢大家!!!
举报 回复(0) 喜欢(0)     评分
huqingfengxy
路人甲
路人甲
  • 注册日期2007-01-20
  • 发帖数14
  • QQ
  • 铜币137枚
  • 威望0点
  • 贡献值0点
  • 银元0个
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>
举报 回复(0) 喜欢(0)     评分
游客

返回顶部