com.supermap.analyst.spatialanalyst
类 LinearReferencing

java.lang.Object
  继承者 com.supermap.analyst.spatialanalyst.LinearReferencing

public class LinearReferencing
extends java.lang.Object

线性参考类。该类提供用于动态分段的生成路由数据集、校准路由数据集、创建事件表、创建空间数据及事件表的叠加与融合等功能的实现。

要获取动态分段更为详细的介绍,还可以阅读《动态分段》技术文档。


方法摘要
static void addSteppedListener(SteppedListener l)
          添加一个进度条事件(SteppedEvent)的监听器。
static DatasetVector calibrateRoutes(DatasetVector referenceLineM, java.lang.String routeIDField, DatasetVector calibratePointDataset, java.lang.String calibrateRouteID, java.lang.String measureField, CalibrateOptions options, Datasource outputDatasource, java.lang.String outputDatasetName)
          根据参考点的刻度校准路由数据集。
static boolean createMarkPoints(CreateMarkPointsParameter parameter)
          创建路由数据中刻度值点。
static DatasetVector dissolveRouteEvents(RouteEventsParameter inputEventsParameter, java.lang.String[] dissolveFields, EventDissolveType eventDissolveType, Datasource outputDatasource, java.lang.String outputDatasetName, RouteEventsParameter resultEventsParameter, java.lang.String[] statisticFields, StatisticsType[] statisticModes, double tolerance)
          融合事件表。
static DatasetVector generateEventTable(DatasetVector referenceLineM, GenerateEventTableParameter parameter)
          根据空间数据创建事件表。
static DatasetVector generateRoutes(DatasetVector referenceLine, GenerateRoutesParameter parameter)
          生成路由数据集。
static DatasetVector generateSpatialData(GenerateSpatialDataParameter parameter)
          根据点或线事件表生成空间数据。
static DatasetVector overlayRouteEvents(RouteEventsParameter inputEventsParameter, RouteEventsParameter overlayEventParameter, EventOverlayType eventOverlayType, Datasource outputDatasource, java.lang.String outputDatasetName, RouteEventsParameter resultEventsParameter, double tolerance, boolean isKeepField, boolean isKeepZeroLengthEvents)
          叠加事件表。
static boolean rebuildSpatialData(DatasetVector eventTable)
          当已存在动态分段关系的事件表被修改后,重新生成对应的空间数据。
static void removeSteppedListener(SteppedListener l)
          移除一个进度条事件(SteppedEvent)的监听器。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

generateRoutes

public static DatasetVector generateRoutes(DatasetVector referenceLine,
                                           GenerateRoutesParameter parameter)
生成路由数据集。

实现动态分段的首要步骤是获得路由数据。每一条路由具有刻度值和唯一标识值,生成事件表时,事件发生的路由和刻度值(线事件包含起始和终止刻度值), 需要参考路由数据集中的路由 ID 和 M 值。

路由数据可以是已有的(通过数字化工作获得,或是从外部及其他格式导入),也可以由线数据通过一定方式生成。 该方法即用于根据一个线数据集来构建相应的路由数据集。

SuperMap 提供了四种生成路由数据集的方式,分别是:线参考点刻度方式、线单字段方式、线双字段方式和线长度方式。关于这四种生成路由方式的介绍,请参见 GenerateType 类。

注意:生成路由前,最好对用于生成路由的线数据进行去除重复节点处理。如果线对象具有重复节点,即相同坐标的节点,对应生成的路由可能产生“两个或多个相同的点具有相同的刻度值”的情况,可能破坏路由刻度值的单调性(递增、递减或保持不变),从而导致后续的动态分段分析结果不正确。

参数:
referenceLine - 指定的参考道路线数据集。要求数据集类型为线数据集,输入其他类型的数据集将导致生成路由失败并返回 null。
parameter - 指定的生成参数。
返回:
创建好的路由数据集。
示例:
以下代码示范了如何通过“线参考点刻度”方式生成路由数据集。

