超图代码示例


超图代码示例

package com.sds.test;

import com.supermap.data.*;
import com.supermap.data.processing.SceneCacheBuilder;
import com.supermap.realspace.Layer3DDataset;
import com.supermap.realspace.Layer3DSettingVector;
import com.supermap.realspace.Scene;
import org.junit.Test;

import java.awt.*;

/**
 * @Classname com.sds.test
 * @Description
 * @Date 2022/9/21
 * @Author 13066
 */
public class TestSR {

    /**
     * 创建MySQL工作空间
     */
    @Test
    public void createMySQLWorkspace() {
        WorkspaceConnectionInfo wci = new WorkspaceConnectionInfo();
        wci.setType(WorkspaceType.MYSQL);
        wci.setServer("localhost:3306");
        wci.setUser("root");
        wci.setPassword("supermap");
        wci.setDatabase("gis");
        wci.setName("test1");

        Workspace workspace = new Workspace();

        boolean result = workspace.create(wci);
        System.out.println("创建工作空间: " + result);
        workspace.save();
    }

    /**
     * 创建场景
     */
    @Test
    public void createScene() {
        WorkspaceConnectionInfo wci = new WorkspaceConnectionInfo();
        wci.setType(WorkspaceType.MYSQL);
        wci.setServer("localhost:3306");
        wci.setUser("root");
        wci.setPassword("supermap");
        wci.setDatabase("gis");
        wci.setName("test");

        Workspace workspace = new Workspace();
        workspace.open(wci);

        // 新建场景对象
        Scene scene = new Scene();
        // 建立Scene对象和Workspace的关联
        scene.setWorkspace(workspace);

        // 将场景添加至工作空间中,这个步骤需要判断工作空间中是否有同名场景,如果同名场景执行,会抛异常
        workspace.getScenes().add("test", scene.toXML());

        // 添加完场景,需要保存工作空间
        workspace.save();

        scene.close();
        scene.dispose();
        workspace.close();
        workspace.dispose();
    }

    /**
     * 创建场景,并往场景中添加图层
     */
    @Test
    public void createSceneAndAddLayer() {
        WorkspaceConnectionInfo wci = new WorkspaceConnectionInfo();
        wci.setType(WorkspaceType.MYSQL);
        wci.setServer("localhost:3306");
        wci.setUser("root");
        wci.setPassword("supermap");
        wci.setDatabase("gis");
        wci.setName("test");

        Workspace workspace = new Workspace();
        workspace.open(wci);

        // 获取工作空间中的数据集对象,并添加至场景中
        Datasource datasource = workspace.getDatasources().get("building");
        DatasetVector buildDataset = (DatasetVector) datasource.getDatasets().get("build");

        // 新建场景对象
        Scene scene = new Scene();
        // 建立Scene对象和Workspace的关联
        scene.setWorkspace(workspace);

        // 设置风格样式
        Layer3DSettingVector layer3DSettingVector = new Layer3DSettingVector();
        GeoStyle3D geoStyle3D = new GeoStyle3D();
        geoStyle3D.setFillForeColor(Color.RED);
        layer3DSettingVector.setStyle(geoStyle3D);
        // 将数据集按照指定风格添加至场景中
        Layer3DDataset layer3DDataset = scene.getLayers().add(buildDataset, layer3DSettingVector, true);

        // 将场景添加至工作空间中,这个步骤需要判断工作空间中是否有同名场景,如果同名场景执行,会抛异常
        workspace.getScenes().add("test", scene.toXML());

        // 添加完场景,需要保存工作空间
        workspace.save();

        scene.close();
        scene.dispose();
        workspace.close();
        workspace.dispose();
    }

    /**
     * 对场景生成缓存
     */
    @Test
    public void creat3DCache() {
        WorkspaceConnectionInfo wci = new WorkspaceConnectionInfo();
        wci.setType(WorkspaceType.MYSQL);
        wci.setServer("localhost:3306");
        wci.setUser("root");
        wci.setPassword("supermap");
        wci.setDatabase("gis");
        wci.setName("test");

        Workspace workspace = new Workspace();
        workspace.open(wci);

        // 新建场景对象
        Scene scene = new Scene();
        // 建立Scene对象和Workspace的关联
        scene.setWorkspace(workspace);
        scene.open("test");


        SceneCacheBuilder sceneCacheBuilder = new SceneCacheBuilder();
        // sceneCacheBuilder生成缓存,需要设置很多参数,这里可以参考iDesktop切缓存的参数以及iObjects的帮助文档API进行设置
        sceneCacheBuilder.setScene(scene);
        // 图层名称
        String layerName = scene.getLayers().get(0).getName();
        sceneCacheBuilder.setPreCacheLayerNames(new String[]{layerName});
        sceneCacheBuilder.setOutputFolder("D:\\Cache");
        sceneCacheBuilder.build();
    }
}

image-20220921200110041


文章作者: Liu Yuan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Liu Yuan !
—— 评论区 ——
  目录