vb调用gis地图,excel vba 地图

2025-05-12 GIS 72
A⁺AA⁻

今天给各位分享vb调用gis地图的知识,其中也会对excel vba 地图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

目录一览:

vb课程设计 关于GIS的

不用找源码,安装一个VS.net 2005或2008,安装ArcGIS Enigne 9.2 Develope Kit for .NET 或9.3,直接在VS的IDE里面配置这些功能就行了,里面的SQL查询、距离测量、缓冲区分析那是要自己开发,不过简单,你必须学AO。建议你不要找什么源码,动手摸索了,这样对你才有好处。如果是为了完成任务的那种心态,对自己以后就业不好。

测距就用AO的INewLineFeedback画线判断一个IPolyline的长度

缓冲就用AO的ITopologicalOperator 接口的Buffer方法来做。

地图坐标显示功能比较简单,给MapControl加一个onmousemove事件,移动时获得地图的坐标mapx,mapy,显示在状态条中。

微信号:MeetyXiao
添加微信好友, 获取更多信息
复制微信号

SQL查询就用IQueryFilter根据你输入的SQL进行查询,查询后,通过IFeatureCursor接口访问这些IFeature,通过IFeature的get_value方法获得每个IFeature的属性值。

编辑工具就只用配置Editor工具按钮放到你的toolbarcontrol中

以上都是在ArcGIS Engine里面实现的方法。自己动手弄吧,多实践,对你有帮助。

我是搞mapgis二次开发的,我怎么样把电子地图放进mapxview控件里面,用vb开发的,急需代码!谢谢!

干吗不用C#呢,C#那么多资料。vb我有本书在这,但是其他资料就少了,。我觉得应该都是一样的,用Mapxview和工作空间workspace连接在一起,然后用工作空间打开

vb调用gis地图,excel vba 地图

GIS系统设计中如何利用VB开发工具进行信息查寻功能

点选查询:

MapObjects2.Point变量用于放置鼠标点击位置。通过map的shapeType属性来判断被查询图层属于点状、线状还是面状图层。如果属于面状图层,则用SearchShape(点坐标, moPointInPolygon, "查询语句")来找到需要查询的部分;若为线状或点状图层,则用SearchByDistance(点坐标, 缓冲范围, "查询语句")来确定需要查询的部分。查到的部分放在MapObjects2.Polygon变量中,闪烁显示。

框选只要把点选得第一部改一下就好了。

按属性:

用图层变量的SearchExpression(“查询语句”)来查找符合条件的地域。得到结果后,传递给一个全局MapObjects2.Recordset变量,同时设置好MapObjects2.Symbol变量,用DrawShape事件给找到的部分上色,突出显示。

按名称:

只要把按属性查询的查询语句设定为

包含名称的字段名='选中的名称'就可以了。

至于按区域,不太理解你的意思。我的理解是也属于属性性查询的一部分。

如何运用vb6.0完成mapgis中线转换区的功能

给你一点VC代码吧,MapGIS最佳开发语言是C++,转区不成功主要是因为对区的理解不够深入。

// 写入区

void CInPutSpcRegTool::WriteToReg()

{

// 条件

if (m_regai1 || m_numArcDots3 || m_arcDots==NULL)

{

return;

}

// 造区

long rdat[2];

long lno = 0;

long regno = 0;

LIN_INFO lininfo;

LIN_INFO *infoTmp = NULL;

_GetLinDefParam(infoTmp);

lininfo = *infoTmp;

lno = _AppendLin(m_regai,m_arcDots,m_numArcDots,lininfo,2);

rdat[0] = m_numArcDots+1; //点数+圈数

rdat[1] = lno;

regno = _AppendReg(m_regai,rdat,2,m_reginfo);

((CPowerView *)m_pObj)-_UpdateWindow();

// 写入默认属性结构

if (regno1)

{

return;

}

CFIELD_HEAD fld;

CATT_STRU struTmp;

CATT_STRU *stru = NULL;

char *att = NULL;

short fldno = -1;

_GetRegAttStru(m_regai,stru); //当前属性结构

_srGetSpcRegDefStru(struTmp); //默认属性结构

// 写入属性

char buf[256] = ""; //级别

fldno = -1;

fldno = _GetFldNo(stru,"RegLev");

if (fldno0)

{

fldno = _GetFldNo(struTmp,"RegLev");

fld = struTmp.fldEntry[fldno];

_AppendRegStruFld(m_regai,1,fld);

fldno = _GetFldNo(stru,"RegLev");

}

if (fldno=0)

{

_GetRegAtt(m_regai,regno,stru,att);

sprintf(buf,LOAD_STR_BY_ID(IDS_SPCREG_LEV),m_reglev);

_SetFldFromStr(att,stru,"RegLev",buf);

_WriteAtt(m_regai,REG,regno,stru,att);

}

fldno = -1; //类别

fldno = _GetFldNo(stru,"RegType");

if (fldno0)

{

fldno = _GetFldNo(struTmp,"RegType");

fld = struTmp.fldEntry[fldno];

_AppendRegStruFld(m_regai,1,fld);

fldno = _GetFldNo(stru,"RegType");

}

if (fldno=0)

{

_GetRegAtt(m_regai,regno,stru,att);

lstrcpy(buf,m_spcregcfg.SRegName);

_SetFldFromStr(att,stru,"RegType",buf);

_WriteAtt(m_regai,REG,regno,stru,att);

}

_SetChangeFlag(m_regai,1);

// 提示

char tempStr[MAX_STR_LEN]="";

sprintf(tempStr,LOAD_STR_BY_ID(IDS_INPUT_REG_SUC),m_strInput);

m_ToolIdent.CommandPrompt(tempStr);

}

