今天给各位分享vb调用gis地图的知识,其中也会对excel vba 地图进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
目录一览:
- 1、vb课程设计 关于GIS的
- 2、我是搞mapgis二次开发的,我怎么样把电子地图放进mapxview控件里面,用vb开发的,急需代码!谢谢!
- 3、GIS系统设计中如何利用VB开发工具进行信息查寻功能
- 4、如何运用vb6.0完成mapgis中线转换区的功能
- 5、VB 与MapInfo 二次开发的重点
- 6、求助, 利用VB开发关于gis显示,查询方面独立的软件,可以使用Mapobject或arcengine吗?可否打包成安装文
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,显示在状态条中。

添加微信好友, 获取更多信息
复制微信号
SQL查询就用IQueryFilter根据你输入的SQL进行查询,查询后,通过IFeatureCursor接口访问这些IFeature,通过IFeature的get_value方法获得每个IFeature的属性值。
编辑工具就只用配置Editor工具按钮放到你的toolbarcontrol中
以上都是在ArcGIS Engine里面实现的方法。自己动手弄吧,多实践,对你有帮助。
我是搞mapgis二次开发的,我怎么样把电子地图放进mapxview控件里面,用vb开发的,急需代码!谢谢!
干吗不用C#呢,C#那么多资料。vb我有本书在这,但是其他资料就少了,。我觉得应该都是一样的,用Mapxview和工作空间workspace连接在一起,然后用工作空间打开

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地图的信息别忘了在本站进行查找喔。





