今天给各位分享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地图的信息别忘了在本站进行查找喔。