使用本示例代码,请确保在您的项目中存在一个名为“mapControl”的地图控件(MapControl),并声明一个名为“m_workspace”的工作空间(Workspace))变量,打开位于安装目录\SampleData\LinearReferencing 目录下的工作空间 LinearReferencing.smwu,并将地图控件与工作空间关联。

 private void GenerateRoutesExample() {
        //获取用于生成路由的线数据和参考点数据
        Datasource datasource = m_workspace.getDatasources().get(
                        "LinearReferencing");
        DatasetVector datasetLine = (DatasetVector) datasource.getDatasets().get(
                        "Roads");
        DatasetVector datasetPoint = (DatasetVector) datasource.getDatasets().get(
                        "PointEvent");
 
        //构造一个 GenerateRoutesParameter 对象并设置相关参数
        GenerateRoutesParameter parameter = new GenerateRoutesParameter();
        parameter.setType(GenerateType.BY_POINT);//使用“线参考点刻度”方式来生成路由数据集
        parameter.setDatasetPoint(datasetPoint);
        parameter.setLineRouteIDField("ROUTEID");
        parameter.setPointRouteIDField("ROUTEID");
        parameter.setMeasureField("MEASURE");
        parameter.setErrorInfoField("ERROR");
        parameter.setOutputDatasource(datasource);
        parameter.setOutputDatasetName("Routes");
        parameter.setTolerance(0.179316666);
 
        if (datasource.getDatasets().contains("Routes")) {
                // 判断该数据集是否存在动态分段关系,如存在则删除关系
                DatasetVector dynamicDataset = (DatasetVector) datasource
                                .getDatasets().get("Routes");
                DynamicSegmentInfo[] infos= DynamicSegmentManager.getDynamicSegmentInfos(dynamicDataset);
                if(infos.length!=0){
                        DynamicSegmentManager.removeDynamicSegmentInfos(dynamicDataset);
                }
                datasource.getDatasets().delete("Routes");
        }
 
        //调用 GenerateRoutes 方法来生成路由数据集
        DatasetVector resultRoutesDataset = LinearReferencing.generateRoutes(
                        datasetLine, parameter);
 
        //加载到当前地图上
        mapControl.getMap().getLayers().add(resultRoutesDataset, true);
        mapControl.getMap().refresh();
 }
 

calibrateRoutes

public static DatasetVector calibrateRoutes(DatasetVector referenceLineM,
                                            java.lang.String routeIDField,
                                            DatasetVector calibratePointDataset,
                                            java.lang.String calibrateRouteID,
                                            java.lang.String measureField,
                                            CalibrateOptions options,
                                            Datasource outputDatasource,
                                            java.lang.String outputDatasetName)
根据参考点的刻度校准路由数据集。

参数:
referenceLineM - 指定的需要被校准的路由数据集。要求数据集类型为路由数据集,输入其他类型的数据集将导致校准路由失败并返回 null。
routeIDField - 指定的路由数据集中的路由标识字段。该字段对字段类型有要求,请参见 LinearReferencing 类的介绍。如果设置的类型不被支持,会导致校准失败。
calibratePointDataset - 指定的用于校准路由的参考点数据集,该数据集中有表示刻度的字段。要求数据集类型为点数据集,输入其他类型的数据集将导致校准路由失败并返回 null。
calibrateRouteID - 指定的参考点数据集中的路由标识字段。该字段对字段类型有要求,请参见 LinearReferencing 类的介绍。如果设置的类型不被支持,会导致校准失败。
measureField - 指定的参考点数据集中用于表示刻度值的字段。该字段对字段类型有要求,请参见 LinearReferencing 类的介绍。如果设置的类型不被支持,会导致校准失败。
options - 指定的校准选项。
outputDatasource - 指定的结果路由数据集所在的数据源。如果为 null,系统会自动将结果数据集保存到被校准的路由数据集所在的数据源中。
outputDatasetName - 指定的结果路由数据集的名称。
返回:
校准之后的路由数据集,如果失败则返回 null。

generateEventTable

public static DatasetVector generateEventTable(DatasetVector referenceLineM,
                                               GenerateEventTableParameter parameter)
根据空间数据创建事件表。

使用该方法生成事件表时,除指定参考的路由数据集外,还需要通过一个 GenerateEventTableParameter 对象来设置其他生成事件表的参数,如事件数据、路由标识字段、查找半径等。

参数:
referenceLineM - 指定的关联路由数据集。
parameter - 指定的生成事件表参数设置。
返回:
一个属性表数据集,即事件表。
示例:
以下代码示范了如何生成点事件表。

