图像地图数字化问题(200分)

H

haili

Unregistered / Unconfirmed
GUEST, unregistred user!
个人想法:在原图像基础上进行定点坐标输入地名,画线元代表道路,绘区域表示水系等等。请问这种方法是否正确?如果正确,这个地图信息是否一定要分类存放在不同的“图层”里?应该如何组织这个“图层”概念的数据结构?当鼠标在地图上移动时,如何显示鼠标CurrPoint(x,y)下的地理要素信息?个人理解这么个庞大的地图数字信息,如果MouseMove一次就要要遍历一次,系统会不会死掉?
请高手指点.......
 

网中戏

Unregistered / Unconfirmed
GUEST, unregistred user!
领先的技术帮顶
 
B

ball_cao

Unregistered / Unconfirmed
GUEST, unregistred user!
首先要确定同一图元在不同比例下的显示方式或是否显示
例如一个水塘 在城区图上显示一个多边形 在市地图上显示一个点 在省地图或更大的地图上就不显示
所以对于矢量图应该先定义图元的类型 和该类型在何种比例尺下显示
另外常常遇到的问题是不同图元位于同一位置的情况,例如道路和道路上方的高架路重叠的情况 这时画图和标注就要考虑合理的偏移
mousemove就遍历所有图元是不合理的 应该是图元做成控件有handle,可以接收消息 处理mouseover这样的事件就可以了
 
H

haili

Unregistered / Unconfirmed
GUEST, unregistred user!
如果设置一个偏移量,那MouseMove里,鼠标又如何获取Point(x,y)下的物体(如ball_cao所说的道路上的桥梁)?
“图元做成控件”,这个不太理解。做成控件后该如何存储与使用?因为是图像地图,所以在使用时,能看到的只是地图图像,不显示数字化过程中所勾绘出的路线与区域,当鼠标在地图上移动时,对于“做成控件的图元”要怎么处理,因为这些图元是没有创建的,没有Handle。因此,我认为还是只能用遍历的方法。
遍历的方法计算量太大,还有什么其它方法?
 
B

ball_cao

Unregistered / Unconfirmed
GUEST, unregistred user!
建议楼主看看一些使用矢量图技术的软件 例如Gis系统
我说的控件主要是因为控件有handle可以处理事件,而组件没有
另外图元对应的信息应该用另外的类管理 而非直接保存在控件上,控件应该只保存一个对应属性的类的指针!在mouseover的时候做一个显示的功能即可。
楼主提到的的遍历也非不能实现的办法,但是肯定不能每次mousemove就遍历 应当定时遍历或者再后面用线程遍历。

另外如果图元完全重叠的时候可以只显示其中的一个
如果一定要分开就应该在图元位置完全重合时画第二个图的时候做适当的偏离,这样看上去基本是一个位置 但是鼠标可以移动到不同的控件上以线为例
两条线都是10,15到20,60 画第二条线的时候可以画11,15到21,60这样就分开了 但是大体上还是同一个位置
 
H

hxh01

Unregistered / Unconfirmed
GUEST, unregistred user!
完全基于数据库的地图实现技术
QQ:4818472
 
H

haili

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 

Similar threads

回复
0
查看
662
不得闲
D
回复
0
查看
668
DelphiTeacher的专栏
D
顶部