com.supermap.analyst.navigation
类 DataCompiler

java.lang.Object
  继承者 com.supermap.analyst.navigation.DataCompiler

public class DataCompiler
extends java.lang.Object

路网数据编译类。该类可以完成对路网数据的编译,从而支持对路网数据的分析。

从以下版本开始:
SuperMap iObject Java 7.1.0

构造方法摘要
DataCompiler()
          构造路网数据编译类的对象。
 
方法摘要
 void addSteppedListener(SteppedListener l)
          添加一个进度条事件(SteppedEvent)的监听器。
 boolean compileBaseRoad(CompilerParameter parameter, int[] mapIDs)
          基础道路数据编译。
 boolean compileGuideData(CompilerParameter parameter, int[] mapIDs)
          引导数据编译。
 int[] compileMapID(CompilerParameter parameter, java.lang.String resultCoverageDatasetName)
          获取图幅ID数组。
 boolean compileSSCData(CompilerParameterSSC parameter)
          已过时。  
 boolean compileTopologyData(CompilerParameter parameter, int[] mapIDs)
          拓扑数据编译。
 DatasetVector extractAdminCode(DatasetVector datasetAdmin, DatasetVector datasetFName, Datasource datasource, java.lang.String resultDatasetName)
          从四维导航数据的Admin表和FName表中提取行政区划表(AdminCode)数据集。
 DatasetVector extractAdminCode(DatasetVector datasetAdmin, DatasetVector datasetFName, Datasource outputDatasource, java.lang.String resultDatasetName, int language)
          从四维导航数据的Admin表和FName表中提取行政区划表(AdminCode)数据集。
 DatasetVector extractRoadDirection(DatasetVector datasetRoad, double segmentLength, double spacingLength, java.lang.String[] roadKinds, Datasource outputDatasource, java.lang.String resultDatasetName)
          从四维导航数据道路线数据中提取道路的方向,每条道路会沿着道路方向生成一条或多条方向线段,线段的走向表示道路方向。
 boolean packageData(CompilerParameter parameter, int[] mapIDs)
          编译结果数据打包。
 void removeSteppedListener(SteppedListener l)
          移除一个进度条事件(SteppedEvent)的监听器。
 boolean updatePathName(CompilerParameter parameter)
          更新道路名称字段。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

DataCompiler

public DataCompiler()
构造路网数据编译类的对象。

从以下版本开始:
SuperMap iObject Java 7.1.0
方法详细信息

compileBaseRoad

public boolean compileBaseRoad(CompilerParameter parameter,
                               int[] mapIDs)
基础道路数据编译。

该方法根据用户配置的路网数据编译参数类和指定的图幅ID数组完成对路网基础道路数据的编译工作。

