我现在做的毕业设计是gis的,碰到好多问题,希望高手指点了(100分)

  • 主题发起人 brisk1205
  • 开始时间
B

brisk1205

Unregistered / Unconfirmed
GUEST, unregistred user!
新手,多多指教[:)]
1、gis 系统中地图的来源一般是什么文件,我现在做的毕业设计用的是DXF,
我自己编程把有关信息录入到了数据库中,但始终觉得不是很对劲;

2、在根据数据库绘制地图时有没有什么算法可以提高效率,我导出的数据息
大概有四万个点的信息,画线、画区域,只是采用moveto、lineto、
polyline、polygon等画很费时间,我很想知道cad软件是用什么方法可以那
么快画出图象;

3、在地图移动中,怎么像photoshop那样,当鼠标移动时地图可以跟着移动;

4、最后一个最菜的问题^_^ 怎么实现刷新,每次有别的窗体覆盖后,原来生
成的东东就都没了,窗体都成灰色的了(默认的设置颜色);
 
GIS方面的书籍不是很多,记得当年阅读过一本比较经典的原版书“地理信息与地理信息系统”
比较好(想不起作者了,还给老师了),国内的书不是很好,都不能全面地谈地理信息系统,特
别是不能分析其深层结构和发展方向,都是搞测绘的谈测绘、搞交通的谈ITS、搞规划的谈
土地利用和地籍管理GIS...
我喜欢的是:(不分先后)
1,www.opengis.org
2,分形图形学(或分形几何,Mandelbrot)
3,孙老师的“计算机制图”
4,www.esri.com的GIS课程
5,空间分析
6,地图学
 
通俗地讲,地理信息系统(GIS)就是处理和位置有关的信息的计算机软硬件系统。
也可以这样理解,是MIS的基础上加上了空间图形以及相关的空间分析统计功能。

有人会问,为什么没有什么“化学信息系统”、“生物信息系统”、“体育信息系统”?

呵,这就是问题的关键:一般的信息都可以(或大致可以)用关系型数据库来描述和归纳,
而地理信息则是一类比较特殊的空间信息(无序、离散、分形、海量...),包含了很多专业
的地理知识,特别是一种地理思想(卖关子?)这就是为什么微软至到现在还没有完全进入这
个领域的原因(Office中嵌入了MapInfo)。

这个领域内,有很多是学计算机过来的,有学数学过来的,当然更多是学地理出身的,但都有
局限,如果能在这三个方面都统一起来,你就能在GIS领域挥发自如了。

发展前景就不用我多吹了,军事、测量、规划、交通、政府部门都需要,而且,只要有一天你
还站在这个地球上,只要有一天你还要产生位置上变化,GIS就都会发挥作用。

不过我反对把GIS同其它领域“划清界限”的作法,GIS是强大的,但同样是朴素的,朴素是指
它的无处不在,它应该无处不在。

有一天ArcInfo不用再是30多万人民币一套的时候,GIS就成功了。

[:D][:D][:D]
 
GIS 软件确实是昂贵的很,如果没有盗版,没有几个人用得起!
 
多谢关注,只是好像不是回答我的问题吧
up!!!
 
1、gis 系统中地图的来源一般是什么文件,
答: 很多呀,dxf(dwg)是很多基础数据的来源。你到测绘院去看看就知道了,那里用CAD的多。
而且测绘院几乎是基础地形图的唯一来源,其他的格式如:MIF Shp都是从DXF(dwg)转过来的

2、在根据数据库绘制地图时有没有什么算法可以提高效率
用moveto、lineto、polyline、polygon等画地图是对的,不过你要做优化呀。
裁剪,屏幕外的图形你不要画的,必须跳过,否则不慢才怪
多视图缓冲,我要直接在屏幕上画呀。你先画到内存里(BMP),然后贴到窗口。在内存里Draw的速度快些
当你在不缩放图形,只是移动的时候,其实你只要刷新一部分图形,结合多缓冲做


3、在地图移动中,怎么像photoshop那样,当鼠标移动时地图可以跟着移动;
是移动一个BMP的图像呀,当然也可以实施刷新,参考答题2的最后两条

4、最后一个最菜的问题^_^ 怎么实现刷新,每次有别的窗体覆盖后
重新刷新就可以了。一般是repaint 的事件里自动调用
 
to giswang: thanks! :)
1、看来还是用DXF文件了,就怕自己转得怪怪的 ^_^
2、我调整了一下SQL语句,现在快多了,呵呵,现在正在努力实现绘制的优化,只重画视区
里的图形;
3、移动内存中画的BMP图象吗? 能不能给个小小的范例,偶比较笨
4、是不是TForm中的onPaint事件?还有,怎么判断内存中的MemBitmap:TBitmap是否为空?
因为刚启动是也会触发onPaint事件把,这是内存中还没有图像,好像会出错。
 
2 brisk1205:
是内存中的图像贴到屏幕(TCanvas)上的位置改变
你看Delphi帮助里的 TCanvas.CopyRect(const Dest: TRect;
Canvas: TCanvas;
const Source: TRect);
改变 Dest: TRect 即可
Canvas: TCanvas 是bmp.Canvas

你最好不要用TForm来画地图。用别的吧,或自己建一个Class,里面包含一个 TCanvas 就可以
TPaintBox 也可以呀

出错你处理一下就行了 。难道不是吗 ^_^

 
多人接受答案了。
 

Similar threads

D
回复
0
查看
892
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部