cm52shh
路人甲
路人甲
  • 注册日期2004-11-30
  • 发帖数1
  • QQ
  • 铜币109枚
  • 威望0点
  • 贡献值0点
  • 银元0个
阅读:2404回复:7

[求助]Mo中如何求多边形面积啊

楼主#
更多 发布于:2005-02-21 11:14
<P>Mo中如何求多边形面积啊.我现在要求一个多变形的面积,那位高手可以指点一下吗.谢谢了.</P>
喜欢0 评分0
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
1楼#
发布于:2005-02-22 08:55
用多边形的GetArea方法就得到啦!
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
junzhang
路人甲
路人甲
  • 注册日期2005-02-24
  • 发帖数7
  • QQ
  • 铜币141枚
  • 威望0点
  • 贡献值0点
  • 银元0个
2楼#
发布于:2005-02-24 10:21
<P>可是,我的地图坐标系是WGS1984的,距离或面积怎么也做不对呀!</P>
举报 回复(0) 喜欢(0)     评分
lixaokui
路人甲
路人甲
  • 注册日期2003-12-25
  • 发帖数768
  • QQ28796446
  • 铜币27枚
  • 威望0点
  • 贡献值0点
  • 银元0个
3楼#
发布于:2005-02-24 16:13
唉,重新投影吧!
西门吹血,有了鼓风机,就不用吹啦!
举报 回复(0) 喜欢(0)     评分
junzhang
路人甲
路人甲
  • 注册日期2005-02-24
  • 发帖数7
  • QQ
  • 铜币141枚
  • 威望0点
  • 贡献值0点
  • 银元0个
4楼#
发布于:2005-02-26 11:38
<P>我不要在gis软件中投好,我想在我的程序中使用WGS1984坐标系下的图层,但是我还要一些地形分析,当然是简单的分析了,比如测量距离,面积什么的,被测量对象是:我所画的TrackingLayer 对象,请指教!谢!</P><P>还有您说的重新投影是否能在程序中执行,您可以给我说说思路,当然有源代码最好了,无论是那个语言的,呵呵,最好是VB 或VC的.</P>
举报 回复(0) 喜欢(0)     评分
ghl_729
外卖仔
外卖仔
  • 注册日期2004-03-05
  • 发帖数52
  • QQ29172636
  • 铜币278枚
  • 威望4点
  • 贡献值0点
  • 银元0个
5楼#
发布于:2005-03-17 14:55
<P>'Xuewei,2003/5/20
'计算地区面积;</P><P>Option Explicit</P><P>Dim Recs As MapObjects2.Recordset</P><P>'把查找的区域用黄色显示:
Private Sub Map1_AfterLayerDraw(ByVal index As Integer, ByVal canceled As Boolean, ByVal hDC As stdole.OLE_HANDLE)
  Dim Sym1 As New MapObjects2.Symbol
  If Not Recs Is Nothing Then
    Sym1.Color = moYellow
    Map1.DrawShape Recs, Sym1
  End If
End Sub</P><P>
Sub DrawLayer()
  Dim dc As New DataConnection
  Dim layer As MapLayer
  dc.Database = App.Path + "\..\" + "Mexico"
  If Not dc.Connect Then
    MsgBox "在指定的文件夹下没找到图层数据文件!"
    End
  End If
  
  Set layer = New MapLayer
  Set layer.GeoDataset = dc.FindGeoDataset("States")
  layer.Symbol.Color = moLimeGreen
  Map1.Layers.Add layer
  
  Set layer = New MapLayer
  Set layer.GeoDataset = dc.FindGeoDataset("Rivers")
  layer.Symbol.Color = moRed
  Map1.Layers.Add layer
End Sub</P><P>Private Sub Form_Load()
  DrawLayer
  Label1.Caption = "在地图上点击地区。"
End Sub</P><P>Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, x As Single, y As Single)
  Dim Pl As MapObjects2.Point
  Dim Shp As MapObjects2.Polygon
  Dim Area As Single
  Const Ak = 1000
  
  Set Pl = Map1.ToMapPoint(x, y)
  Set Recs = Map1.Layers("States").SearchByDistance(Pl, Map1.ToMapDistance(30), "")
  If Recs.EOF Then
    Label1.Caption = "没有找到对象。"
  Else
    Set Shp = Recs.Fields("Shape").Value
    Map1.FlashShape Shp, 2
    Area = Format(Shp.Area * Ak, "0.00")
    Label1.Caption = "找到" ; Recs.Fields("NAME").Value ; "州,面积为" ; Area ; "平方公里。"
  End If
  
  Map1.Refresh
End Sub
</P>
举报 回复(0) 喜欢(0)     评分
jmm
jmm
路人甲
路人甲
  • 注册日期2004-11-11
  • 发帖数10
  • QQ
  • 铜币122枚
  • 威望0点
  • 贡献值0点
  • 银元0个
6楼#
发布于:2005-06-21 00:48
回去研究一下,顶!
举报 回复(0) 喜欢(0)     评分
zpgis2002
路人甲
路人甲
  • 注册日期2004-10-29
  • 发帖数83
  • QQ
  • 铜币329枚
  • 威望0点
  • 贡献值0点
  • 银元0个
7楼#
发布于:2005-12-27 15:10
<IMG src="http://www.gisempire.com/bbs/Skins/Default/emot/em01.gif">
举报 回复(0) 喜欢(0)     评分
游客

返回顶部