注意事项:

  • 请确保路网数据的基础道路线数据已经更新了道路名称字段。否则,请先调用 updatePathName方法
  • 请确保配置的网络数据编译参数类指定了以下几项:
  • 参数:
    parameter - 路网数据编译参数类。
    mapIDs - 指定路网数据编译的图幅ID数组,可以直接通过调用 compileMapID方法获取,也可自行指定合理的图幅ID值。图幅ID值也可以不指定,则默认编译全部路网数据。
    返回:
    是否成功,成功返回true,否则返回false。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    compileGuideData

    public boolean compileGuideData(CompilerParameter parameter,
                                    int[] mapIDs)
    引导数据编译。

    该方法根据用户配置的路网数据编译参数类和指定的图幅ID数组完成对路网引导路数据的编译工作。

    注意事项:

    参数:
    parameter - 路网数据编译参数类。
    mapIDs - 指定路网数据编译的图幅ID数组,可以直接通过调用 compileMapID方法获取,也可自行指定合理的图幅ID值。图幅ID值也可以不指定,则默认编译全部路网数据。
    返回:
    是否成功,成功返回true,否则返回false。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    compileTopologyData

    public boolean compileTopologyData(CompilerParameter parameter,
                                       int[] mapIDs)
    拓扑数据编译。

    该方法根据用户配置的路网数据编译参数类和指定的图幅ID数组完成对路网拓扑关系数据的编译工作。

    注意事项:

    参数:
    parameter - 路网数据编译参数类。
    mapIDs - 指定路网数据编译的图幅ID数组,可以直接通过调用 compileMapID方法获取,也可自行指定合理的图幅ID值。图幅ID值也可以不指定,则默认编译全部路网数据。
    返回:
    是否成功,成功返回true,否则返回false。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    packageData

    public boolean packageData(CompilerParameter parameter,
                               int[] mapIDs)
    编译结果数据打包。

    该方法根据用户配置的路网数据编译参数类和指定的图幅ID数组完成对编译结果数据的打包工作。

    注意事项:

    参数:
    parameter - 路网数据编译参数类。
    mapIDs - 指定路网数据编译的图幅ID数组,可以直接通过调用 compileMapID方法获取,也可自行指定合理的图幅ID值。图幅ID值也可以不指定,则默认打包全部路网数据。
    返回:
    是否成功,成功返回true,否则返回false。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    updatePathName

    public boolean updatePathName(CompilerParameter parameter)
    更新道路名称字段。

    该方法对基础道路线数据添加道路名称字段,并更新值。

    注意事项:

  • 请确保配置的网络数据编译参数类指定了以下几项:
  • 参数:
    parameter - 路网数据编译参数类。
    返回:
    是否成功,成功返回true,否则返回false。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    compileMapID

    public int[] compileMapID(CompilerParameter parameter,
                              java.lang.String resultCoverageDatasetName)
    获取图幅ID数组。

    该方法根据用户配置的路网数据编译参数类提取预备编译的路网数据的图幅ID。

    注意事项:

    参数:
    parameter - 路网数据编译参数类。
    resultCoverageDatasetName - 图幅范围数据集名称,用于生成图幅范围数据集,该数据集包含了预备编译的路网数据的图幅范围。可以不指定该名称,则不生成该数据集
    返回:
    获取的图幅ID数组。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    extractAdminCode

    public DatasetVector extractAdminCode(DatasetVector datasetAdmin,
                                          DatasetVector datasetFName,
                                          Datasource datasource,
                                          java.lang.String resultDatasetName)
    从四维导航数据的Admin表和FName表中提取行政区划表(AdminCode)数据集。

    此方法是从四维导航数据的Admin表和FName表中提取行政区划信息,并将行政区划信息存储在指定的结果的数据集中。 Admin表和FName表都可以通过SuperMap提供的数据转换模块导入到SuperMap的数据源中。

    参数:
    datasetAdmin - Admin 表所在的数据集。
    datasetFName - FName 表所在的数据集。
    datasource - 结果行政区划数据集所在的数据源。
    resultDatasetName - 结果行政区划数据集名称,必须有效。
    返回:
    返回结果行政区划数据集,失败返回null。
    从以下版本开始:
    SuperMap iObject Java 7.2.0

    extractAdminCode

    public DatasetVector extractAdminCode(DatasetVector datasetAdmin,
                                          DatasetVector datasetFName,
                                          Datasource outputDatasource,
                                          java.lang.String resultDatasetName,
                                          int language)
    从四维导航数据的Admin表和FName表中提取行政区划表(AdminCode)数据集。

    此方法是从四维导航数据的Admin表和FName表中提取行政区划信息,并将行政区划信息存储在指定的结果的数据集中。 Admin表和FName表都可以通过SuperMap提供的数据转换模块导入到SuperMap的数据源中。

    参数:
    datasetAdmin - Admin 表所在的数据集。
    datasetFName - FName 表所在的数据集。
    datasource - 结果行政区划数据集所在的数据源。
    resultDatasetName - 结果行政区划数据集名称,必须有效。
    language - 语言可选值,只能为 [1,2,3,4],具体参考四维导航数据说明。
    返回:
    返回结果行政区划数据集,失败返回null。
    从以下版本开始:
    SuperMap iObject Java 9.0.1

    extractRoadDirection

    public DatasetVector extractRoadDirection(DatasetVector datasetRoad,
                                              double segmentLength,
                                              double spacingLength,
                                              java.lang.String[] roadKinds,
                                              Datasource outputDatasource,
                                              java.lang.String resultDatasetName)
    从四维导航数据道路线数据中提取道路的方向,每条道路会沿着道路方向生成一条或多条方向线段,线段的走向表示道路方向。

    该方法通过用户指定道路线数据集,以及道路方向线段的长度和间隔来提取道路方向。

    参数:
    datasetRoad - 需要生成道路方向的线数据集,对应于四维导航数据集中的R表。
    segmentLength - 结果方向线段的长度,单位与道路线数据集坐标系单位一致。
    spacingLength - 每个结果方向线段的间隔距离,单位与道路线数据集坐标系单位一致。
    roadKinds - 需要生成的道路方向的道路等级,在四维导航数据的R表中,道路等级存放在Kind字段中,例如,在2013年夏季数据版本中, 定义有0x00高速路 、0x01都市高速路、0x02国道、0x03省道、0x04县道、0x06乡镇道路、0x08其他道路、0x09 九级路、0x0a轮渡、0x0b行人道路,具体可以参考四维导航数据各个版本的代码表。
    outputDatasource - 结果数据集所在的数据源。
    resultDatasetName - 结果数据集的名称,必须有效。
    返回:
    返回表示道路方向的线数据集,失败返回null。
    从以下版本开始:
    SuperMap iObject Java 7.2.0
    示例:
    以下代码示范了从道路线数据集中提取道路方向。
     public boolean testExtractRoadDirection(Datasource datasource) {
            if (datasource == null) {
                    System.out.println("数据源为空");
                    return false;
            }
     
            // 获取道路线数据
            String datasetName = "RoadLine";
            DatasetVector datasetRoad = (DatasetVector) datasource.getDatasets().get(
                            datasetName);
            if (datasetRoad == null) {
                    System.out.println("获取数据集失败");
                    return false;
            }
     
            String result = "RoadDirection";
            // 获取有效的结果数据集名称
            result = datasource.getDatasets().getAvailableDatasetName(result);
     
            // 设定道路等级
            String[] roadKinds = new String[] { "0x01", "0x02", "0x03", "0x04", "0x06",
                            "0x08" };
            // 设定结果道路方向线段的长度
            double segLength = 0.00007;
            // 设定结果道路方向线段的间隔
            double spacingLength = 0.001;
     
            DataCompiler dataCompiler = new DataCompiler();
            DatasetVector resultDt = dataCompiler.extractRoadDirection(datasetRoad,
                            segLength, spacingLength, roadKinds, datasource, result);
            if (resultDt != null) {
                    System.out.println("提取成功");
            } else {
                    System.out.println("提取失败");
            }
            return resultDt != null;
     }
     

    compileSSCData

    public boolean compileSSCData(CompilerParameterSSC parameter)
    已过时。 

    将网络数据编译为包含捷径信息的SSC文件。

    参数:
    parameter - SSC文件编译参数类。
    返回:
    是否成功,成功返回true,否则返回false。
    从以下版本开始:
    SuperMap iObject Java 8.0.0
    示例:
    以下代码示例如何设置参数生成SSC文件。
     public void CompileSSCData(CompilerParameterSSC parameter) {
            CompilerParameterSSC setting = new CompilerParameterSSC();
     
            // 设置网络基本信息字段
            setting.setNetworkDataset(network);
            setting.setEdgeIDField("SmEdgeID");
            setting.setNodeIDField("SmNodeID");
            setting.setFNodeIDField("SmFNode");
            setting.setTNodeIDField("SmTNode");
            setting.setWeightField("SmLength");
     
            // 设置交通规则字段
            setting.setRuleField("Direction");
            setting.setFTSingleWayRuleValues(new java.lang.String[] { "2" });
            setting.setTFSingleWayRuleValues(new java.lang.String[] { "3" });
     
            // 设置禁行转向表信息
            setting.setTurnDataset(datasetTurn);
            setting.setTurnFEdgeIDField("FEdgeID");
            setting.setTurnNodeIDField("NodeID");
            setting.setTurnTEdgeIDField("TEdgeID");
     
            // 设置SSC文件路径
            String filePath = "../test.ssc";
            setting.setFilePath(filePath);
     
            // 生成SSC文件
            DataCompiler compiler = new DataCompiler();
            boolean b = compiler.compileSSCData(setting);
            TestAssert.assertTrue("compileSSCData is true", b);
     }
     

    addSteppedListener

    public void addSteppedListener(SteppedListener l)
    添加一个进度条事件(SteppedEvent)的监听器。

    参数:
    l - 一个用于接收进度条事件的监听器。
    从以下版本开始:
    SuperMap iObject Java 7.1.0

    removeSteppedListener

    public void removeSteppedListener(SteppedListener l)
    移除一个进度条事件(SteppedEvent)的监听器。

    参数:
    l - 一个用于接收进度条事件的监听器。
    从以下版本开始:
    SuperMap iObject Java 7.1.0