使用本示例代码,请确保在您的项目中存在一个名为“mapControl”的地图控件(MapControl),并声明一个名为“m_workspace”的工作空间(Workspace)变量,打开位于安装目录\SampleData\LinearReferencing 目录下的工作空间 LinearReferencing.smwu,并将地图控件与工作空间关联。

 private void GenerateEventTableExample() {
        //获取用于生成事件表的路由和点数据
        Datasource datasource = m_workspace.getDatasources().get(
                        "LinearReferencing");
        DatasetVector datasetRoute = (DatasetVector) datasource.getDatasets().get(
                        "Roads_M");
        DatasetVector datasetPoint = (DatasetVector) datasource.getDatasets().get(
                        "PointEvent");
 
        //构造一个 GenerateEventTableParameter 对象并设置相关参数
        GenerateEventTableParameter parameter = new GenerateEventTableParameter();
        parameter.setEventDataset(datasetPoint);
        parameter.setRouteIDField("ROUTEID");
        parameter.setSearchRadius(0.001);
        parameter.setRetainingAllFields(true);
        parameter.setOutputDatasetRouteField("ROUTEID");
        parameter.setMeasureField("MEASURE");
        parameter.setFindingClosestRoute(true);
        parameter.setOutputDatasource(datasource);
        parameter.setOutputDatasetName("Point_EventTable");
 
        if (datasource.getDatasets().contains("Point_EventTable")) {
                // 判断该数据集是否存在动态分段关系,如存在则删除关系
                DatasetVector dynamicDataset = (DatasetVector) datasource
                                .getDatasets().get("Point_EventTable");
                DynamicSegmentInfo[] infos = DynamicSegmentManager
                                .getDynamicSegmentInfos(dynamicDataset);
                if (infos.length != 0) {
                        DynamicSegmentManager.removeDynamicSegmentInfos(dynamicDataset);
                }
                datasource.getDatasets().delete("Point_EventTable");
        }
 
        //调用 GenerateEventTable 方法来生成事件表
        DatasetVector resultTable = LinearReferencing.generateEventTable(
                        datasetRoute, parameter);
 
        if (resultTable != null) {
                JOptionPane.showMessageDialog(null, "生成事件表成功");
        }
 }
 

generateSpatialData

public static DatasetVector generateSpatialData(GenerateSpatialDataParameter parameter)
根据点或线事件表生成空间数据。成功则返回定位后的点或者线数据集,如果是线事件表,生成的是路由数据集。

事件表用属性表的方式记录了点或者线事件发生所在的路由、刻度、事件的描述信息(如交通事故发生地的天气状况、驾驶者的酒精含量、当时的车速、路面宽度、 铺设材料等 )。如下图所示,生成空间数据就是根据路由数据集,将事件表中的事件定位到空间上,生成相应的点或者线数据,并建立和存储三者间的动态分段关系的过程 。其中点事件对应生成点数据集 ,线事件表对应生成的线数据为路由数据集。动态分段关系隐含存储在数据集中,记录了路由数据集、事件表与生成的空间数据三者间的对应关系 ,是进行联动修改(即修改三者中的一个,其他两个根据规则自动进行修改)也就是动态分段的依据。

有关生成空间数据、动态分段关系和联动修改的内容,请阅读动态分段技术文档的 10 生成空间数据一章。

参数:
parameter - 指定的生成空间数据参数设置。
返回:
由事件表构建出来的空间数据。
示例:
示例一:以下代码示范了如何根据线事件表和路由数据集生成对应的线空间数据。

