zoukankan      html  css  js  c++  java
  • TMapData地图数据控件 (转贴)

    For the requirement of a net friend, I post a theme, in order to review to support to the National GIS
    Because I did not try the product, I will not give any view on the software

    below is the link:
    http://www.tomore.com/dispdocnew.php?id=38251

    below is the source content

    TMapData地图控件说明
    MapData地图数据控件DEMO版
    作者: 郝霄汉
    手机:13259824863
    电话:0512-66332230
    QQ:4818472
    • MapX可以实现矢量图的绘制和控制,但不能响应短时间内大量用户的并发响应,而必须串行处理, 无法满足实际需求, SQL Server功能强大,速度快,可以响应并发请求, 但不能实现矢量图, 可以将两者结合,先把mapinfo矢量图的所有图元信息 (经纬度,颜色,符号...)导出到数据库中,然后在网络上访问,使用TCanvas对象进行绘制,注意经纬度和图形像素的转换, 速度很快,如果是C/S结构,能方便实现,如果是B/S结构, 必须下载ACTIVEX控件,等于只要下载图元记录,在客户端实现绘制,本方案完美实现矢量图和速度的结合,对用户数量没有限制, 因为利用了SQL服务器的高性能,且可以放弃mapx,对程序的部署和安装的压力大大减轻。
    • 使用Delphi开发ActiveX控件TMapData,实现以上思路.适用于车辆监控和地图查询项目,并可根据实际项目修改控件,增加功能.
    • 与MapX相比有以下特点
    文件小:1M左右
    简单:1天就可学会
    地图数据与程序分离:地图数据存放在数据库中,而不是本地
    地图数据透明:SQL Server数据库,可轻松维护
    网络应用:局域网和互联网皆可,只要能连接数据库
    并发性能:SQL Server的并发性能不用多说,地球人都知道
    • 免费提供控件的DEMO版本(MapDataProj1.ocx)
    • 免费提供测试程序源代码(delphi源码,如果没有装delphi,可以把pas文件改成txt进
    行参考,如UnitTestMap.pas UnitTestMap.txt)
    • 免费提供Mapinfo地图文件到数据库的转换程序(需要安装Mapx5)
    • 免费提供测试网页(在IE中使用javascript调用ocx)


    工作流程
    1. 安装SQL Server 2000数据库服务器
    2. 建立数据库(本例子中为 “DT”)
    3. 把Mapinfo格式的地图文件中的所有图元信息倒入数据库
    (本例子已完成,从文件‘电子地图数据库20060313.bak’还原)
    4. 安装控件TmapData
    (命令:‘regsvr32 D:\TMapData公开部分\控件\MapDataProj1.ocx’,
    路径看实际情况)
    5. 使用连接方法连接数据库
    6. 使用画图方法绘制图形
    7. 使用控件的其他属性和方法控制图形


    控件属性:
    ServerIP:string 数据库服务器地址
    UserName:string 数据库服务器帐号
    PassWord:string 数据库服务器密码
    DataBase:string 数据库名称,例子中为”DT”
    Tool:string 地图操作工具
    工具 含义
    Big 放大(点击或框选)
    Small 缩小(点击或框选)
    Move 移动
    Distance 两点距离测量
    none 空的工具,没有功能,只是点击图片,用于增加点图元的时候获得经纬度
    polygon 绘制多边形工具(按下鼠标开始,移动鼠标画线,单击鼠标确定中间点,双击鼠标完成)
    line 绘制折线工具(按下鼠标开始,移动鼠标画线,单击鼠标确定中间点,双击鼠标完成)
    rect 绘制矩形工具
    radio 绘制圆形工具
    Selectradio 半径选择工具,选择中心点在圆圈内的图元
    selectpolygon 多边形选择工具,选择中心点在多边形内的图元(按下鼠标开始,移动鼠标画线,单击鼠标确定中间点,双击鼠标完成)
    Selectrect 用矩形框选
    Select 选择(用鼠标点击选择)
    GstID:integer地图ID
    SelectFeature:integer选中的图元编号
    Connected:boolean 是否已连接数据库
    CenterX:float 中心经度
    CenterY:float 中心纬度
    ViewDistance:float 视野宽度(公里)
    Zoom:float 缩放比 100显示全图,50显示一半
    GetJD(x: Integer): Single 得到经度.参数像素X
    GetWD(y: Integer): Single 得到纬度,参数像素Y
    GetDistance(x1, y1, x2, y2: Single): Single 得到两点距离,参数两点的经纬度
    GetAngle(jd, wd, jdold, wdold: Single): Single 得到两点的角度,参数两点的经纬度
    AngleName(Angle: Single): WideString 得到方向的名称,参数角度,返回”东,南,西,北...
    Getx(JD: Single): Integer 得到像素X,参数经度
    GetY(wd: Single): Integer 得到像素Y,参数纬度
    GetWidth: Single 得到地图边界左右经度差
    GetHeight: Single 得到地图边界上下纬度差
    GetFeatures(x, y: Single;count: Integer): WideString 得到附近的图元,参数点的经纬度,想
    得到图元的数量,返回CommaText(逗号分隔结果),
    QueryFeature(const name: WideString): WideString 查询类似名称的图元,参数名称,
    返回CommaText(逗号分隔结果)
    ShowTempLayer: WordBool 是否显示临时图层
    BackColor: Integer 背景颜色
    QueryCenter(x, y, distance: Single): WideString 查询中心点附近的的点图元,参数经纬
    度, 距离(公里), 返回CommaText(逗号分隔结果)
    AllLayers: WideString 得到所有的层,返回CommaText(逗号分隔结果)
    VisibleLayers: WideString 设置可以显示的层,
    参数CommaText(逗号分隔结果)
    PopMenu: WideString 设置弹出菜单(当选中点图元的时候触发),
    参数CommaText(逗号分隔结果)
    ShowControlButton: WordBool 是否显示控制按钮(放大,缩小,移动...)
    PointInArea(x, y: Single): WordBool; 点是否在绘制的范围之内 参数:经纬度
    (配合工具polygon,rect,radio使用)
    ShowBoundArrow: WordBool 是否显示边界的箭头(上下左右)
    控件方法:
    AboutBox:调用”关于”对话框
    ConnectSQL:连接数据库
    DrawMap(GstID: Integer):绘制城市地图,参数:地图ID,参考表map字段ID
    LocateFeature(const name: WideString) 把图元的中心点作为地图的中心,参数图元名称
    MoveTo(x, y: Single) 移动地图,参数:经纬度
    AddTempPoint(const Name: WideString; jd, wd: Single;radius: Integer)
    在临时图层上增加点,参数:图元名称,经纬度,半径
    DeleteTempFeature 删除临时图元
    AddTempLine(const name, nodes: WideString; Arrow: WordBool)
      在临时图层上增加线,参数:图元名称,节点(commatext),是否显示箭头
    AddPoint(const Name: WideString; x, y: Single; LayerID: Integer)
    在图层上增加点,参数:图元名称,经纬度,图层ID
    事先要把工具设为”none”来点击图片获得经纬度
    SaveToJpg(const FileName: WideString) 保存到JPG图片,参数:JPG文件名
    AddPolygon(const name: WideString; LayerID: Integer) 增加多边形
    参数:多边形名称,所属层的ID,
    事先必须选择工具”polygon”,在地图上用鼠标绘出多边形
    (移动画线,单击确定中间点,双击完成)
    AddPolyLine(const Name: WideString; LayerID: Integer);
    增加折线
    参数:折线名称,所属层的ID,
    事先必须选择工具”line”,在地图上用鼠标绘出折线
    (移动画线,单击确定中间点,双击完成)

    LocateFeatureByID(FeatureID: Integer) 把图元的中心点作为地图的中心,参数图元ID
    ShowTheme(const ThemeName, ThemeType,Layer, TYField, DataTable,
    DataKeyField, DataField: WideString);
    显示专题图
    参数:专题图名称,
    类型:
    color--颜色
    bar--柱状图
    radio--圆形,
    层的名称,图元表的字段,数据表,
    对应图元表字段的数据表字段,数据字段
    CancelTheme 取消专题图
    DeleteFeature(FeatureID: Integer) 删除图元,参数:图元ID
    控件事件:
    ViewChanged(Sender: TObject):地图视野改变
    MouseMove(ASender: TObject; x, y: Integer; jd, wd: Single):
    鼠标移动,参数像素,经纬度
    MouseDown(ASender: TObject; x, y: Integer; jd, wd: Single):
    鼠标按下, 参数像素,经纬度
    MouseUp(ASender: TObject; x, y: Integer; jd, wd: Single):
    鼠标抬起, 参数像素,经纬度
    Select(ASender: TObject; FeatureID: Integer; const FeatureName: WideString)
    图元被选择,参数图元编号,图元名称
    Distance(ASender: TObject; Distance: Single)
    当使用距离工具的时候触发,参数距离(公里)
    MenuClick(ASender: TObject; const MenuItem: WideString;
    FeatureID: Integer; const FeatureName: WideString);
    选中点图元以后按下菜单触发
    参数:菜单项,图元编号,图元名称
    MultiSelect(ASender: TObject; const Features: WideString);
    当矩形框选(或半径选择,多边形选择)的时候,选择的图元不为空,触发图元多
       选事件,参数Features:选中的图元ID列表,逗号间隔

  • 相关阅读:
    微信小程序入门注意
    回调函数理解实例
    2017最新教程--如何下载美拍视频
    tomcat如何利用waf进行防护
    深入理解正则表达式-----应用于检测csrf的正则表达式
    snort安装--daq,dnet---ERROR! dnet header not found, go get it from...等错误解决方案
    先知安全技术社区原创文章奖励计划
    谈一谈情报威胁与态势感知
    pfring破解DNA限制
    八皇后--python代码
  • 原文地址:https://www.cnblogs.com/xiexiaokui/p/383071.html
Copyright © 2011-2022 走看看