|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.lang.Object com.supermap.analyst.networkanalyst.MapMatching
public class MapMatching
基于HMM(隐式马尔科夫链)的地图匹配。
该方法是将轨迹点进行地图匹配。将轨迹点按照标识字段进行划分,按时间字段进行排序和分割轨迹,找到每条轨迹最可能的经过路线。目的是基于轨迹点还原真实路径。
构造方法摘要 | |
---|---|
MapMatching()
构造一个新的地图匹配对象。 |
方法摘要 | |
---|---|
DatasetVector |
batchMatch(DatasetVector sourceDataset,
java.lang.String idField,
java.lang.String timeField,
double splitTimeMilliseconds,
Datasource outputDatasource,
java.lang.String outputDatasetName,
java.lang.String resultTrackIndexField)
对数据集进行地图匹配,结果保存为点数据。 |
MapMatchingResult |
batchMatch(java.util.List<TrackPoint> coordinates)
地图匹配结果。 |
void |
dispose()
释放该对象所占用的资源。 |
double |
getMaxLimitedSpeed()
返回最大限制速度。 |
double |
getMeasurementError()
返回轨迹点误差值。 |
PathAnalystSetting |
getPathAnalystSetting()
返回最佳路径分析参数。 |
MapMatchingLikelyResult[] |
match(TrackPoint coordinate,
boolean isNewTrack)
实时地图匹配结果。 |
MapMatching |
setMaxLimitedSpeed(double value)
设置最大限制速度。 |
MapMatching |
setMeasurementError(double value)
设置轨迹点误差值。 |
boolean |
setPathAnalystSetting(PathAnalystSetting setting)
设置最佳路径分析参数。 |
从类 java.lang.Object 继承的方法 |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
public MapMatching()
方法详细信息 |
---|
public boolean setPathAnalystSetting(PathAnalystSetting setting)
setting
- 最佳路径分析参数设置。public PathAnalystSetting getPathAnalystSetting()
public MapMatching setMeasurementError(double value)
value
- 轨迹点误差值。public double getMeasurementError()
public double getMaxLimitedSpeed()
public MapMatching setMaxLimitedSpeed(double value)
value
- 最大限制速度。public void dispose()
public MapMatchingResult batchMatch(java.util.List<TrackPoint> coordinates)
coordinates
- 待匹配轨迹点。public void testBatch(Datasource datasource) { //打开工作空间或者数据源,得到网络数据集 DatasetVector edgeDataset = (DatasetVector) datasource.getDatasets().get("SH_Small"); DatasetVector DatasetPoint = (DatasetVector) datasource.getDatasets().get("shanghai"); //设置SCC文件路径 String filePath = "/MapMatch_SH_Small.ssc"; //设置路径规划环境 SSCPathAnalystSetting SSCSetting = new SSCPathAnalystSetting(); SSCSetting.setNetworkDataset(edgeDataset); SSCSetting.setSSCFilePath(filePath); SSCSetting.setTolerance(0.1); // GPS预处理参数设置 MapMatching mapmatch = new MapMatching(); mapmatch.setPathAnalystSetting(SSCSetting); mapmatch.setMaxLimitedSpeed(150); mapmatch.setMeasurementError(100); //从数据集中获取轨迹点 java.util.Listcoordinates = this.getTrackPointFromDataset(DatasetPoint, "Time"); //进行地图匹配 MapMatchingResult res = mapmatch.batchMatch(coordinates); // 释放分析对象 SSCSetting.dispose(); mapmatch.dispose(); } //从数据集中获取轨迹点 private java.util.List getTrackPointFromDataset(DatasetVector dataset, String s) { java.util.List points = new ArrayList (); // 点集合 if (dataset.getType() == DatasetType.POINT) { int count = dataset.getRecordCount(); Recordset recordset = dataset.getRecordset(false, CursorType.STATIC); recordset.moveFirst(); for (int i = 0; i < count; i++) { TrackPoint point = new TrackPoint(); Point2D pt = recordset.getGeometry().getInnerPoint(); point.setPoint(pt); point.setTime((Date) recordset.getFieldValue(s)); points.add(point); recordset.moveNext(); } recordset.dispose(); return points; } return null; }
public MapMatchingLikelyResult[] match(TrackPoint coordinate, boolean isNewTrack)
注意:需要至少两个轨迹点才能进行实时地图匹配分析。
coordinates
- 待匹配轨迹点。isNewTrack
- 是否开启新的轨迹。//从数据集中获取轨迹点 private java.util.ListgetTrackPointFromDataset(DatasetVector dataset, String s) { java.util.List points = new ArrayList (); // 点集合 if (dataset.getType() == DatasetType.POINT) { int count = dataset.getRecordCount(); Recordset recordset = dataset.getRecordset(false, CursorType.STATIC); recordset.moveFirst(); for (int i = 0; i < count; i++) { TrackPoint point = new TrackPoint(); Point2D pt = recordset.getGeometry().getInnerPoint(); point.setPoint(pt); point.setTime((Date) recordset.getFieldValue(s)); points.add(point); recordset.moveNext(); } recordset.dispose(); return points; } return null; } public void testMatch() { // 0、打开工作空间或者数据源,得到网络数据集 Datasource datasource = datasources.open(getDatasourceConnectionInfo()); DatasetVector edgeDataset = (DatasetVector) datasource.getDatasets().get("TJ_Small"); DatasetVector DatasetPoint = (DatasetVector) datasource.getDatasets().get("tianjin"); //设置SCC文件路径 String filePath = "/MapMatch_TJ_Small.ssc"; //设置路径规划环境 SSCPathAnalystSetting SSCSetting = new SSCPathAnalystSetting(); SSCSetting.setNetworkDataset(edgeDataset); SSCSetting.setSSCFilePath(filePath); SSCSetting.setTolerance(0.1); // GPS预处理参数设置 MapMatching mapmatch = new MapMatching(); mapmatch.setPathAnalystSetting(SSCSetting); mapmatch.setMaxLimitedSpeed(150); mapmatch.setMeasurementError(30); //从数据集中获取轨迹点 java.util.List coordinates = this.getTrackPointFromDataset(DatasetPoint, "Time"); //进行实时地址匹配 for (int i = 0; i < DatasetPoint.getRecordCount(); i++) { MapMatchingLikelyResult[] res = mapmatch.match(coordinates.get(i), false); } // 释放分析对象 SSCSetting.dispose(); mapmatch.dispose(); }
public DatasetVector batchMatch(DatasetVector sourceDataset, java.lang.String idField, java.lang.String timeField, double splitTimeMilliseconds, Datasource outputDatasource, java.lang.String outputDatasetName, java.lang.String resultTrackIndexField)
sourceDataset
- 原始轨迹点数据集。idField
- 轨迹的 ID 字段,相同 ID 值相同的轨迹点属于一条轨迹,比如手机号、车牌号等。没有指定 ID 字段时,数据集中所有点将归类为一条轨迹。timeField
- 轨迹点的时间字段,必须为时间或时间戳类型字段。splitTimeMilliseconds
- 分割轨迹的时间间隔,如果时间相邻的两个点的时间间隔大于指定的分割轨迹的时间间隔,则会从两个点间分割轨迹。outputDatasource
- 保存结果数据集的数据源。outputDatasetName
- 结果数据集名称。resultTrackIndexField
- 保存轨迹索引的字段,轨迹分割后,一条轨迹可能分割为多条子轨迹,resultTrackIndexField 将会保存子轨迹的索引值,值从1开始。
因为结果数据集会保存源轨迹点数据集的所有字段,所以必须确保 resultTrackIndexField 字段值在源轨迹点数据集中是没有被占用。
public void testbatchMatch(Datasource datasource) { // 0、打开工作空间或者数据源,得到网络数据集 DatasetVector edgeDataset = (DatasetVector) datasource.getDatasets().get("SD_linyi"); DatasetVector DatasetPoint = (DatasetVector) datasource.getDatasets().get("linyi"); //设置SCC文件路径 String filePath = "/MapMatch_SD_linyi.ssc"; //设置路径规划环境 SSCPathAnalystSetting SSCSetting = new SSCPathAnalystSetting(); SSCSetting.setNetworkDataset(edgeDataset); SSCSetting.setSSCFilePath(filePath); SSCSetting.setTolerance(0.1); // GPS预处理参数设置 MapMatching mapmatch = new MapMatching(); mapmatch.setPathAnalystSetting(SSCSetting); mapmatch.setMaxLimitedSpeed(150); mapmatch.setMeasurementError(30); //进行地图匹配 DatasetVector newDataset = mapmatch.batchMatch(DatasetPoint, "NewField", "Time", 3600000, datasource, "del_resultSD", "TrackIndex"); // 释放分析对象 SSCSetting.dispose(); mapmatch.dispose(); }
|
|||||||||
上一个类 下一个类 | 框架 无框架 | ||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |