mapx+vb实战摘要(四)

原创 2004年10月18日 16:33:00

ppp80上个月去天津(2004)做这个项目,加班加点忙乎过了十一,现在项目终

于完成了第一阶段,可以闲下来总结一下了。
   在做这个项目之前我只是自学了一个月的supermap,不过感觉gis这些东

西都是大同小异,没什莫可怕;关键比较郁闷的是本来根本就是做.net,现

在却要用vb实在太。。。算了,赶鸭子上架,不会也得会呀!

    其实本人对这个实在只能称得上一知半解,学的和用的一样多,不过还

是给自己和别人留下点东西吧,也许会有帮助呢:)(共五篇)

12 查找图元
   mapx查找地图上的图元有多种方法

  a, FindObj.Search
    这种方法在用的时候有局限性:数据集必须要有索引,查找的字段类型不能是10进制类型(可能还有其它的类型,忘了),否则在图上找不到。

     Set FindObj = fMainForm.Map1.Layers(LayerCombo.Text).Find
    Set FindObj.FindDataset = fMainForm.Map1.DataSets(LayerCombo.Text & " dataset")
    Set FindObj.FindField = FindObj.FindDataset.Fields(FieldCombo.Text)
    Set FoundFeature = FindObj.Search(FindText.Text)

If FoundFeature.FindRC Mod 10 = 1 Or FoundFeature.FindRC Mod 10 = 2 Then       
       fMainForm.Map1.Layers(LayerCombo.Text).Selection.Add FoundFeature
        fMainForm.Map1.AutoRedraw = False
        fMainForm.Map1.CenterX = FoundFeature.CenterX
        fMainForm.Map1.CenterY = FoundFeature.CenterY
   End If

  b,SQL语句方法

Dim ftrs As MapXLib.Features
Dim lyr As Layer
Dim i As Integer

 Set lyr = fMainForm.Map1.Layers(RoadlyrName)
 Dim strs As String
 strs = Trim("路线编码 = " + Chr(34) + ComRoadID.List(ComRoadID.ListIndex) + Chr(34))‘在值前面加双引号如:ID="001",         观测点名称 like "%天平庄"
  Set ftrs = lyr.Search(strs)
  lyr.Selection.ClearSelection
 lyr.Selection.Add ftrs
 If ftrs.Count > 0 Then
 fMainForm.Map1.CenterX = ftrs.Item(1).CenterX
 fMainForm.Map1.CenterY = ftrs.Item(1).CenterY
 End If

13显示鼠标当前的经纬度
 Private Sub Map1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
      Dim MX As Double, MY As Double
      Map1.ConvertCoord x, y, MX, MY, 1
   
        Text1.Item(1).Caption = "当前位置"
        Text1.Item(2).Caption = "东经 " & Format(MX, "###0.0000") + ",北纬 " + Format(MY, "###0.0000")               
        Text1.Item(3).Caption = " 当前图层"
        Text1.Item(4).Caption = Map1.Layers(1).Name
End Sub

14自动滚屏
 Private Sub Map1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
 If mnuMoveCenter.Checked = True Then
    If x > Map1.MapScreenWidth - 10 Then
   
    Map1.CenterX = Map1.CenterX + 0.05
   
    Map1.Refresh
   
    Else
   
    If x < 10 Then
   
    Map1.CenterX = Map1.CenterX - 0.05
   
    Map1.Refresh
   
    Else
   
    If y > Map1.MapScreenHeight - 10 Then
   
    Map1.CenterY = Map1.CenterY - 0.05
   
    Map1.Refresh
   
    Else
   
    If y < 10 Then
   
    Map1.CenterY = Map1.CenterY + 0.05
   
    Map1.Refresh
   
    End If
   
    End If
   
    End If
   
    End If
End If
 End Sub


15测距和测面积
Private Sub Form_Load()
  Map1.CreateCustomTool PolyRulerToolID, miToolTypePoly, miSizeAllCursor
    Map1.CreateCustomTool PolyAreaToolID, miToolTypePolygon, miSelectRegionMinusCursor
End Sub


 Private Sub Map1_PolyToolUsed(ByVal ToolNum As Integer, ByVal flags As Long, ByVal Points As Object, ByVal bShift As Boolean, ByVal bCtrl As Boolean, EnableDefault As Boolean)
    If ToolNum = PolyRulerToolID Then
        Dim i As Integer
        Dim DistanceSoFar As Double
        Map1.MapUnit = RulerUnit
        DistanceSoFar = 0#
        If Points.Count > 1 Then
            For i = 2 To Points.Count
                DistanceSoFar = DistanceSoFar + Map1.Distance(Points.Item(i).x, Points.Item(i).y, Points.Item(i - 1).x, Points.Item(i - 1).y)
            Next
        End If
        If flags = miPolyToolEnd Then
            'First, clear the status bar
           
            Text1.Item(4).Caption = ""
            MsgBox "距离: " & DistanceSoFar & " " & RulerUnitString
        Else
            Text1.Item(3).Caption = "距离"
             Text1.Item(4).Caption = DistanceSoFar & " " & RulerUnitString
        End If
    End If
    If ToolNum = PolyAreaToolID Then
    '面积
    
     Map1.AreaUnit = miUnitSquareKilometer
    On Error Resume Next
    Dim apolygoN As New MapXLib.Feature
    Dim ax As Double
    If (Points.Count > 2) Then
    Set apolygoN = New Feature
    Set apolygoN = Map1.FeatureFactory.CreateRegion(Points)
    ax = apolygoN.Area
    MsgBox "面积: " & ax
    End If
       
End If

End Sub

mapx+vb实战摘要(五)

ppp80上个月去天津(2004)做这个项目,加班加点忙乎过了十一,现在项目终于完成了第一阶段,可以闲下来总结一下了。   在做这个项目之前我只是自学了一个月的supermap,不过感觉gis这些东西...
  • ppp80
  • ppp80
  • 2005年01月24日 11:03
  • 1414

mapx+vb实战摘要(一)

  ppp80上个月去天津(2004)做这个项目,加班加点忙乎过了十一,现在项目终于完成了第一阶段,可以闲下来总结一下了。   在做这个项目之前我只是自学了一个月的supermap,不过感觉gis这些...
  • ppp80
  • ppp80
  • 2004年10月18日 15:13
  • 1927

mapx+vb实战摘要(二)

   ppp80上个月去天津(2004)做这个项目,加班加点忙乎过了十一,现在项目终于完成了第一阶段,可以闲下来总结一下了。   在做这个项目之前我只是自学了一个月的supermap,不过感觉gis这...
  • ppp80
  • ppp80
  • 2004年10月18日 15:38
  • 2248

mapx+vb实战摘要(三)

ppp80上个月去天津(2004)做这个项目,加班加点忙乎过了十一,现在项目终于完成了第一阶段,可以闲下来总结一下了。   在做这个项目之前我只是自学了一个月的supermap,不过感觉gis这些东西...
  • ppp80
  • ppp80
  • 2004年10月18日 16:07
  • 1830

mapx+vb实战摘要

上个月去天津做这个项目,加班加点忙乎过了十一,现在项目终于完成了第一阶段,可以闲下来总结一下了。    在做这个项目之前我只是自学了一个月的supermap,不过感觉gis这些东西都是大同小异,没什...
  • zhangjie_xiaoke
  • zhangjie_xiaoke
  • 2008年03月05日 18:35
  • 727

Python3《机器学习实战》学习笔记(四):朴素贝叶斯基础篇之言论过滤器

朴素贝叶斯算法是有监督的学习算法,解决的是分类问题,如客户是否流失、是否值得投资、信用等级评定等多分类问题。该算法的优点在于简单易懂、学习效率高、在某些领域的分类问题中能够与决策树、神经网络相媲美。但...
  • c406495762
  • c406495762
  • 2017年08月17日 20:57
  • 5749

【Spring Security实战系列】Spring Security实战(四)

在前面三个实战中,登陆页面都是用的Spring Security自己提供的,这明显不符合实际开发场景,同时也没有退出和注销按钮,因此在每次测试的时候都要通过关闭浏览器来注销达到清除session的效果...
  • zsq520520
  • zsq520520
  • 2017年09月07日 14:47
  • 476

pickle存储数据-读取数据-入门---python学习笔记25

######pickle数据存储和检索 import pickle import numpy as np import pandas as pd import matplotlib.pyplo...
  • qq_26948675
  • qq_26948675
  • 2016年12月31日 13:42
  • 196

微服务实战(四):服务发现的可行方案以及实践案例

(转载自dockone.io 原作者杨峰) 这是关于使用微服务架构创建应用系列的第四篇文章。第一篇介绍了微服务架构的模式,讨论了使用微服务架构的优缺点。第二和第三篇描述了微服务架构内部的通讯机制。这...
  • Irene__Tang
  • Irene__Tang
  • 2016年03月22日 10:41
  • 2550

mapxtreme+c#实战摘要(一)

ppp80近日用了一下mapxtreme for .net。虽然感觉没有mapx的好用,不过这个可以和.net结合,已经很满足了。不过我的程序只用了一点点mapxtreme的东西,所以发掘的东西很少,...
  • ppp80
  • ppp80
  • 2005年11月23日 17:02
  • 2866
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mapx+vb实战摘要(四)
举报原因:
原因补充:

(最多只允许输入30个字)