代码示例

本文介绍时空轨迹功能的使用示例。

1、示例下载

lindorm-mod-sample

下载解压后进入lindorm-sample目录。

mvn install -Dmaven.test.skip=true -s ../settings.xml

编译成功后,在target目录下生成 lindorm-mod-sample-1.0.0.jar。

2、使用示例

进入lindorm-sample目录。

java -jar target/lindorm-mod-sample-1.0.0.jar src/main/resources/template/mod_template.json

通过JSON文件指定操作和参数,JSON文件可参照示例mod_template.json。

2.1 写入数据

在mod_template.json中,设置写入参数。该示例指定AIS轨迹点数据集目录,读取数据并以分段二级索引模型存储轨迹,以ID为主索引,xz2t为二级索引创建表 "traj"并写入数据。分段策略为每50个点划分一段(目前支持BY_DURATION、BY_DISTANCE、BY_ANGLE、BY_COUNT四种分段策略,可以通过修改MOD.java中的SplitConfigs设置,使用其它分段策略)。

{
  "operation" : "WRITE",
  "zk_address" : "your_zk_address",
  "catalog" : "example",
  "schema" : "traj",
  "enable_secondary_index" : "true",
  "print_info": "false",
  "enabled_indices" : "id,xz2t",
  "primary_index" : "id",
  "thread_num": 8,
  "input_dir": "path_to_repository/lindorm-sample/src/main/resources/data/traj",
}

"enabled_indices" 指定需要创建的索引(索引类型参见创建索引表),注意需要设置"enable_secondary_index" 为true才能使用二级索引,并设置"primary_index"指定其中的主索引。"thread_num"设置写入数据时的并行线程数,默认为1。

然后执行sample写入。

java -jar target/lindorm-mod-sample-1.0.0.jar src/main/resources/template/mod_template.json

2.2 查询数据

在mod_template.json中设置查询参数,使用示例代码默认的查询范围。

{
  "operation" : "QUERY",
  "zk_address" : "your_zk_address",
  "catalog" : "example",
  "schema" : "traj",
  "predicate" : "INTERSECTS(geom, POLYGON ((-76 28, -74 28, -74 30, -76 30, -76 28))) and traj_start_time >= 1549510271 AND traj_start_time <= 1549583941",
  "return_complete_trajectory" : "false",
  "print_results" : "true"
}

"predicate"设置查询语句,"return_complete_trajectory" 指定是否返回完整轨迹(分段存储的轨迹在查询时默认返回符合查询条件的轨迹段,需设定该参数为true才会返回完整轨迹)。

执行sample查询。

java -jar target/lindorm-mod-sample-1.0.0.jar src/main/resources/template/mod_template.json

可以看到返回显示的查询结果。