使用本示例代码,请确保在您的项目中存在一个名为“mapControl”的地图控件(MapControl),并声明一个名为“m_workspace”的工作空间(Workspace)变量,打开位于安装目录\SampleData\LinearReferencing 目录下的工作空间 LinearReferencing.smwu,并将地图控件与工作空间关联。

 private void GenerateSpatialDataExample() {
        // 获取用于生成空间数据的路由数据集
        Datasource datasource = m_workspace.getDatasources().get(
                        "LinearReferencing");
        DatasetVector referenceLineM = (DatasetVector) datasource.getDatasets()
                        .get("Roads_M");
 
        // 获取用于生成空间数据的事件表数据集
        // 避免破坏原始数据,所以复制一份数据,用于生成空间数据
        if (datasource.getDatasets().contains("LineEventTab_1")) {
                datasource.getDatasets().delete("LineEventTab_1");
        }
        DatasetVector eventTable = (DatasetVector) datasource.copyDataset(
                        datasource.getDatasets().get("LineEventTab"), "LineEventTab_1",
                        EncodeType.NONE);
 
        // 构造一个 GenerateSpatialDataParameter 对象并设置相关参数
        GenerateSpatialDataParameter parameter = new GenerateSpatialDataParameter();
        parameter.setEventTable(eventTable);
        parameter.setEventRouteIDField("ROUTEID");
        parameter.setReferenceLineM(referenceLineM);
        parameter.setRouteIDField("ROUTEID");
        parameter.setMeasureStartField("STARTMEASURE");
        parameter.setMeasureEndField("ENDMEASURE");
        parameter.setErrorInfoField("ERROR");
        parameter.setOutputDatasetName("LineSpatialData");
 
        if (datasource.getDatasets().contains("LineSpatialData")) {
                // 判断该数据集是否存在动态分段关系,如存在则删除关系
                DatasetVector dynamicDataset = (DatasetVector) datasource
                                .getDatasets().get("LineSpatialData");
                DynamicSegmentInfo[] infos = DynamicSegmentManager
                                .getDynamicSegmentInfos(dynamicDataset);
                if (infos.length != 0) {
                        DynamicSegmentManager.removeDynamicSegmentInfos(dynamicDataset);
                }
                datasource.getDatasets().delete("LineSpatialData");
        }
 
        // 调用 GenerateSpatialData 方法来生成空间数据
        DatasetVector resultSpatialDataset = LinearReferencing
                        .generateSpatialData(parameter);
 
        if (resultSpatialDataset != null) {
                JOptionPane.showMessageDialog(null, "生成空间数据成功!");
        }
 
        //将路由和生成的空间数据加载到地图上
        mapControl.getMap().getLayers().add(referenceLineM, false);
        mapControl.getMap().getLayers().add(resultSpatialDataset, true);
        mapControl.getMap().refresh();
 }
 
, 示例二:以下代码示范了在生成空间数据之后,如何进行事件表与空间数据的联动修改。

使用本示例代码,需要确保先使用示例一生成了空间数据(由事件表"LineEventTab_1"和路由数据集(Roads_M )生成空间数据(LineSpatialData)),并且相关数据集没有被删除,其所在数据源没有被关闭。

本示例中,通过修改事件表“LineEventTab_1”中的路况字段(BLOCK)的部分值,修改后,可观察对应的空间数据“ LineSpatialData”是否联动修改。

 private void ModifyEventTableExample() {
        // 获取要修改的事件表,这里获取线事件表"LineEventTab_1"
        Datasource datasource = m_workspace.getDatasources().get(
                        "LinearReferencing");
        DatasetVector eventTable = (DatasetVector) datasource.getDatasets().get(
                        "LineEventTab_1");
        // 获取该事件表的记录集
        Recordset recordset = eventTable.query("BLOCK='M'", CursorType.DYNAMIC);
 
        // 将事件表中路况为“拥堵”的事件修改为“缓行”。字段值 M 表示拥堵,N 表示缓行。
        recordset.moveFirst();
        for (int i = 0; i < recordset.getRecordCount(); i++) {
                recordset.edit();
                recordset.setFieldValue("BLOCK", "N");
                recordset.update();
                recordset.moveNext();
        }
        recordset.close();
        recordset.dispose();
 
        // 加载线事件表对应的空间数据和路由到地图上
        mapControl.getMap().getLayers().clear();
        DatasetVector spatialData = (DatasetVector) datasource.getDatasets().get(
                        "LineSpatialData");
        DatasetVector referenceLineM = (DatasetVector) datasource.getDatasets()
                        .get("Roads_M");
        mapControl.getMap().getLayers().add(spatialData, false);
        mapControl.getMap().getLayers().add(referenceLineM, false);
        mapControl.getMap().refresh();
 }
 

dissolveRouteEvents

public static DatasetVector dissolveRouteEvents(RouteEventsParameter inputEventsParameter,
                                                java.lang.String[] dissolveFields,
                                                EventDissolveType eventDissolveType,
                                                Datasource outputDatasource,
                                                java.lang.String outputDatasetName,
                                                RouteEventsParameter resultEventsParameter,
                                                java.lang.String[] statisticFields,
                                                StatisticsType[] statisticModes,
                                                double tolerance)
融合事件表。用于将冗余信息从事件表中移除,或将包含多个描述性属性的事件表分解为单独的事件表。

参数:
inputEventsParameter - 指定的输入事件参数设置。
dissolveFields - 指定的融合字段集合。只有这些属性值相同的事件才会被融合。支持除 LONGBINARY(二进制)以外的所有字段类型(FieldType)。
eventDissolveType - 指定的事件融合类型。
outputDatasource - 指定的用于存储结果事件表的数据源。如果设为 null,则将结果事件表输出到输入数事件所在的数据源。
outputDatasetName - 指定的结果数据集的名称。
resultEventsParameter - 指定的融合结果事件参数设置。
statisticFields - 指定的统计字段集合,即事件表融合之后,除融合的参照字段外,需进行重新取值的字段。指定为一个零长度数组表示不对任何字段进行统计。只支持数值型的字段。
statisticModes - 指定的统计字段类型集合。
tolerance - 指定的融合容限。单位与进行融合的事件表的刻度值单位相同。
返回:
一个数据集,即融合结果数据集,融合失败则返回 null。
示例:
以下代码示范了如何进行事件表的融合。

