使用TatukGIS读取mif格式地图,如何编写代码给地图不同的的域着色加以区分?(100)

  • 主题发起人 mydfw001
  • 开始时间
M

mydfw001

Unregistered / Unconfirmed
GUEST, unregistred user!
我在网上找到的world地图mif格式数据,使用TatukGIS Viewer打开地图数据后,整个世界地图是同一个颜色,需要手工设定才可给各个国家地区渲染不同的颜色。同样的,使用TatukGIS的源码读取mif格式地图,整个世界地图也是同一个颜色,琢磨了好久也不知道如何编写代码给地图不同的国家着色加以区分?请各位高手帮忙,特请有畏和apiao关注一下。
 
P

porsche

Unregistered / Unconfirmed
GUEST, unregistred user!
TatukGIS并不是一套很成熟的GIS系统,你看看TatukGIS的例子,好像有几个相类似的好几年没玩过这东东了,我个人认为只适合于非常小的地图,且图层加载三个以上就太慢了
 
M

mydfw001

Unregistered / Unconfirmed
GUEST, unregistred user!
TatukGIS的例子是Demo中的吗?我看了,但不知是那个?
 
A

apiao

Unregistered / Unconfirmed
GUEST, unregistred user!
TatukGis的核心是支持shape格式的,而mif格式的显示是将mif格式转换成shape格式然后再显示的,而shape格式的问题是这个格式本身并没有对颜色的定义,所以你没办法显示对颜色的区分。TatukGis的解决办法是:自定义格式,其实就是shape文件的一个附加文件,里面就包含了对颜色等其它信息的定义。to porsche:TatukGis的效率还是非常高的,同时打开40多个图层也是瞬间的事。但是它没有使用线程绘制图形,所以在某些应用场合还是不太方便的。
 
M

mydfw001

Unregistered / Unconfirmed
GUEST, unregistred user!
按照porsche的提示,这几天又钻研了一下,采用以下方式实现地区渲染不同的颜色:shp := layer.FindFirst(GisWholeWorld,'');shp.Params.Area.Color := clred;shp := layer.FindNext;......此法虽可实现染色,但不可避免相邻区域是同样的颜色,感觉仍不理想,不知还有其他方法没有。还有,不知有畏是否处理过相关问题,请有畏发表一下意见。
 
A

apiao

Unregistered / Unconfirmed
GUEST, unregistred user!
各个区域是肯定可以使用不用的颜色的。用你的方法就可以。还是那句话,如果你不另存成tatuk专用格式的话,你的颜色设置还是无法保存。重新打开还是那样。除非你想把颜色的设置写在程序中。
 
M

mydfw001

Unregistered / Unconfirmed
GUEST, unregistred user!
正如apiao所说,我上边所用方法就是将颜色的设置写在程序当中,觉得不满意。如果要用tatuk专用格式,该如何做?请apiao指点迷津。
 
A

apiao

Unregistered / Unconfirmed
GUEST, unregistred user!
用TGIS_ViewerWnd的saveall方法,可以保存当前显示的状态,其中包括颜色,保存的格式就是其专用格式,注意保存文件的扩展名"ttkgp"!否则打开的时候会不认的。另:用tatuk公司本身出品的编辑器来编辑shape,可以保存成专用的格式。这个软件的名字叫“ttkEDT.exe”你去网上搜一下,一大把。有破解的可用、。
 
M

mydfw001

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢两位好人。
 

Similar threads

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