阅读:2091回复:2
[求助]一些关于选择MapInfo软件开发及MapX控件里的接口的困惑
<DIV ><FONT color=#000000>我的代码如下:</FONT></DIV>
<DIV ><FONT color=#000000></FONT> </DIV> <DIV ><FONT color=#000000> Dim f As MapXLib.Feature<BR> Dim p As New MapXLib.Point<BR> Dim l As MapXLib.Layer<BR> Dim ps As New MapXLib.Points </FONT> <DIV><FONT face=Verdana color=#000000> Dim i</FONT></DIV> <DIV><FONT face=Verdana><BR><FONT color=#000000> l = Map1.Layers(1)<BR> </FONT></FONT></DIV> <DIV><FONT face=Verdana color=#000000> For i = 1 To 100<BR> p.Set(Map1.CenterX - i, Map1.CenterY - i)<BR> ps.Add(p)<BR> l.BeginAccess(MapXLib.LayerBeginAccessConstants.miAccessReadWrite)<BR> f = l.AddFeature(Map1.FeatureFactory.CreateMultipoint(ps))</FONT></DIV> <DIV><FONT face=Verdana color=#000000> 'l.EndAccess(0) <BR> Next i</FONT></DIV> <DIV><FONT color=#000000></FONT> </DIV> <DIV><FONT color=#000000>代码问题:</FONT></DIV> <DIV><FONT color=#000000>Q1:代码的意思是在一图层中添加100个点图元,在每次画图元之前调用BeginAccess来锁定图层为了改善操作效率,添加该点后调用EndAccess来释放,我这样做,100次速度比较慢,改为400就很慢很慢了.</FONT></DIV> <DIV ><FONT color=#000000>Q2:当我去掉每次添加结束后的EndAccess后,不管循环多少,速度均很快,这样做的根据是:MapX帮助文档说明"可以嵌套使用BeginAccess,但只对第一次操作有效",但MapX帮助文档说明里又说:"每个BeginAccess必须匹配一个EndAccess",故我不知道什么时候来调用EndAccess.程序结束时?删除图元时?我锁定的均是同一个层,但我多次锁定了层,需要释放几次?</FONT></DIV> <DIV ><FONT color=#000000>Q3:BeginAccess嵌套有没有数量限制?MapX控件虽然有这个接口,但对嵌套使用没有说明很多.</FONT></DIV> <DIV><FONT color=#000000></FONT> </DIV> <DIV><FONT color=#000000>一些其他问题:</FONT></DIV> <DIV><FONT color=#000000>Q4:我自己熟悉的语言是VC,操作系统是Windows XP,MapInfo 软件是MapX 以及MapInfo Professional.根据公司的需求我需要做车载系统软件部分里面的GIS模块.现在基于客户端(地图放在客户端)的GIS功能大部分已经完成.采用的软件是MapX.但项目的第二期是要把地图信息数据放在服务端的C/S模式.我尝试了下把地图信息导进了ORACLE 9I,用MapX和OCI方式访问了ORACLE 9I,但速度不如意.朋友推荐我用MapXtreme,能介绍下MapXtreme来开发C/S模式的是怎么做的(原理)?虽然我了解了一段时间,还不是很明白,并且大部分都是在介绍B/S模式的。还有我去找了下该工具,发现有好几种模式的MapXtreme for Window,如:一种装起来后很像MapX控件,在.NET环境下可以直接用.还有一种装起来有MapXtreme Server Administrator、Map Engine等工具。</FONT></DIV> <DIV><FONT color=#000000>Q5:用何种方式访问空间数据库效率高?有人说OO4O访问效率最好?有这方面的资料推荐吗?</FONT></DIV> <DIV><FONT color=#000000></FONT> </DIV> <DIV><FONT color=#000000>一个关于MapX查找线图元的问题:</FONT></DIV> <DIV><FONT color=#000000>Q6:我已知这条线的2个端点,该线的所在的图层(该层只有线),我所要的实行的操作:删除该线。</FONT></DIV> <DIV><FONT color=#000000> 我采用的方式是这样的:用SearchAtpoint先搜索出一个点所有该点的图元信息,记录每个图元的ID,再用SearchAtpoint搜索出另外一个点的所有图元信息,也记录每个图元的ID,然后进行匹配,相等我就删除。我用的原理是2点确定一条线。我找了很久的资料也没找到更好的办法,但我想MapX肯定有更简便的方法,还望指教,最好能给原码或者告知所需调用的接口,不甚感激。</FONT></DIV></DIV> |
|
1楼#
发布于:2007-11-08 09:37
<img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" /><img src="images/post/smile/dvbbs/em01.gif" />
|
|
2楼#
发布于:2008-04-24 20:26
<img src="images/post/smile/dvbbs/em05.gif" />
|
|