com.supermap.analyst.trafficanalyst

类 TransferAnalyst

  • java.lang.Object
    • com.supermap.data.InternalHandle
      • com.supermap.data.InternalHandleDisposable
        • com.supermap.analyst.trafficanalyst.TransferAnalyst
  • 所有已实现的接口:
    IDisposable


    public class TransferAnalyst
    extends com.supermap.data.InternalHandleDisposable
    公交分析类。 该类主要用于进行公交换乘分析、根据经过的站点查询公交线路的信息、查询指定公交线路上的站点的信息。
    • 公交分析的主要功能
    • 公交,即公共交通,包括道路运输、轨道运输及航空运输等,一直是人们出行最常使用的方式。公交分析的主要任务即输出从起点到终点的最符合人们出行需求(如少步行、少换乘)和偏好(如不乘地铁)的换乘方法。随着城市建设的快速步伐,公交基础设施的建设也得到了长足发展,为人们生活带来了极大便利。面对日趋复杂和多样化的公共交通网络,准确、人性化的公交换乘方案显得尤为重要,对人们的日常出行起到不可小觑的指引作用。

      SuperMap 公交分析是针对如公交车、地铁、无轨电车等城市公交交通方式,以公交换乘分析(findTransferSolutions 方法)、查询经过站点的线路(findLinesByStop 方法)和线路有哪些站点(findStopsByLine 方法)为主要功能的分析模块。不仅支持丰富的线路和站点信息设置,如公交票价信息、发车时间和间隔等,还提供避开线路或站点、优先线路或站点、站点归并容限、站点捕捉容限、最大步行距离、换乘策略和偏好的设置,以及根据网路数据集给出步行线路的支持,结合高效、准确和灵活的查找算法,为使用者提供最优的公交换乘方案。

    • 公交分析的流程:
    • 公交数据准备
    • 公交分析涉及五种数据:公交站点数据、公交线路数据、站点与线路关系数据、站点及出入口关系数据和网络数据集。目前这五种数据均需要使用者提供,其中前三种是必须具备的数据。

      • 公交线路数据:将采集获得的公交线路以线对象的方式存储于一个线数据集中,即公交线路数据集。其中每一个线对象代表一条有向公交线路,即从 A 到 B 与 从 B 到 A 为两个线对象。要求其属性表中必须包含两个字段:用于标识公交线路的线路 ID(字段类型为32位整型或64位整型)和线路名称,这两个字段为必设字段。如果条件允许,还应包含其他一些属性字段,如始发时间、末班车时间、发车间隔、票价计费信息,这些信息可以为公交分析尤其是公交换乘分析的换乘方案的优先选择、出行花费等提供依据。关于需要具备哪些属性信息及其具体含义,可参考 LineSetting 类的方法。
      • 公交站点数据:将采集获得的公交站点数据存储到一个点数据集中,即公交站点数据集。其中每一个点对象代表现实世界中的一个站点。不同类型的站点共同存储,如公交车站点、地铁站点等。要求其属性表中必须包含两个字段:用于标识公交站点的站点 ID(字段类型为32位整型或64位整型)和站点名称,这两个字段为必设字段。更多信息请参见 StopSetting 类。
      • 公交站点与线路关系数据:该数据集为一个属性表,存储了公交站点与线路的对应关系,表中每一条记录对应着一个站点经过一条有向公交线路。要求必须包含线路 ID 和站点 ID 两个字段,字段类型支持32位整型和64位整型。如有条件,还应包含站点在线路中的顺序号的信息。更多信息请参见 RelationSetting 类。
      • 站点与出入口关系数据(可选):该数据为一个二维线数据集,其中每一个线对象代表从某站点(或出入口)到某出入口(或站点)的路径,即其两个端点为站点或出入口的位置。出入口一般指具有多个出入口的站点(如地铁通常有2个以上的出入口)的出入口位置,在站点数据集中,一个出入口使用一个点对象存储。该数据用于在换乘时,提供与实际一致的站点与出入口间的路线。如果不设置该数据,站点与出入口间将以直线连接。要求该数据集中必须包含两个字段:站点 ID 字段和出入口 ID 字段,此外还可以指定出入口的名称、拼音字段。更多信息请参见 RelationSetting 类。
      • 网络数据集(可选):网络数据集是公交分析的参考数据。在进行换乘分析时,从某个位置或站点需要步行到达另一位置或站点时,系统会根据网络数据集中的弧段、结点及两者间的空间拓扑关系信息,给出与实际一致的行走路线。相反,如果没有设置网络数据集,则一段步行的起点和终点间是以直线连接的。因此,使用网络数据集辅助公交换乘分析,能够获得更加准确和人性化的换乘导引。更多信息请参见 RelationSetting 类。

      将现实世界公交系统中的公交站点和线路分别抽象为点数据和线数据,再通过站点与线路关系数据、站点与出入口数据,将线路与站点、站点与出入口建立起一定的逻辑关系,从而模拟现实世界的公交系统,如下图所示。

    • 数据检查
    • SuperMap 还提供数据检查功能。在设置了公交分析环境后,可对公交数据(除网络数据集外)进行检查,用户可以根据给出的错误信息对数据进行修改(通过普通的编辑方式进行修改即可),之后再加载公交数据。详细介绍请参见 check 方法。

    • 公交分析的实现步骤
      1. 通过公交站点环境设置(StopSetting)类设置公交站点数据的相关信息;
      2. 通过公交线路环境设置(LineSetting)类设置公交线路数据的相关信息;
      3. 通过公交关系设置(RelationSetting)类设置站点与线路关系、站点与出入口关系以及网络数据集的相关信息;
      4. 通过公交分析环境设置(TransferAnalystSetting)类设置公交分析环境
      5. 通过本类的 check 方法对公交数据(除网络数据集外)进行数据检查,根据返回的错误信息对数据进行修改;
      6. 通过本类的 load 方法加载公交数据
      7. 选择一种分析方法(findTransferSolutions 方法、findLinesByStop 方法、findStopsByLine 方法)进行相应的分析
      8. 进行公交换乘分析时,在调用 findTransferSolutions 方法)后,还需要调用 getDetailInfo 方法(或其重载方法)来获取换乘导引;
      9. 最后通过对分析结果进行解析。

    有关公交分析的详细介绍,请参阅《公交分析》技术文档。

    示范代码:
    请参见 load 方法、findTransferSolutions方法、findLinesByStop 方法和 findStopsByLine 方法的示例。
    • 构造器详细资料

      • TransferAnalyst

        public TransferAnalyst()
        构造一个新的 TransferAnalyst 对象。
    • 方法详细资料

      • load

        @Deprecated
        public boolean load(LineSetting lineSetting,
                                         StopSetting stopSetting,
                                         RelationSetting relationSetting)
        已过时。 该方法已废弃,使用 load()替代。 使用公交分析基础功能时,加载公交数据。注意,该方法不支持多线程处理,否则可能出错。

        该方法用于使用基本公交功能时,根据公交站点环境设置(StopSetting)、公交线路环境设置(LineSetting)和公交关系设置(RelationSetting)来加载公交数据。公交分析的基础功能是指能够进行一般的站点或线路查询、公交换乘分析,不能通过公交分析环境设置对象(TransferAnalystSetting)对站点捕捉容限、站点归并容限、步行阈值等参数进行设置,因此进行公交换乘分析时,只给出基本的换乘线路。

        注意:如果修改了公交线路环境设置、公交站点环境设置和公交关系设置,或者对公交数据进行了修改,必须先调用 dispose 方法释放 TransferAnalyst 对象所占用的资源,然后重新调用 load 方法来加载公交数据,否则可能出错。

        参数:
        lineSetting - 指定的公交线路环境设置。
        stopSetting - 指定的公交站点环境设置。
        relationSetting - 指定的公交关系设置。
        返回:
        一个布尔值,表示是否加载公交数据成功。如果成功返回 true,否则返回 false。
      • load

        public boolean load(TransferAnalystSetting transferAnalystSetting)
        根据公交分析环境设置加载公交数据。注意,该方法不支持多线程处理,否则可能出错。

        该方法用于根据公交分析环境设置(TransferAnalystSetting )对象中所进行的设置来加载公交数据。成功加载公交数据是进行公交分析的前提,因此建议在加载公交数据前,先使用 check 方法对数据进行检查。

        注意:出现以下两种情况都必须重新调用 load 方法来加载公交数据,然后再进行分析,并且在重新调用前,必须先调用 dispose 方法释放 TransferAnalyst 对象所占用的资源,否则可能出错。

        1. 对公交分析环境设置对象的参数进行了修改,需要重新调用该方法,否则所作修改不会生效从而导致分析结果错误;
        2. 对所使用的公交数据进行了任何修改,包括修改数据集中的数据、替换数据集等,都需要重新调用该方法来加载公交数据,否则分析可能出错。
        参数:
        transferAnalystSetting - 指定的公交分析环境设置。
        返回:
        一个布尔值,表示是否加载公交数据成功。如果成功返回 true,否则返回 false。
        示范代码:
        以下代码示范了如何加载公交数据。

        本示例使用的数据为 SuperMap 组件产品安装目录\SampleData\City\下的 Changchun.udb 数据源。使用以下代码时,请确保已经存在一个名为 m_datasource 的 Datasource,并打开该数据源。

         private void loadExample() {
                        try {
                                // 设置公交线路环境
                                LineSetting lineSetting = new LineSetting();
                                lineSetting.setDataset((DatasetVector) m_datasource.getDatasets()
                                                .get("BusLine"));
                                lineSetting.setLineIDField("LINEID");
                                lineSetting.setNameField("NAME");
                                lineSetting.setLengthField("SMLENGTH");
                                lineSetting.setLineTypeField("LINETYPE");
                                // 设置票价信息
                                FareFieldInfo fareFieldInfo = new FareFieldInfo();
                                fareFieldInfo.setFareTypeField("FARETYPE");
                                fareFieldInfo.setStartFareField("STARTFARE");
                                fareFieldInfo.setStartFareRangeField("STARTFARERANGE");
                                fareFieldInfo.setFareStepField("FARESTEP");
                                fareFieldInfo.setFareStepRangeField("FARESTEPRANGE");
                                lineSetting.setFareFieldInfo(fareFieldInfo);
                                // 根据线路数据的实际情况,还可以设置线路类型、首班和末班的发车时间、发车间隔等信息
        
                                // 设置公交站点环境
                                StopSetting stopSetting = new StopSetting();
                                stopSetting.setDataset((DatasetVector) m_datasource.getDatasets()
                                                .get("BusPoint"));
                                stopSetting.setStopIDField("STOPID");
                                stopSetting.setNameField("NAME");
        
                                // 设置公交关系
                                RelationSetting relationSetting = new RelationSetting();
                                relationSetting.setDataset((DatasetVector) m_datasource
                                                .getDatasets().get("LineStopRelation"));
                                relationSetting.setLineIDField("LINEID");
                                relationSetting.setStopIDField("STOPID");
                                // 设置网络数据集的信息
                                relationSetting.setDatasetNetwork((DatasetVector) m_datasource
                                                .getDatasets().get("RoadNet"));
                                relationSetting.setEdgeIDField("SMEDGEID");
                                relationSetting.setNodeIDField("SMNODEID");
                                relationSetting.setFNodeIDField("SMFNODE");
                                relationSetting.setTNodeIDField("SMTNODE");
        
                                // 设置公交分析环境
                                TransferAnalystSetting transferAnalystSetting = new TransferAnalystSetting();
                                transferAnalystSetting.setLineSetting(lineSetting);
                                transferAnalystSetting.setStopSetting(stopSetting);
                                transferAnalystSetting.setRelationSetting(relationSetting);
                                transferAnalystSetting.setSnapTolerance(50);
                                transferAnalystSetting.setWalkingTolerance(1000);
                                transferAnalystSetting.setUnit(Unit.METER);
        
                                // 加载公交分析环境设置
                                TransferAnalyst transferAnalyst = new TransferAnalyst();
                                // 对公交数据进行检查,检查无错误之后才加载
                                Boolean isChecked = transferAnalyst.check(transferAnalystSetting);
                                if (isChecked) {
                                        Boolean isLoad = transferAnalyst.load(transferAnalystSetting);
                                        if (isLoad) {
                                                System.out.println("加载公交数据成功!");
                        } else {
                                                System.out.println("加载失败!请检查公交分析环境设置。");
                        }
                    }
                } catch (Exception Err) {
                                System.out.println(Err.getMessage());
                }
            }
         
      • check

        public boolean check(TransferAnalystSetting transferAnalystSetting)
        根据公交分析环境设置对公交数据进行检查,检查出的错误写入源数据属性表中。注意,该方法不支持多线程处理,否则可能出错。

        公交数据可能由于测量误差、数据制作人员失误等原因出现错误,从而可能导致公交分析的结果不正确。此时,可通过该方法进行检查。注意,检查的前提是已经设置好分析环境设置(TransferAnalystSetting),系统需要根据公交分析环境的设置进行检查,例如,站点捕捉容限(setSnapTolerance)用于对站点与线路关系进行检查,检查站点是否能被捕捉到对应的线路上。

        检查成功后,系统将自动在站点、线路数据集的属性表、站点与线路关系数据集和站点与轨道交通出入口关系数据集的属性表中添加一个文本型字段,名称为“Sm_ErrorInfo”,写入对应的错误信息。各个数据集对应的错误信息内容及说明如下表所示。

        使用者可针对错误信息进行修改,严格意义上来讲,应反复检查反复修改直至没有错误被检查出来,之后才能通过 load 方法加载公交数据。

        参数:
        transferAnalystSetting - 指定的公交分析环境设置对象。
        返回:
        一个布尔值,表示是否检查出错误。如果检查成功且没有检查出错误返回 true,否则返回 false。
        示范代码:
        请参见 load 方法的示例。
      • findTransferLines

        @Deprecated
        public TransferAnalystResult findTransferLines(TransferAnalystParameter parameter)
        已过时。 此方法已废弃,请使用新方法 TransferAnalyst.findTransferSolutions(TransferAnalystParameter) 替换。
        公交换乘分析试用接口。根据指定的公交换乘分析参数对象进行公交换乘分析,返回公交分析结果。

        通过该方法可以试用公交换乘分析功能。该方法针对给定的起点(或起始站点)和终点(或终止站点)分析满足用户需求的公交换乘导引。如果想获得公交换乘方案请使用 findTransferSolutions 方法。

        参数:
        parameter - 指定的公交换乘分析参数对象。
        返回:
        公交分析结果对象。
      • findTransferSolutions

        public TransferSolutions findTransferSolutions(TransferAnalystParameter parameter)
        根据指定的公交换乘分析参数对象进行公交换乘分析,返回公交换乘方案集合。

        SuperMap 的公交换乘分析,针对给定的起点和终点分析满足用户需求的公交换乘方案,起点和终点可以指定为坐标位置或者公交站点的 ID。使用者不仅可以在设置分析环境时自定义站点归并的最大距离、换乘时行走的最大距离,还可以通过公交换乘分析参数对象(TransferAnalystParameter)根据个人喜好设置换乘策略(如少换乘、少步行、较快捷、距离最短等)和偏好(如不乘地铁、优先乘公交汽车等)、换乘方案的最大数量等,系统会根据这些设置分析出最优的换乘方案,使用者不仅可以从中获得起点到终点的行驶导引,包括步行和乘车导引,还能够获得距离、出行费用等信息。

        公交换乘方案(TransferSolution)与公交换乘导引(TransferGuide)

        公交换乘方案与公交换乘导引的区别就在于:

        • 换乘方案给出概括的路线,只包含乘车路线。而每一段乘车路线包含了所有可行的公交线路。如下图(上)所示,从起点到终点的一个换乘方案告诉我们,在 A 站上车乘坐 1(或 2 或 3)路到达 B 站,再从 C 站乘坐 4(或 5)路到达 D 站。通常,一条完整的公交出行线路应包含更多的信息,比如,从起点到达乘车站点、从下车站点到达另一换乘站点、从下车站点到达终点的步行路线,各乘车段或步行段的距离、乘车段的花费和时间等,此时就需要得到换乘导引。
        • 换乘导引则可以给出一条公交换乘线路的详细信息。它由步行、每一个乘车段集合中的一个乘车段,以及它们对应的几何对象、距离、时间以及其他属性信息构成。如下图(下)所示,一个换乘导引描述了从起点到终点之间的一条公交换乘路线:从起点步行至 A 站,乘坐 1 路到达 B 站,再步行至 C 站,乘坐 5 路到达 D 站,然后步行至终点。

        那么,想要获得完整、详细的公交换乘分析结果,就需要两步:首先获取公交换乘方案,然后获取换乘导引。

        1. 首先,调用 findTransferSolutions 方法进行公交换乘分析,返回的结果为公交换乘方案集合(TransferSolutions)对象,是公交换乘方案(TransferSolution)的集合。在这里,公交换乘方案包含了完整换乘线路中的所有的乘车段集合(TransferLines),而一个乘车段(TransferLine)表示一段乘车路线,它包含从上车站点能够到达下车站点的所有路线。
        2. 然后,从上一步获得的每一个换乘段集合中选择一个乘车段,采用数组结构作为参数传入 TransferAnalyst 类的 getDetailInfo 方法(或其重载方法)来获取换乘导引(TransferGuide)。换乘导引中包含所有的换乘导引子项(TransferGuideItem),通过这些子项可以获取到一条完整公交换乘线路中的所有乘车路线和步行路线的信息。获得这些信息后,再与对应的换乘方案的概括信息相结合,组织出详细的、完整的公交换乘指导方案。
        参数:
        parameter - 指定的公交换乘分析参数对象。
        返回:
        公交换乘方案集合。
        示范代码:
        以下代码示范了如何进行公交换乘分析。

        使用以下代码时,需确保已经设置了公交分析环境(TransferAnalystSetting)。

         private void findTransferSolutionsExample(
                                TransferAnalystSetting transferAnalystSetting, long startStopID,
                                long endStopID) {
                        try {
                                // 实例化一个公交分析对象
                                TransferAnalyst transferAnalyst = new TransferAnalyst();
        
                                // 加载公交数据
                                Boolean isLoad = false;
                                isLoad = transferAnalyst.load(transferAnalystSetting);
        
                                if (isLoad) {
                                        // 实例化一个公交换乘分析参数设置对象,并设置相关参数
                                        TransferAnalystParameter parameter = new TransferAnalystParameter();
                                        parameter.setSearchMode(TransferSearchMode.ID);
                                        parameter.setStartStopID(startStopID);
                                        parameter.setEndStopID(endStopID);
                                        parameter.setSolutionCount(5);
                                        parameter.setWalkingRatio(2);
                                        // 设置优先与避让的站点和线路
                                        parameter.setEvadeStops(new long[] { 57L, 92L });
                                        parameter.setEvadeLines(new long[] { 25L });
                                        parameter.setPriorLines(new long[] { 3L, 9L });
                                        parameter.setPriorStops(new long[] { 50L, 90L, 159L });
                                        // 设置换乘策略为“少换乘”
                                        parameter.setTactic(TransferTactic.LESS_TRANSFER);
        
                                        // 调用findTransferLines方法进行公交换乘分析并获得公交换乘方案集合对象
                                        TransferSolutions solutions = transferAnalyst
                                                        .findTransferSolutions(parameter);
        
                                        TransferSolution solution = null;
                                        String summary = "";
        
                                        for (int i = 0; i < solutions.getCount(); i++) {
                                                solution = solutions.get(i);
                                                // 一条具体的公交换乘路线的乘车段数组
                                                TransferLine[] linesOnOne = new TransferLine[solution
                                                                .getTransferTime() + 1];
                                                summary += "方案 " + ( i + 1) + ":\n";
                                                TransferLines lines = null;
                                                for (int j = 0; j < solution.getTransferTime() + 1; j++) {
                                                        lines = solution.get(j);
                                                        // 这里只获得每个方案中的第一个具体路线
                                                        linesOnOne[j] = lines.get(0);
                                                        for (int k = 0; k < lines.getCount(); k++) {
                                                                if (k == 0) {
                                                                        summary += "在" + lines.get(0).getOnName()
                                                                                        + "乘坐" + lines.get(0).getLineName();
                                    } else {
                                                                        summary += "或" + lines.get(k).getLineName();
                                    }
                                }
                                                        summary += "在" + lines.get(0).getDownName() + "下车\n";
                            }
        
                                                // 获取行驶导引
                                                TransferGuide transferGuide = transferAnalyst
                                                                .getDetailInfo(startStopID, endStopID, linesOnOne);
                                                TransferGuideItem item = null;
                                                String guide = "";
                                                for (int m = 0; m < transferGuide.getCount(); m++) {
                                                        item = transferGuide.get(m);
                                                        if (!item.isWalking())// 行驶导引子项是乘车路线
                                {
                                                                guide += "从" + item.getStartName() + "乘坐"
                                                                                + item.getLineName() + "经过"
                                                                                + item.getPassStopCount() + "站,在"
                                                                                + item.getEndName() + "下车,距离为"
                                                                                + item.getDistance() + ",费用为"
                                                                                + item.getFare() + "\n";
                                } else {
                                                                // 行驶导引子项是步行
                                                                if (m == transferGuide.getCount() - 1) {
                                                                        guide += "步行至终点,距离为" + item.getDistance() + "\n";
                                    } else {
                                                                        guide += "步行至"
                                                                                        + transferGuide.get(m + 1)
                                                                                                        .getStartName() + "距离为"
                                                                                        + item.getDistance() + "\n";
                                    }
                                }
                            }
                                                summary += "总距离约为:" + transferGuide.getTotalDistance()
                                                                + ",总费用为:" + transferGuide.getTotalFare() + "\n";
                                                summary += guide;
                        }
                                        System.out.println(summary);
                    }
                } catch (Exception ex) {
                                System.out.println(ex);
                }
            }
         
      • findLinesByStop

        public LineInfo[] findLinesByStop(long stopID)
        根据指定的公交站点 ID 查找经过该站点的公交线路。
        参数:
        stopID - 指定的公交站点 ID。
        返回:
        经过该站点的公交线路信息对象集合。
        示范代码:
        以下代码示范了如何根据指定的公交站点 ID 来查找经过该站点的公交线路。

        假设已经设置好了公交分析环境设置对象,名为“transferAnalystSetting”。关于如何设置公交分析环境 ,可参考 load 方法的示例。

                        private void findLinesExample(
                                TransferAnalystSetting transferAnalystSetting, long stopID) {
                        try {
                                // 实例化一个公交分析对象
                                TransferAnalyst transferAnalyst = new TransferAnalyst();
        
                                // 加载公交数据
                                Boolean isLoad = false;
                                isLoad = transferAnalyst.load(transferAnalystSetting);
        
                                if (isLoad) {
                                        // 调用 FindLinesByStop 方法查找经过指定站点的线路
                                        LineInfo[] lineInfos = transferAnalyst
                                                        .findLinesByStop(stopID);
                                        // 提取经过该站点的线路信息
                                        String message = "经过该站点的公交线路有:\r";
                                        for (int i = 0; i < lineInfos.length; i++) {
                                                LineInfo info = lineInfos[i];
                                                String lineInfo = "线路ID:" + info.getLineID() + ",线路名称:"
                                                                + info.getName() + ",该线路共有" + info.getStopCount()
                                                                + "站,总长为" + info.getTotalDistance() + "。";
                                                System.out.println(message + lineInfo);
                        }
                    }
                } catch (Exception Err) {
                                System.out.println(Err.getMessage());
                }
            }
         
      • findStopsByLine

        public StopInfo[] findStopsByLine(long lineID)
        根据指定的公交线路 ID 查找该线路经过的站点。
        参数:
        lineID - 指定的公交线路 ID。
        返回:
        经过该线路的公交站点信息对象集合。
        示范代码:
        以下代码示范了如何根据指定的公交线路 ID 来查找该线路包含哪些公交站点。

        假设已经设置好了公交分析环境设置对象,名为“transferAnalystSetting”。关于如何设置公交分析环境 ,可参考 load 方法的示例。

                        private void findStopsExample(
                                TransferAnalystSetting transferAnalystSetting, long lineID) {
                        try {
                                // 实例化一个公交分析对象
                                TransferAnalyst transferAnalyst = new TransferAnalyst();
        
                                // 加载公交数据
                                Boolean isLoad = false;
                                isLoad = transferAnalyst.load(transferAnalystSetting);
        
                                if (isLoad) {
                                        // 调用 FindStopsByLine 方法查找指定线路上的站点
                                        StopInfo[] stopInfos = transferAnalyst.findStopsByLine(lineID);
                                        // 提取该线路上的站点名称
                                        String message = "位于该线路上的站点有:\r";
                                        for (int i = 0; i < stopInfos.length; i++) {
                                                message += "站点 ID:" + stopInfos[i].getStopID() + ",站点名称:"
                                                                + stopInfos[i].getName() + "\r";
                        }
                                        System.out.println(message);
                    }
                } catch (Exception Err) {
                                System.out.println(Err.getMessage());
                }
            }
         
      • getDetailInfo

        public TransferGuide getDetailInfo(long startID,
                                           long endID,
                                           TransferLine[] transferLines)
        根据起始站点 ID、终止站点 ID 和乘车段集合返回完整的公交换乘导引。

        注意,该方法通过 transferLines 参数指定的乘车段数组的含义与乘车段集合对象 TransferLines 的含义不同。具体请参见 getDetailInfo 方法的介绍。

        参数:
        startID - 指定的公交换乘分析的起始站点 ID。
        endID - 指定的公交换乘分析的终止站点 ID。
        transferLines - 指定的乘车段数组。
        返回:
        完整的公交换乘导引。
        示范代码:
        请参见 findTransferSolutions 方法的示例。
      • getDetailInfo

        public TransferGuide getDetailInfo(Point2D startPoint,
                                           Point2D endPoint,
                                           TransferLine[] transferLines)
        根据起点、终点和乘车段集合返回完整的公交换乘导引。

        注意,该方法通过 transferLines 参数指定的乘车段数组的含义与乘车段集合对象 TransferLines 的含义不同:

        公交换乘分析后,从返回的公交换乘方案集合(TransferSolutions)中可以获得一个公交换乘方案(TransferSolution),从该换乘方案中可以得到所有乘车段集合(TransferLines)。而该方法中需要指定的 transferLines 参数,则是由每一个乘车段集合对象中的一个乘车段(TransferLine)对象共同构成的数组,这些乘车段是一个唯一的换乘方案中的所有乘车段按照次序的组合。注意,乘车段必须按照一定的次序写入数组,该次序即换乘方案中乘车段集合的次序,如果次序不正确,得到的换乘导引可能因此出现混乱的情况而与实际需求不符。

        参数:
        startPoint - 指定的公交换乘分析的起点。
        endPoint - 指定的公交换乘分析的终点。
        transferLines - 指定的乘车段数组。
        返回:
        完整的公交换乘导引。
        示范代码:
        请参见 findTransferSolutions 方法的示例。
      • dispose

        public void dispose()
        释放该对象所占用的资源。当调用该方法之后,此对象不再可用。

Copyright © 2021–2024 SuperMap. All rights reserved.