WebGIS第二季第1集:图层标点和中文数据库

| | Comments (0) | TrackBacks (0)
利用Ka-map搭建的WebGIS遇到的第一个问题是投影系统的大小、比例关系;遇到的第二个问题是图形文件的创建和生成;这两个问题在将会在第一季中进行总结。

今天遇到的是第三、四个问题,分别是:

1、图层上的点如何改变样式?

2、利用Grass62创建的图层中文乱码问题如何解决?

下面将两个问题的解决方案记录一下。

问题一、图层上的点如何改变样式?

解决方案:在Ka-map中有一系列symbols文件,这些文件中给出了各种图例样式,例如实心园点、小方块、十字形、小叉子等等,还可以指定用图标做为地图图例。

我在搭建GIS的过程中遇到的最多的问题就是文件路径错误和缓存无法刷新,文件路径错误不会给出任何错误提示、而缓存也同样会造成"毫无效果"的假象,因而调试起来很费时间。

然而只要调通,会发现改变标点样式非常简单、甚至可以做出很多漂亮的图例来。现在正在考虑用科学家小H提供的六类图例进行地图标注,找到好看的小图标就是成功的标志了。

问题二、利用Grass62创建的图层中文乱码问题如何解决?

这个问题也不难解决,但是却让我感到无法实现易用性的要求。原因是Grass62的软件操作时、手工标点完成后弹出的数据录入窗口不支持UTF-8编码(至少在我的freeBSD系统上如此),因而录入到dbf数据库中的内容均为gb2312编码。

而在Ka-map上进行读取、显示的时候,却全部以UTF-8进行处理,自然会出现乱码。我现在的解决方案是利用PHP将dbf文件进行遍历转换,将其中全部数据转换成UTF-8再使用。

这样做的坏处显而易见:用grass62生成的dbf必须经过导出变成含有dbf的图形文件,然后再通过PHP将其中的dbf转换一下。若操作失误,就会重复两次转换或忘记转换,同时在使用grass进行地图绘制的时候看到的全部是乱码,暂时还没有想到更好的办法。

以下是将dbf通过PHP读取并进行转换的程序片断:

<?php
$dbf_filename='./test.dbf';
$dbf_handle=dbase_open($dbf_filename, 2);
$max_n=dbase_numrecords($dbf);
for($x=1; $x<=$max_n; $x++) {
        $record=array();
        $record=dbase_get_record_with_names($dbf_handle, $x);
        unset($record['deleted']);
    foreach($record as $key=>$value) {
            $record[$key]=iconv("gb2312", "UTF-8", $value);
    }
        $record=array_values($record);
        dbase_replace_record($dbf_handle, $record, $x);
}
dbase_close($dbf_handle);
exit;
?>


尚未解决的问题:

1、如何根据不同的缩放级别显示不同数量的图标?也就是说为每个数据点设置显示级别;

2、框选地图查看数据虽然可以使用了,但是通过搜索找到数据点还不能使用;

3、当地图含有多个图层的时候,如何控制各图层的可见性?如何关闭某图层或打开某图层?

4、数据结果内容中是否可含有超链接?含有超链接才能方便的跳转到具体的数据展现页面。

0 TrackBacks

Listed below are links to blogs that reference this entry: WebGIS第二季第1集:图层标点和中文数据库.

TrackBack URL for this entry: http://shangning.net/chinese/mt-tb.cgi/179

Leave a comment




友情链接 自然乱卷的博客 IO Language 白卉子的个人博客 孟子叶的个人博客 于新博的个人博客 周文艺 S9600初级程序员论坛 又听小楼风雨声 尚宁的英文Blog Mr.Shang 歪西网-石景山地区门户 卡客族