使用本示例代码,请确保在您的项目中存在一个名为“mapControl”的地图控件(MapControl),并声明一个名为“m_workspace”的工作空间(Workspace)变量,打开位于安装目录\SampleData\LinearReferencing 目录下的工作空间 LinearReferencing.smwu,并将地图控件与工作空间关联。

 private void EventTableDissolveExample() {
        // 获取要融合的事件表,这里获取一个线事件表
        Datasource datasource = m_workspace.getDatasources().get(
                        "LinearReferencing");
        DatasetVector eventTable = (DatasetVector) datasource.getDatasets().get(
                        "LineEventTab");
 
        // 构造一个 RouteEventsParameter 对象并设置输入事件参数
        RouteEventsParameter inputParameter = new RouteEventsParameter();
        inputParameter.setEventDataset(eventTable);
        inputParameter.setRouteIDField("RouteID");
        inputParameter.setMeasureStartField("StartMeasure");
        inputParameter.setMeasureEndField("EndMeasure");
 
        // 构造一个 RouteEventsParameter 对象并设置融合结果参数
        RouteEventsParameter resultParameter = new RouteEventsParameter();
        resultParameter.setRouteIDField("RouteID");
        resultParameter.setMeasureStartField("StartMeasure");
        resultParameter.setMeasureEndField("EndMeasure");
 
        // 指定事件表中的融合字段
        String[] dissolveFields = { "RATING" };
        // 指定事件表中的统计字段及统计方法
        String[] statisticsFields = { "ADT" };
        StatisticsType[] statisticsModes = { StatisticsType.MEAN };
 
        String outputDatasetName = "DissolvedTab";
        if (datasource.getDatasets().contains("DissolvedTab")) {
                // 判断该数据集是否存在动态分段关系,如存在则删除关系
                DatasetVector dynamicDataset = (DatasetVector) datasource
                                .getDatasets().get("DissolvedTab");
                DynamicSegmentInfo[] infos = DynamicSegmentManager
                                .getDynamicSegmentInfos(dynamicDataset);
                if (infos.length != 0) {
                        DynamicSegmentManager.removeDynamicSegmentInfos(dynamicDataset);
                }
                datasource.getDatasets().delete("DissolvedTab");
        }
 
        // 调用 DissolveRouteEvents 方法实现事件表的融合,融合类型设置为”连接“
        DatasetVector resultDissolveTable = LinearReferencing.dissolveRouteEvents(
                        inputParameter, dissolveFields,
                        EventDissolveType.EVENT_CONCATENATE, datasource, outputDatasetName,
                        resultParameter, statisticsFields, statisticsModes, 0.001);
 
        if (resultDissolveTable != null) {
                JOptionPane.showMessageDialog(null, "融合成功!");
        }
 }
 

overlayRouteEvents

public static DatasetVector overlayRouteEvents(RouteEventsParameter inputEventsParameter,
                                               RouteEventsParameter overlayEventParameter,
                                               EventOverlayType eventOverlayType,
                                               Datasource outputDatasource,
                                               java.lang.String outputDatasetName,
                                               RouteEventsParameter resultEventsParameter,
                                               double tolerance,
                                               boolean isKeepField,
                                               boolean isKeepZeroLengthEvents)
叠加事件表。用于将两个事件表叠加起来创建一个输出事件表,以表示输入的并集或交集。

参数:
inputEventsParameter - 指定的输入事件参数设置。
overlayEventParameter - 指定的叠加事件参数设置。
eventOverlayType - 指定的事件叠加类型。
outputDatasource - 指定的用于存储结果事件表的数据源。如果设为 null,则将结果事件表输出到输入事件所在的数据源。
outputDatasetName - 指定的结果数据集的名称。
resultEventsParameter - 指定的叠加结果事件参数设置。
tolerance - 指定的叠加容限。单位与结果事件表的刻度值单位相同。
isKeepField - 指定是否保留属性字段。如果为 true 则会将输入事件表和叠加事件表中除系统字段外的属性字段写入结果事件表,名称以“_in”结尾的字段表示来自输入事件表,以“_over”结尾的字段表示来自叠加事件表;指定为 false 则不写入。
isKeepZeroLengthEvents - 指定是否保留零长度线事件。如果为 true,则叠加产生的零长度事件会写入结果事件表中,false 则不会写入。
返回:
叠加结果数据集;叠加失败则返回 null。
示例:
以下代码示范了如何进行事件表的叠加。

