首页 / 浏览问题 / 组件GIS / 问题详情
themeToDatasetVector调用该方法程序卡着不动了
3EXP 2020年05月20日
Layer themeLayer = cadMapControl.getMap().getLayers().add(dataset, themeLabel, true);
String outDatasetName = memoryDatasource.getDatasets().getAvailableDatasetName(layerName);
DatasetVector datasetCAD = themeLayer.themeToDatasetVector(memoryDatasource, outDatasetName);

调用该方法,themeToDatasetVector一直卡着不动,不知道什么原因

1个回答

你好,你说的卡住,控制台有报错信息吗?
2,842EXP 2020年05月20日
没有任何信息返回,也没有报异常。
方便看下代码吗,全部的
public DatasetVector getThemeLabelDatasetVector(String layerName, Dataset dataset, boolean isFirst, int flag) {
        Datasource memoryDatasource = operator.getMemoryDataSource(SMGisOperator.DATASOURCE_MEMORY);
        ThemeLabel themeLabel = new ThemeLabel();
        TextStyle textStyle = new TextStyle();
        textStyle.setForeColor(new Color(0, 0, 255));
        textStyle.setFontHeight(6);
        textStyle.setSizeFixed(false);
        if ("PLAN_STATION".equals(layerName) && ((flag == 1)) || flag == 2) {
            themeLabel.setLabelExpression("RES_NAME");
            themeLabel.setUniformStyle(textStyle);
            themeLabel.setOffsetX("-2");
            themeLabel.setOffsetY("2");
        }
        if ("PLAN_OPT_SECT".equals(layerName)) {
            if (flag == 1) {
                themeLabel.setLabelExpression("round(SMLENGTH,0)||'m'");
                // 沿线展示
                themeLabel.setAlongLine(true);
            }
            if (flag == 2) {
                themeLabel.setLabelExpression("RES_NAME");
                themeLabel.setAlongLine(false);
                themeLabel.setOffsetY("2");

            }
            themeLabel.setUniformStyle(textStyle);
        }

        if ("PLAN_OSC".equals(layerName) && (flag == 2)) {
            themeLabel.setLabelExpression("RES_NAME");
            themeLabel.setOffsetY("2");

        }

        if ("PLAN_ODB".equals(layerName) && (flag == 2)) {
            themeLabel.setLabelExpression("RES_NAME");
            themeLabel.setAlongLine(false);
            themeLabel.setOffsetY("2");
        }
        Layer themeLayer = cadMapControl.getMap().getLayers().add(dataset, themeLabel, true);
        String outDatasetName = memoryDatasource.getDatasets().getAvailableDatasetName(layerName);
        DatasetVector datasetCAD = themeLayer.themeToDatasetVector(memoryDatasource, outDatasetName);
        if (datasetCAD != null) {
            // 获取数据源坐标系
            PrjCoordSys prjCoordSys = operator.getDefaultDatasource().getPrjCoordSys();
            CoordSysTransParameter parameter = new CoordSysTransParameter();
            //4326的地理坐标系,单位是°
            if (datasetCAD.hasPrjCoordSys()) {
                CoordSysTranslator.convert(datasetCAD, prjCoordSys, parameter,
                    CoordSysTransMethod.MTH_GEOCENTRIC_TRANSLATION);
            }
            //cadMapControl.getMap().getLayers().removeByDataset(datasetCAD);
            cadMapControl.getMap().getLayers().removeByDataset(dataset);
        }
        return datasetCAD;
    }

我这边测试没有问题,私信您,方便远程吗
我用这个方法不能将线数据集转为cad数据集
...