首页 / 浏览问题 / 组件GIS / 问题详情
iobject添加三维切片缓存到scence
33EXP 2020年09月03日

如何在代码中生将.scp文件,加载到scene中呢?

scene.getLayers().add这个方法我没有找到应该如何将scp文件放进去,能否解答一下呢?谢谢

1个回答

就是通过scene.layers.add的方法,里面回调方法用三个参数的回调方法,第一个参数是string类型,填写scp的路径,第二个为类型枚举型:Layer3DType,设置为Model。最后一个布尔型设置是否添加在最上面。
4,620EXP 2020年09月03日

你好,这里报这个错是因为什么呢

地址是对的

将type设置为osgb类型

我设置为这个类型可以放进去了,但是发现切出来的缓存有问题,位置和形状都对不上了

for (int i = 0; i < ds.getDatasets().getCount(); i++) {
    OSGBCacheBuilder osgbCacheBuilder = new OSGBCacheBuilder((DatasetVector) ds.getDatasets().get(i), outputPath, ds.getDatasets().get(i).getName());
    osgbCacheBuilder.setFileType(CacheFileType.S3M);
    osgbCacheBuilder.build();
    String scpPath = outputPath + ds.getDatasets().get(i).getName() + File.separator + ds.getDatasets().get(i).getName() + ".scp";
    try {
        System.out.println(">>>>>>>>>>>>>>>>开始生成缓存<<<<<<<<<<<<<<<");
        scene.getLayers().add(scpPath, Layer3DType.OSGB, false);
        scene.getLayers().get(i).updateData();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

这是生成s3m的代码,生成之后位置和形状都不对了

你数据集坐标系是什么类型的?可以先用idesktop去对这个模型数据用相同的参数生成一下缓存,查看是否正常
我刚刚试过了,坐标系是成都坐标系,我用idesktop切出来,形状没有变,但是位置都变了,而且差的很远,在太平洋上。而且两个模型距离也很远
能否将数据发过来看一下呢,2826793165@qq.com
你好,我已经发送了

你好,我用idesktop切的正常了,代码切的,还是那一种情况这个是代码

 //初始化这个文件
        Workspace m_workspace_2 = new Workspace();
        DatasourceConnectionInfo info2 = new DatasourceConnectionInfo();
        info2.setEngineType(EngineType.UDBX);
        info2.setServer(udbxPath);
        Datasource ds2 = m_workspace_2.getDatasources().open(info2);

        for (int i = 0; i < ds2.getDatasets().getCount(); i++) {
            OSGBCacheBuilder osgbCacheBuilder = new OSGBCacheBuilder((DatasetVector) ds2.getDatasets().get(i), outputPath, ds2.getDatasets().get(i).getName());
            osgbCacheBuilder.setFileType(CacheFileType.S3M);
            osgbCacheBuilder.build();
            String scpPath = outputPath + ds2.getDatasets().get(i).getName() + File.separator + ds2.getDatasets().get(i).getName() + ".scp";
//            try {
//                System.out.println(">>>>>>>>>>>>>>>>开始生成缓存<<<<<<<<<<<<<<<");
            scene.getLayers().add(scpPath, Layer3DType.OSGB, false);
            scene.getLayers().get(i).updateData();
//            } catch (Exception e) {
//                e.printStackTrace();
//            }
        }

能不能帮忙看一下那一除了问题呢

你程序替换引用的dll了吗,如果idesktop可以了,将程序的引用dll,换成idesktop中的bin文件夹中的dll。
没有引用dll,只引用了iobject中的包,需要替换成idesktop的jar吗
替换jar并不行,还是在海上的
你的是java组件的吧,对应的java包替换为这个,之前以为你用的是.net组件

链接:https://pan.baidu.com/s/1_DdvgjJz4aDBu_2CZ6RkBw
提取码:bofo
替换后一直是这样的错误了

java.lang.UnsatisfiedLinkError: no WrapjCore in java.library.path
    
java.lang.UnsatisfiedLinkError: no WrapjAnalyst in java.library.path
java.lang.UnsatisfiedLinkError: no WrapjChart in java.library.path
    
java.lang.UnsatisfiedLinkError: no WrapjNav in java.library.path
an exception caught at Environment.loadLibrary(), program will continue running.
    
an exception caught at Environment.loadLibrary(), program will continue running.
an exception caught at Environment.loadLibrary(), program will continue running.
java.lang.UnsatisfiedLinkError: no WrapjMapping in java.library.path
    
java.lang.UnsatisfiedLinkError: no WrapjPlot in java.library.path
    
an exception caught at Environment.loadLibrary(), program will continue running.
java.lang.UnsatisfiedLinkError: no WrapjMObjects in java.library.path
你好,遇到组件报错:no WrapjGeo in java.library.path。问题原因:Java组件环境变量没有配置好;
解决方案:工程引用的jar包需要是环境变量设置的1.将Java组件的bin目录添加到系统环境变量Path的最前端(防止path的其他变量会影响到Java组件)2.如果是在IDEA开发平台,需要在Run configuration里面的Environment variables里面设置path=Java组件的bin路径()3.如果是开发web工程,需要在tomcat里面去设置对应的Java组件环境变量,参考博客地址:https://blog.csdn.net/supermapsupport/article/details/51919744?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159912525119724835800116%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159912525119724835800116&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-1-51919744.first_rank_ecpm_v3_pc_rank_v2&utm_term=SuperMap+iObjects+Java%E5%9C%A8Tomact%E4%B8%AD&spm=1018.2118.3001.4187

你好,我这里都加了,之前也是这样子配的,但是还是不行

我换成了之前的iobject的包就没问题,很奇怪。之前的也是在官网下载的,版本是supermap-iobjectsjava-10.0.1-18027-76100-win-all.rar

你好,我现在把位置设置对了,但是在iserver中发布服务后,layer中的名字成了路径,而且也加载不了缓存,但是在idesktop中打开此场景是正确的

你好,能否看一下新的问题呢?非常感谢
已经解决了,感谢你们百忙之中帮我解决问题
...