9.3.2 地图对象
1.创建地图
创建地图的过程分两步:初始化地图对象和加载地图数据。
初始化地图对象:在使用地图对象之前需要对地图对象进行初始化。GeoSurf中提供了一种无参数的构造方法来创建一个空的地图对象。GeoSurfMap map=new GeoSurfMap("")。
加载地图数据:地图对象可加载的数据分两种,即地图定义文件和地图集合。地图定义文件是GeoSurf定义的一种XML格式文件,主要用于记录加载数据的图层信息。图层信息是地图定义文件的主要部分。图层信息记录了图层数据的获取地址,可以是本地的矢量数据文件,也可以是数据库的空间表,以及GeoSurf矢量和影像服务所提供的矢量或栅格数据。此外,图层信息还包括有图层的画法、相互之间的压盖顺序、标注信息以及所含的专题图集合等内容,但是并不包括具体的要素信息。地图定义文件的加载方式主要分为两种,一种是只加载地图定义文件的内容,不加载任何地图数据;另一种是在加载地图定义文件后根据图层的fullLoad属性判断是否加载图层的数据。前一种方式适用于查看地图信息,后一种方式适合一般的数据加载。地图集合是指使用GeoSurf4.0创建的地图文件。GeoSurf加载地图集合时将会把地图集合中的所有数据加入到当前的地图对象中。
以下分别给出了这几种方式实现的例子:
①调用loadMapDefInfo方法加载地图定义文件信息
//指定地图定义文件的路径
String filename="E:\\develop\\geosurf\\data\\10.xmd";
//根据给定的路径创建文件对象
File file=new File(filename);
InputStream in=null;
//获取文件输入流
in=new FileInputStream(file);
//根据输入流生成文档对象
SAXBuilder saxBuilder=XMLUtils.createSAXBuilder();
saxBuilder.setEntityResolver(new GeoSurfEntityResolver(false));
ocument document=saxBuilder.build(in);
//在地图中加载地图定义信息
map.loadMapDefInfo(document);
②调用loadMapDef方法加载地图
//指定地图定义文件的路径
String filename="E:\\develop\\geosurf\\data\\10.xmd";
//根据给定的路径创建文件对象
File file=new File(filename);
InputStream in=null;
//获取文件输入流
in=new FileInputStream(file);
//根据输入流生成文档对象
SAXBuilder saxBuilder=XMLUtils.createSAXBuilder();
saxBuilder.setEntityResolver(new GeoSurfEntityResolver(false));
Document document=saxBuilder.build(in);
//在地图中加载地图
map.loadMapDef(document);
③调用loadMapSet方法加载地图集合
//指定地图集合文件的路径
String filename="E:\\develop\\geosurf\\data\\changping\\ changping.map";
//在地图中加载地图集合文件
map.loadMapSet(filename);
2.加载图层
除了加载整个地图,还可以根据图层的url使用loadMapLayer方法加载指定的图层。以下代码加载了一层地址位于“e:\data\mif”目录下的名为qtext的mif格式数据,并将该图层加入到当前地图对象map中。
//要加载的图层地址和类型
String layerURL="mif:e:\\data\\mif\\qtxt";
//指定生成的图层类型
String className="com.geostar.common.spatialmodel.geobase.GeoSurfFeatureLayer";
//设置在加载图层信息时同时加载图层中的要素数据
boolean isLoadFeatureData=true;
//加载指定的图层
AbstractLayer layer=map.loadMapLayer(layerURL,className,isLoadFeatureData);
//将指定的图层加入到地图中
map.addALayer(layer);
如果需要加载的是位于“e:\data\geostar\changping”目录下的geostar工作区changping.gws中名为mrd_buS的一层数据,则记为layerURL="geostar:E:\\data\\geostar\\changping\\changping::mrd_buS"。
如果需要加载的是位于“e:\TutorialData”目录下的shape格式文件customers.shp,则记为layerURL="Shape:E:\\TutorialData\\customers"。
如果需要加载的是位于“e:\develop\geosurf\data\china400-surf\ surfchina400”目录下的geosurf4.0的数据文件工作区xsqzd_p.suf,则记为layerURL="surf:E:\\develop\\geosurf\\data\\china400-surf\\ surfchina400\\xsqzd_p"。
3.保存地图定义文件
有两种地图定义的保存方式,分别使用文件地址和文件对象作为参数,将当前地图的内容保存到地图定义文件中。以下代码给出了使用文件对象为参数,保存当前地图对象map的例子。
//指定要保存的文件地址
String files="c:\\t10.xml";
//创建文件对象
File file=new File(filename);//
//如果指定文件不存在,创建一个文件
if(!file.exists())
file.createNewFile();
//保存当前地图到指定的文件中
map.saveMapDef(file);
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。