vb调用gis地图,excel vba 地图

2024-04-27 GIS 47
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