インデックス レイヤー の履歴データを読み取ります
このチュートリアルでは、インデックス レイヤーの履歴データを読み取る方法について説明します。 この例では、インデックス レイヤーの歴史的なパーティション分割で、 24 時間の時間的なパーティションと、ズーム レベル 12 の HERE タイルング方式による空間的なパーティション分割を使用しています。 timeWindow 列には 1 日につき 1 つのエントリがあり、各日に複数の HERE Tile ズームレベル 12 のエントリがあります。
インデックス レイヤー から読み取る場合、特定の制限が適用されます。 制限事項および既知の制限事項の詳細については、Data API 開発者ガイドを参照してください。
プロシージャ
カタログからデータを取得するに data-engine
は、プロジェクトへの依存関係としてモジュールを追加します。
data-engine
このモジュールで data-client
は、 HERE platform データを操作するときに、の最上位に概要レベルの抽象化を提供します。 このモジュールでは、メタデータ とデータの両方を読み取り、管理できます。
データエンジンモジュールをプロジェクトへの依存関係として追加する方法の詳細については、『データ クライアント ライブラリ ガイド』を参照してください。
インデックス レイヤー の履歴データを読み取るには、 timeWindow
およびのフィールド tileId
を設定する必要があります。
-
timeWindow
- 1970 年初頭以降のミリ秒数を示す値を設定します (TIMEWINDOW データ型ごと ) 。 インデックスフィールドとして使用する場合、このフィールドにはデータダウンロードの 24 時間の開始時間を設定する必要があります。 -
tileId
–レベル 12 の HEREtile ID に設定します。タイル ID および HEREtile タイリングスキームの詳細については、「 HERE Lanes 」を参照してください。
コード
次のコード スニペット では、 HERE プローブデータカタログの履歴インデックス レイヤー からデータを読み取る方法を示します。
package com.here.paap.local
import akka.NotUsed
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{ Sink, Source }
import com.here.hpd.schema.v1.probe_tile.ProbePoint
import com.here.hrn.HRN
import com.here.paap.util.AkkaImplicit
import com.here.platform.data.client.engine.scaladsl.DataEngine
import com.here.platform.data.client.model.{ HereTileIndexValue, TimeWindowIndexValue }
import com.here.platform.data.client.scaladsl.{ DataClient, IndexPartition }
import scala.concurrent.duration.Duration
import scala.concurrent.{ Await, ExecutionContext, Future }
object IndexLayerReader extends App {
implicit val system = ActorSystem("probe-services")
implicit val mat = ActorMaterializer()
implicit val ec = ExecutionContext.global
lazy val catalogHrn = "hrn:here:data::olp-here-probe:prasadsurve-3aartexkhyaz8ekcw1jau4yk8xqw1kqhf"
lazy val layerId = "prasadsurve-3aartexkhyaz8ekcw1jau4yk8xqw1kqhf-0"
val queryApi = DataClient().queryApi(HRN(catalogHrn))
val readEngine = DataEngine().readEngine(HRN(catalogHrn))
val queryString = "timeWindow==1640908800000;tileId==1476147"
val partitions = fetchIndexPartitions(queryString)
partitions
.map(partition => {
loadDrives(partition)
})
.runWith(Sink.ignore)
val parallelism = 10
def fetchIndexPartitions(baseQuery: String): Source[IndexPartition, NotUsed] = {
println(baseQuery)
implicit val ec = AkkaImplicit.ec
val driveMessages = queryApi.queryIndex(layerId, Some(baseQuery))
Await.result(driveMessages, Duration.Inf)
}
def loadDrives(partition: IndexPartition): Unit = {
val bytes = readEngine.getDataAsBytes(partition)
val dataF = bytes
.map(partitionData => {
val tileId = partition.fields.get.getOrElse("tileId", "").asInstanceOf[HereTileIndexValue].tile
val timeWindow = partition.fields.get.getOrElse("timeWindow", "").asInstanceOf[TimeWindowIndexValue].time
val probeData = ProbeData.parseFrom(partitionData)
println(
s" TILE_ID = ${tileId}, TIME_WINDOW = ${timeWindow}, PROBE DATA SIZE = ${probeData.probepoints.size}, DATA = ${probeData.probepoints.take(10)} "
)
})
Await.result(dataF, Duration.Inf)
}
}
返送
次の例は、上記のコード スニペット から返された内容のサンプルです。
TILE_ID = 1476147, TIME_WINDOW = 1640822400000, PROBE DATA SIZE = 187671, DATA = Vector(ProbePoint(166.0,52.5314333,13.1548266,2KAtw1LTqqgthruZKxDEg,Some(Timestamp(1640891599,0)),42,), ProbePoint(346.0,52.5269383,13.1604431,2KAtw1LTqqgthruZKxDEg,Some(Timestamp(1640891959,0)),57,), ProbePoint(18.0,52.550941,13.1652703,2KAtw1LTqqgthruZKxDEg,Some(Timestamp(1640892289,0)),0,), ProbePoint(259.0,52.4583141,13.3319228,ac1FLlQKRFu2pzIWowDgDg,Some(Timestamp(1640888898,0)),44,), ProbePoint(208.0,52.4616646,13.3243461,ac1FLlQKRFu2pzIWowDgDg,Some(Timestamp(1640889228,0)),0,), ProbePoint(325.0,52.461683,13.3237886,ac1FLlQKRFu2pzIWowDgDg,Some(Timestamp(1640889288,0)),0,), ProbePoint(180.0,52.5275811,13.3432411,JToKOxTTjahquXZ04p26Q,Some(Timestamp(1640887309,0)),21,), ProbePoint(359.0,52.5273811,13.3433388,JToKOxTTjahquXZ04p26Q,Some(Timestamp(1640887369,0)),27,), ProbePoint(5.0,52.531732,13.3433613,JToKOxTTjahquXZ04p26Q,Some(Timestamp(1640887429,0)),34,), ProbePoint(236.0,52.5278053,13.2188525,Z3xV3JN1SQCMnvnJ5trtg,Some(Timestamp(1640889064,0)),49,))
このチュートリアルで表示されるプロパティの詳細については、 HERE プローブデータカタログの仕様を参照してください。