发表用户:James.Liu
收集整理:James.Liu
相关讨论:http://www.mygis.com.cn/forum/dispbbs.asp?boardID=11&ID=9257

文章标题:【总结】MapXtreme for Java中如何使用在professional下制作的点图层BITMAP位图样式


我们知道在MapInfo Professional ,MapX,MapXtreme for Windows等产品中可以非常方便的使用位图符号(BitMapSymbol Style)。位图符号表现点状要素,地图展现更漂亮,更直观,符号制作更加简便。
    最近有朋友多次对如何在MapXtreme for Java平台下使用 bitmapsymbol style提出疑问,所以将一些经验总结如下,供坛友参考

方法一,整体覆盖:
    这种样式替换方式相对来说比较简单
    1.在MapXtreme for Java4.7以上版本可以直接用图层的override theme方式替换掉整个点图层的样式,图层管理器中点击图层/显示/ 样式替换中指定URL即可,URL可以是绝对路径如 file:///e:/bitmaps/car.bmp,也可以是相对路径如 http://localhost:8080/test/car.bmp
    2.在MapXtreme for Java4.5 or 4.0版本 没有提供直接指定URL的功能,但可以通过命名资源创建一个XML的符号资源描述文件,然后才能使用BitMap 符号,和使用truetype字体符号一样使用 预定义的命名资源。
    在<MapXtreme 45 InstallDir>\MapXtreme-4.5.0\Tomcat-4.1\webapps\mapxtreme45\resources 目录下 创建一个文本文件如CAR1-32.txt 输入如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<NamedResource>
<ResourceDTD>
MI_XML_Protocol_MapCommonElements_4_7.dtd
</ResourceDTD>
<ResourceXML>
<Style>
<rendition>
<style symbol-mode="image">
<image href="file:///e:/MapInfo/MapX 5.0/CUSTSYMB/CAR1-32.BMP"/>
</style>
</rendition>
</Style>
</ResourceXML>
</NamedResource>

修改CAR1-32.txt 为 CAR1-32 
在Map Definition Manager中点击命名资源,刷新一下就可以看到小车了,然后就可以在图层/显示/符号替换中 用小车替换现在的点样式。

方法二,同一图层中允许有多种类型的位图符号存在:
    这种需求稍微复杂一些,可以用如下思路实现,
    1.用tab文件方式存储无法实现,将TAB文件上载到Oracle Spatial中,Oracle中每个图层的样式有一列单独存储MI_STYLE,显示的时候根据该列存储的样式信息来渲染,但实现时需要修改一些默认值,步骤如下:
    a).将tab用easyloader上载到空间数据库中,如上载后创建了空间数据表TEST
    b).表TEST增加一列,CUST_STYLE char(254)
    c).根据MI_STYLE列中的值更新CUST_STYLE列,因为MI_STYLE中MapBasic格式存储的样式如“Symbol ("POLI1-32.BMP",0,12,0) ” MapXtreme for Java是不认的,所以我们在对应的CUST_STYLE中根据MI_STYLE添加如下MapXtreme for Java可以识别的 mapxtreme格式的样式描述如“<rendition><style symbol-mode="image"><image href="file:///e:/MapInfo/MapX 5.0/CUSTSYMB/POLI1-32.BMP"/></style></rendition>”,其余列的修改类似,这一步可以写个存储过程自动完成,不用一个一个改。
    d)在MapXtreme Java Manager Stand Alone中即可通过图层向导添加 该Oracle图层,注意在第三步,需要选择下面一个选项,即自己指定空间属性列,图元样式列,同时指定渲染方式为”MapXtreme Java格式“
    e)经过一些列折腾,你显示的图层就是包含丰富图元样式的点图层了,可以包含丰富的符号。
    
    这种方式的好处:不用在原图上做太多数据加工,不用写程序,直接保存MDF文件中就可以搞定。
 
    2.通过独立值专题图表现
    独立值专题图,不用多讲了,最基本的功能,每个域用一种样式表现出来。

    这种方式的好处:需要在原图上给每个表现类型的图元增加一个独立的整数值,图层装在完毕后创建一个独立值专题图,如果数量多比如几千个点,而且还没有多少规律,那么这种方式就比较费劲了,数据准备工作量太大。