delphi+mapinfo的问题(50分)

F

feng_zi

Unregistered / Unconfirmed
GUEST, unregistred user!
请问在使用delphi对mapinfo进行二次开发过程中,能否在delphi中代替mapinof实现一些功能,
即而不是用delphi仅对库进行操作,在增加一个点时,我想通过delphi实现,并在mapinfo中显示出来,这个点有图标志,
希望有这方面经验的大侠帮帮忙。
 
没有人回答么?
用delphi对mapinfo进行开发,一般用于那方面呢?
mapinfo很不稳定,这个问题如何解决?
小弟还想问一下,mapinfo6.0只能用试用版么?(口袋中money太少)有没有注册码?
 
关注!
不过,听说MapX比MapInfo简单很多的,效果差不多!
 
kelisten:
MapX是一个OCX控件,和MapInfo是不一样的。

feng_zi:
你的问题问得很典型,记得当时我们用Delphi+MapInfo时,参考书很有限,有时一个用Delphi
很容易实现的功能,却不知道应该调用MapInfo的哪个方法来实现,急得不行。这个问题其实
在你使用这种构架时就注定了:一方面MapInfo提供给你极大的方便性,另一方面就是因为
MapInfo不是面面俱到的,因此它不能给你随心所欲的实现。比如你提到的想用Delphi在MapInfo
中添加一个点,OK,没问题,Ellipse(GetDC(),x - 1,y -1,x + 1,y + 1)画个小圆圈在MapInfo
的图形上。这个小圆圈如何加到MapInfo的数据集中呢?你还得调用MapInfo的方法,加入到
某个层中去。加进去以后,这个点的显示就归MapInfo管了,你怎么办?你不想这样,那么
你就得自己留一个链表(TList?)保留这个点,画的时候,等MapInfo画完了,再画你的数据,
你还得兼顾MapInfo的坐标,投影变换,坐标转换...是不是都快烦死了?
 
吕雪松:
  首先你的谢谢的回答,虽然我对delphi还不自如的掌握,可你所指到的我也深有感触,
只是小弟在这方面(指对gis)开发刚刚开始,经验方面,技术方面都不足,欲想借助大家的经验
来充实指高自己。
我想知道,在用delphi对mapinfo进行二次开发时,从你的经验看一般是用于哪方面?
它能辅助mapinfo到什么样的一个程度?用delphi、mapinfo都可以实现的功能,当然是
要选择那个能更有效、更简单的解决方案了。
  你是版主,以后还要多多请教!

                      风子敬上

 
MapInfo是解决的是GIS方面的图形显示、操作、空间分析方面的功能——这方面Delphi不行
,而除此以外的功能如网络通讯、复杂用户界面、关系型属性数据库查询等,都要用Delphi
来实现,这二者的结合是各取所长——话说回来,哪天Delphi中突然加入了一个控件叫Cmap
的话,你也不必再用MapInfo了。
 
在网上看到一个foreign friend用DELPHI写的GIS软件,带源码,就是不知道怎么读MAPINFO的信息,我有MAPINFO的地图,想自己控制。难啊
 
星期一:
  你所说的源码在哪?能告诉我吗?或给我一份也可以,谢先了!(我的mail:feng_zi@yeah.net)

吕雪松:
再次感谢你对我问题的关注,我现在做的正是利用delphi对数据库进行操作,只是有时一些参数传出传入的不是很方便
同时在delphi中能批量地进行处理,在mapinfo中要一个动作一个动作地完成,就是希望当delphi
中批量增加数据时,mapinfo中也能批量增加图形,不知道这样行不行?
  你在这方面有丰富的经验,能否给我几个效为典型的例子呢?
  另外问你一个关于网站的问题,如果我想用delphi来对网站中的数据库进行操作,如何连接?
如何配置呢?我网站上的数据库是access,希望你能帮了解决这个问题。
 
给你了,去看看吧:)
 
你可以在Delphi中建立一个MapInfo的服务。用Create函数可以实现。
如:
var
MapinfoServer:Variant;
MapinfoServer := Create('MapInfow');
然后,就可以在Delphi中利用MapBasic语言操作MapinfoServer。
需要注意的是:MapBasic语言要以字符串的形式拼写。然后将字符串传入MapinfoServer执行。
如:MapinfoServer.Eval('select * form [MapInfo表名]');
如果,你要用到关系数据库中的数据的话,只能是用Delphi查出数据,然后传入MapinfoServer,或者
用MapinfoServer查出MapInfo表中的数据,再到关系数据库中做操作。
 
刚才写错了一句话,现改正

你可以在Delphi中建立一个MapInfo的服务。用Create函数可以实现。
如:
var
MapinfoServer:Variant;
***********************************************
*MapinfoServer := CreateOleObject('MapInfow');*
***********************************************
然后,就可以在Delphi中利用MapBasic语言操作MapinfoServer。
需要注意的是:MapBasic语言要以字符串的形式拼写。然后将字符串传入MapinfoServer执行。
如:MapinfoServer.Eval('select * form [MapInfo表名]');
如果,你要用到关系数据库中的数据的话,只能是用Delphi查出数据,然后传入MapinfoServer,或者
用MapinfoServer查出MapInfo表中的数据,再到关系数据库中做操作。
 
星期一:
  多谢,我已经收到了,这个源码很有用,也许以只用delphi就可以完成gis了,不过,我也没有弄懂如何用,
其原理是什么,还在再看,希望能与你一起研究!我看了你的网站,不错,你能帮我看一下这个问题吗?如果我想用delphi来对网站中的数据库进行操作,如何连接?
如何配置呢?我网站上的数据库是access。
  再次谢谢你!

                           风子
 
zwyl2001:
  谢谢,我还是不太明白,你的意思是在delphi中直接使用mb呢,还是将语句传回去执行?
你能不能给个效为直观的例子呢,也许看例子更容易接受一些。
我的mail:feng_zi@yeah.net
 
我的网站也用ACCESS。我目前的想法是仿造SQL SERVER,做一个机器人在服务器上运行,
本地向机器人发指令操纵数据库。
 
星期一:
  我以前是搞oracle的(为了生计现在工作趋于前端了),对sql server不熟(其运行机制),
现在正在学习中,如果你将问题解决了,麻烦你告诉我一声。
 
星期一:
我非常需要Delphi+Mapx的源码,
  可以给我一份吗?谢先了!(我的mail:123ye@21cn.com)
 
楼上的,我没有什么MAPX的代码,我只有一份用DELPHI写的GIS代码,你要的话我可以给你的。

to feng_zi,没问题。
 
我也有类似的想法,因为我以前做GIS时不是用mapinfo的。
而是别geomedia.它用的是com编程思路,可以很方便的feng_zi提出的问题。
但我现用mapinfo+mb,根据我的经验,mapinfo只支持ole方式 ,
这样,在delphi中,你只能实现一些调用,读的功能 ,但对事件的处理就没法实现,
当然可以采用zwyl2001的方法,但我是不会用的,如果这样,我还不如用mb写。
当然现在mapinfo公司出来的mapX可以解决这问题,但到什么深度就不知道了。
我对mapinfo了解,因为它先的数据结构上的问题,有些问题是没法解决的。
我的想法,你想delphi实现,还不如用mapbasic,同样不好做。
如果有什么好的方法,请发给我,谢谢。
 
多人接受答案了。
 
星期一:
我非常需要Delphi开发GIS方面的资料。你能够把给feng_zi的程序代码给我发一份吗?
我的E—MAIL:xtdragon@yeah.net.谢谢!!!!
 
顶部