使用本示例代码,请确保在您的项目中存在一个名为“mapControl”的地图控件(MapControl),并声明一个名为“m_workspace”的工作空间(Workspace)变量,打开位于安装目录\SampleData\LinearReferencing 目录下的工作空间 LinearReferencing.smwu,并将地图控件与工作空间关联。

 private void EventTableOverlayExample() {
        // 获取进行叠加的两个事件表,这里获取一个点事件表和一个线事件表
        Datasource datasource = m_workspace.getDatasources().get(
                        "LinearReferencing");
        DatasetVector eventTablePoint = (DatasetVector) datasource.getDatasets()
                        .get("PointEventTab");
        DatasetVector eventTableLine = (DatasetVector) datasource.getDatasets()
                        .get("LineEventTab");
 
        // 构造一个 RouteEventsParameter 对象并设置输入事件参数
        RouteEventsParameter inputEventParameter = new RouteEventsParameter();
        inputEventParameter.setEventDataset(eventTablePoint);
        inputEventParameter.setRouteIDField("ROUTEID");
        inputEventParameter.setMeasureField("MEASURE");
 
        // 构造一个 RouteEventsParameter 对象并设置叠加事件参数
        RouteEventsParameter overlayEventParameter = new RouteEventsParameter();
        overlayEventParameter.setEventDataset(eventTableLine);
        overlayEventParameter.setRouteIDField("ROUTEID");
        overlayEventParameter.setMeasureStartField("STARTMEASURE");
        overlayEventParameter.setMeasureEndField("ENDMEASURE");
 
        // 构造一个 RouteEventsParameter 对象并设置结果事件参数
        RouteEventsParameter resultEventParameter = new RouteEventsParameter();
        resultEventParameter.setRouteIDField("ROUTEID");
        resultEventParameter.setMeasureField("MEASURE");
        resultEventParameter.setMeasureStartField("STARTMEASURE");
        resultEventParameter.setMeasureEndField("ENDMEASURE");
 
        // 调用 OverlayRouteEvents 方法实现事件表的叠加,叠加类型设置为”求交“
        DatasetVector resultOverlayEventTable = LinearReferencing
                        .overlayRouteEvents(inputEventParameter, overlayEventParameter,
                                        EventOverlayType.EVENT_INTERSECT, datasource,
                                        "EventOverlayResult", resultEventParameter, 0.0, true,
                                        false);
 
        if (resultOverlayEventTable != null) {
                JOptionPane.showMessageDialog(null, "事件表叠加成功!");
        }
 }
 

rebuildSpatialData

public static boolean rebuildSpatialData(DatasetVector eventTable)
当已存在动态分段关系的事件表被修改后,重新生成对应的空间数据。

该方法适用于下面的情形:

事件表 E 已经根据路由数据集 R 生成了对应的空间数据 D,此时三者建立了动态分段关系。当事件表 E 的记录发生变化,如增加、删除、修改记录等(注意不包括对字段的增删改),应用该方法可以根据修改后的事件表 E 生成新的空间数据 D,并自动覆盖原来的空间数据,从而不需要先删除动态分段关系再删除空间数据 D,然后再生成同名的空间数据 D。当上一次生成的空间数据正在使用不允许删除时,使用此方法更新动态分段的结果非常有用。

注意,使用该方法的前提是指定的事件表存在动态分段关系。生成空间数据使用的参数与该事件表上一次生成空间数据时相同,生成的结果将直接覆盖事件表上一次生成的空间数据。

参数:
eventTable - 指定的要重新生成空间数据的事件表。
返回:
一个布尔值,代表是否生成成功。如果成功,返回 true,否则返回 false。

createMarkPoints

public static boolean createMarkPoints(CreateMarkPointsParameter parameter)
创建路由数据中刻度值点。

参数:
parameter - 创建刻度值点参数类。
返回:
刻度值点数据集。

addSteppedListener

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

参数:
l - 一个用于接收进度条事件的监听器。

removeSteppedListener

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

参数:
l - 一个用于接收进度条事件的监听器。