VB 与MapInfo 二次开发的重点

( 1) MapInfo 对象的创建

本系统使用 OLE Automation 技术在 VB 中创建一个 MapInfo 的应用对象,然后在 VB环境下对该对象进行操作 ( 张峰等,2004) 。首先在 VB 环境下声明一个对象变量如 Map-Info,接着在 VB 中使用 CreateObject ( ) 函数创建一个 MapInfo 对象,使用语句:

Set MapInfo = CreateObject( “MapInfo. Applicaiton”)

要连接一个已运行着的 MapInfo,需要用 Visual Basic 的 GetObject ( ) 函数。

Set MapInfo = GetObject( “MapInfo. Application”)

由于该语句创建的是 MapInfo 应用对象,所以在本地机器系统中应该有 MapInfo 软件平台,否则将产生错误,不能创建 MapInfo 应用对象。集成地图开发是在程序中通过调用语句来在后台启动 MapInfo。创建完对象后就可以在 VB 环境里使用对象 MapInfo 的属性和方法,通过 VB 的对象浏览器,可以看到 MapInfo 对象的属性和方法,最常用的是 do 方法。MapInfo 应用对象 do 方法识别和执行字符串命令行。由于在 MapInfo 系统中包含的库文件 “MapBasic. def”以及 “Menu. def”中集成了许多命令函数,使 MapInfo 的有些功能往往只需要一两条语句就可以在 VB 中完成,使用起来也比较简单、方便。

( 2) VB 评价结果在 MapInfo 中的图形显示和重画

在 GIS 软件系统中,图形的显示及重画功能是系统自动完成的,可是由于本系统是采用 OLE 技术,将 MapInfo 系统集成到 VB 的环境中,则图形的显示和重画只能在 VB 的环境里完成,由于 VB 自身无法识别 MapInfo 的图形格式,所以就无法进行图形的显示与重画。使用 Map Basic 语句“Set Application Window”来让 MapInfo 的对话框和错误信息窗口从属于客户程序。“Set Next Document”语句允许 “再生”窗口。在 VB 与 MapInfo 集成环境里,图形的显示可以使用 MapInfo 的窗口来实现,也可以在 VB 的窗口中实现,MapInfo允许以三种模式将一个地图在 VB 环境里显示。其中 style 1: 表示无模式形式,即地图将充满整个 VB 窗体中,就像将 MapInfo 的图形贴在 VB 窗体上一样 ( 张峰等,2004) ; style2: 则表示生成带半高标题栏的弹出式窗口 ( 像 MapInfo 的图例窗口) ; style 3: 产生带全高标题栏的窗口。后两种方式,都不能使窗口图形窗口最大和最小化,这给用户的操作带来不便,同时也不符合 Windows 系统风格。因此本系统采用 style 1 模式。

MapInfo 允许在 VB 的窗体上显示图形,使用命令:

“Set Next document parent”& Form1. hWnd &“style 1”

Form1 是 VB 中的一个用来显示图形的窗体。在 VB 环境里打开 MapInfo 的地图和数据表格。但还存在一些问题,当 VB 窗口最大化时,MapInfo 图形不能重画,即当用户改变地图窗口大小时,MapInfo 并不会依据新窗口的大小自动重新设置地图内容以添满窗口。为此必须利用 Windows API 函数 MoveWindow 编写代码来实现,使每一次窗体的大小变化时,地图均重画。

( 3) 报表输出

通过读取数据库中存储的评价信息,按照相应的格式调用到相应的报表位置,生成报表,如图 7. 9 所示。关键点是读取数据库和打印,下面是读取数据库及打印代码:

图 7. 9 报表输出打印界面

Straql = ”select* from pingjia where name = ”’& text1. text &’””

ExecuteSql( Strsql)

Me. PrintForm

求助, 利用VB开发关于gis显示,查询方面独立的软件,可以使用Mapobject或arcengine吗?可否打包成安装文

MO和AE都能用

AE除了最新的ArcGIS10不支持VB,早些时候的版本都能支持

可以打包,但还是会依赖于AE或者MO的Runtime(运行时)。而Runtime必须单独安装。

补充:

AE必须是单独安装。MO似乎可以打包,但也需要注册dll等步骤,比较麻烦。具体的过程可以在网上搜一下

vb调用gis地图的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于excel vba 地图、vb调用gis地图的信息别忘了在本站进行查找喔。

客服微信号码

客服微信号码

留言咨询
提交留言

您将免费获得

  • 全面诊断

    您将获得专家对您公司申请资质所需条件的全面诊断服务,我们不同于传统代办公司,仅是提供一些通用的,浅显的建议

  • 找出疏忽点

    我们在了解您公司的基本情况之后,将挖掘出您公司目前不利于资质申请的疏忽点,还将详细说明您在申请资质时应当改善的确切的事项。

  • 分析需求

    我们通过丰富的从业经验,结合目前的实际情况,确认好符合您实际经营情况的资质需求。

  • 定制方案与报价

    对您的需求深入了解后,将结合您公司目前的情况,我们将为您量身定制一份资质代办方案及报价单。

获取方案

×
请设置您的cookie偏好
欢迎来到资质参谋
我们希望在本网站上使用cookie,以便保障本网站的安全、高效运转及服务优化,有关我们使用cookie的更多信息,请点击查看了解更多。
接收Cookies
决绝Cookies