OLR での作業 OLR には、さまざまな位置参照タイプがあります。 これらのタイプは、に組み込ま OpenLRLocationReference
れています。
ロケーション ライブラリは、次の場所に統一されたインターフェイス / 特性を提供します。 ReferencingLocation
ロケーション ライブラリで使用できるタイプとそのマッピングは次のとおりです。
OLR タイプ ロケーション ライブラリタイプ GeoCoordinateLocationReference
GeoCoordinateLocation
RectangleLocationReference
RectangleLocation
GridLocationReference
GridLocation
CircleLocationReference
CircleLocation
PolygonLocationReference
PolygonLocation
LinearLocationReference
LinearLocation
ClosedLinearLocationReference
ClosedLinearLocation
PointAlongLineLocationReference
AccessPoint
POIWithAccessPointLocationReference
PointOfInterest
注 : TISA OLR と TomTom OpenLR の比較 TISA OLR と TomTom OpenLR の違いは、仕様の履歴に関連しています。 TomTom は OpenLR 仕様を TISA に送信しました。 TISA SP14006 (TPEG2) 標準シリーズのパート 22 として、 TISA によって若干変更された形式で採用されました。 TISA 規格は、後で ISO 21219-22 : 2017 のように変更されることなく採用されました。
TISA 標準では、省略形の OLR (OpenLR Location Referencing) を使用して、この位置参照メソッドを記述します。
TISA の採用の一部として、標準は TPEG2 シリーズの標準で使用されている規則および規則に合わせて変更されました。 参照の概念と情報は同じですが、 TISA バージョンではいくつかの異なるフィールド名が使用され、バイナリおよび XML の表現は TomTom OpenLR バージョンで使用されているものとはわずかに異なります。 これは、バイナリレベルまたは XML レベルで相互運用できない 2 つのバージョンの標準があることを意味します。
ロケーション ライブラリでの実装は、 OLR 参照のマーシャリングおよびアンマーシャリングに関する TISA OLR (および ISO 21219-22:2017 )仕様に準拠しています。 OLR または OpenLR という用語を使用する場合は、必ず標準の TISA OLR バージョンを参照してください。
このセクションのスニペットでは、次のインポートが有効であることを前提としています。
import com. here. platform. location. referencing. _
import com. here. platform. location. tpeg2. olr. _
import com. here. platform. location. core. geospatial. GeoCoordinate ;
import com. here. platform. location. core. geospatial. GeoProjections ;
import com. here. platform. location. referencing. * ;
import com. here. platform. location. referencing. javadsl. LocationReferenceCreators ;
import com. here. platform. location. referencing. javadsl. LocationReferenceResolvers ;
import com. here. platform. location. tpeg2. olr. * ;
OLR 参照を作成して解決する最も簡単な方法 は、場所の種類に依存しない、LocationReferenceCreator
およびLocationReferenceResolver
をそれぞれ使用することです。 次のスニペットは、これらの抽象化の使用方法を示しています。
val location = GeoCoordinateLocation( 52.521864 , 13.413306 )
val reference: OpenLRLocationReference =
LocationReferenceCreators( optimizedMap) . olr. create( location)
println( LocationReferenceResolvers( optimizedMap) . olr. resolve( reference) )
final ReferencingLocation location = new GeoCoordinateLocation ( 52.521864 , 13.413306 ) ;
final OpenLRLocationReference reference =
new LocationReferenceCreators ( optimizedMap) . olr ( ) . create ( location) ;
System . out. println ( new LocationReferenceResolvers ( optimizedMap) . olr ( ) . resolve ( reference) ) ;
単一の種類の参照のみを使用している場合は、その種類の作成者およびリゾルバを使用する方が便利な場合があります。 一部の参照タイプは必ずしもマップに関連付けられているわけではありません。したがって、対応する作成者およびリゾルバのファクトリメソッドにはカタログは必要ありません。
OLR 参照タイプ OLR によって提供される参照タイプは、 2 つのカテゴリに分類されます。 ジオコード化の観点から、図形によって記述された位置を参照する参照があります。 また、道路ネットワーク内の場所、または を基準とした場所を参照する参照があります。
次の参照タイプは、形状シェイプによってサポートされています。
地理座標 Circle 矩形( Rectangle ) グリッド 多角形 次の参照タイプが道路ネットワークにバインドされています。
線形の位置 閉じた線形の位置です 直線に沿って点を指定します アクセスポイントを使用するジャンル別施設 地理座標位置参照 地理座標位置参照は、 WGS84 ジオコード化を使用して記述された、マップ内の単一のポイントを参照する単純な参照型です。 このタイプは道路ネットワークにバインドされておらず、正確な位置を示すために使用できます。
図 1. 地理座標位置リファレンスの表示 ジオコード化した座標の作成と解決 :
val geoCoordinate = GeoCoordinateLocation( 52.521864 , 13.413306 )
val reference: GeoCoordinateLocationReference =
LocationReferenceCreators. olrGeoCoordinate. create( geoCoordinate)
println( LocationReferenceResolvers. olrGeoCoordinate. resolve( reference) )
final GeoCoordinateLocation geoCoordinate = new GeoCoordinateLocation ( 52.521864 , 13.413306 ) ;
final GeoCoordinateLocationReference reference =
LocationReferenceCreators . olrGeoCoordinate ( ) . create ( geoCoordinate) ;
System . out. println ( LocationReferenceResolvers . olrGeoCoordinate ( ) . resolve ( reference) ) ;
円の位置の参照 円の位置参照は、円の中心と半径を定義するジオコード化された座標で円を記述します。 実際の例としては、信号範囲を持つ Wi-Fi ホットスポット、または近接検索で使用される中心と半径があります。 このタイプも道路ネットワークにバインドされていません。
図 2. 円の位置リファレンスの表示 円の参照を作成して解決します。
val circle = CircleLocation( 52.521864 , 13.413306 , 1000.0 )
val reference: CircleLocationReference = LocationReferenceCreators. olrCircle. create( circle)
println( LocationReferenceResolvers. olrCircle. resolve( reference) )
final CircleLocation circle = new CircleLocation ( 52.521864 , 13.413306 , 1000.0 ) ;
final CircleLocationReference reference = LocationReferenceCreators . olrCircle ( ) . create ( circle) ;
System . out. println ( LocationReferenceResolvers . olrCircle ( ) . resolve ( reference) ) ;
長方形の位置の参照 四角形の位置参照は、四角形の最南および最北の角のジオコード座標によって定義されます。 都市を含むボックスなど、長方形の領域の参照を作成するために使用できます。 このタイプは道路ネットワークにバインドされていません。
図 3. 矩形位置参照の表示 長方形参照を作成して解決します。
val boundingBox = RectangleLocation( 52.576042 , 52.422035 , 13.502779 , 13.194462 )
val reference: RectangleLocationReference =
LocationReferenceCreators. olrRectangle. create( boundingBox)
println( LocationReferenceResolvers. olrRectangle. resolve( reference) )
final RectangleLocation location =
new RectangleLocation ( 52.576042 , 52.422035 , 13.502779 , 13.194462 ) ;
final RectangleLocationReference reference =
LocationReferenceCreators . olrRectangle ( ) . create ( location) ;
System . out. println ( LocationReferenceResolvers . olrRectangle ( ) . resolve ( reference) ) ;
グリッド位置参照 グリッド位置の参照は、四角形の位置の参照と似ています。 列数で北に、行数で東に乗算される基本矩形を定義します。 たとえば、格子内のセルを使用して、降水量などのローカルの気象情報を符号化できます。
グリッド参照を作成して解決 :
val grid = GridLocation( 52.481352 , 52.470520 , 13.320212 , 13.289946 , 3 , 4 )
val reference: GridLocationReference = LocationReferenceCreators. olrGrid. create( grid)
val resolvedGrid = LocationReferenceResolvers. olrGrid. resolve( reference)
for {
row <- resolvedGrid. rectangles( SinusoidalProjection)
cell <- row
} println( cell)
final GridLocation grid = new GridLocation ( 52.481352 , 52.470520 , 13.320212 , 13.289946 , 3 , 4 ) ;
final GridLocationReference reference = LocationReferenceCreators . olrGrid ( ) . create ( grid) ;
final GridLocation resolvedGrid = LocationReferenceResolvers . olrGrid ( ) . resolve ( reference) ;
resolvedGrid
. getRectangles ( GeoProjections . sinusoidal ( ) )
. forEach ( row -> row. forEach ( System . out:: println ) ) ;
図 4. グリッド位置リファレンスの表示 ポリゴン位置の参照 多角形位置参照は、一連の地理座標ペアで表される交差しないシェイプを定義します。 多角形の位置参照の使用例としては、低放出ゾーン、交通量の多い領域、または建物の形状があります。
図 5. 多角形位置のリファレンスの表示 多角形参照を作成して解決します。
val polygon = PolygonLocation(
Seq(
GeoCoordinate( 52.506730 , 13.333547 ) ,
GeoCoordinate( 52.513119 , 13.331632 ) ,
GeoCoordinate( 52.518681 , 13.347873 ) ,
GeoCoordinate( 52.519508 , 13.374674 ) ,
GeoCoordinate( 52.512330 , 13.376650 ) ,
GeoCoordinate( 52.510150 , 13.345835 )
) )
val reference: PolygonLocationReference = LocationReferenceCreators. olrPolygon. create( polygon)
println( LocationReferenceResolvers. olrPolygon. resolve( reference) )
final PolygonLocation polygon =
new PolygonLocation (
java. util. Arrays. asList (
new GeoCoordinate ( 52.506730 , 13.333547 ) ,
new GeoCoordinate ( 52.513119 , 13.331632 ) ,
new GeoCoordinate ( 52.518681 , 13.347873 ) ,
new GeoCoordinate ( 52.519508 , 13.374674 ) ,
new GeoCoordinate ( 52.512330 , 13.376650 ) ,
new GeoCoordinate ( 52.510150 , 13.345835 ) ) ) ;
final PolygonLocationReference reference =
LocationReferenceCreators . olrPolygon ( ) . create ( polygon) ;
System . out. println ( LocationReferenceResolvers . olrPolygon ( ) . resolve ( reference) ) ;
線形位置参照 線形位置参照は、道路ネットワークの任意のパスを参照できます。 道路ネットワークで重要なパスをサポートする別の参照スキームは TMC です。 ただし、 OLR はどのような種類の定義済みテーブルにも依存しないため、柔軟性が高くなります。 これにより、 OLR 線形位置参照を使用して、道路ネットワークのほぼすべての部分を参照できます。
図 6. 線形位置リファレンスの表示 線形位置参照を作成して解決します。
val location: LinearLocation = findLinearLocation( optimizedMap)
val reference: LinearLocationReference =
LocationReferenceCreators( optimizedMap) . olrLinear
. create( location)
val resolvedLocation: LinearLocation =
LocationReferenceResolvers( optimizedMap) . olrLinear
. resolve( reference)
println( resolvedLocation)
final LinearLocation location = paths. findLinearLocation ( optimizedMap) ;
final LinearLocationReference reference =
new LocationReferenceCreators ( optimizedMap) . olrLinear ( ) . create ( location) ;
final LinearLocation resolvedLocation =
new LocationReferenceResolvers ( optimizedMap) . olrLinear ( ) . resolve ( reference) ;
System . out. println ( resolvedLocation) ;
閉じた線形の位置参照 図 7. 閉じた線形位置参照の表示 閉じた線形位置参照を作成して解決します。
val location: ClosedLinearLocation = findClosedLinearLocation( optimizedMap)
val reference: ClosedLinearLocationReference =
LocationReferenceCreators( optimizedMap) . olrClosedLinear
. create( location)
val resolvedLocation: ClosedLinearLocation =
LocationReferenceResolvers( optimizedMap) . olrClosedLinear
. resolve( reference)
println( resolvedLocation)
final ClosedLinearLocation location = paths. findClosedLinearLocation ( optimizedMap) ;
final ClosedLinearLocationReference reference =
new LocationReferenceCreators ( optimizedMap) . olrClosedLinear ( ) . create ( location) ;
final ClosedLinearLocation resolvedLocation =
new LocationReferenceResolvers ( optimizedMap) . olrClosedLinear ( ) . resolve ( reference) ;
System . out. println ( resolvedLocation) ;
直線に沿って点を配置します基準 図 8. 直線の位置の基準に沿った点の表示 直線参照に沿って点を作成して解決します。
val location: AccessPoint = findAccessPoint( optimizedMap)
val reference: PointAlongLineLocationReference =
LocationReferenceCreators( optimizedMap) . olrPointAlongLine
. create( location)
val resolvedLocation: AccessPoint =
LocationReferenceResolvers( optimizedMap) . olrPointAlongLine
. resolve( reference)
println( resolvedLocation)
final AccessPoint location = paths. findAccessPoint ( optimizedMap) ;
final PointAlongLineLocationReference reference =
new LocationReferenceCreators ( optimizedMap) . olrPointAlongLine ( ) . create ( location) ;
final AccessPoint resolvedLocation =
new LocationReferenceResolvers ( optimizedMap) . olrPointAlongLine ( ) . resolve ( reference) ;
System . out. println ( resolvedLocation) ;
アクセスポイントの位置情報を含む POI 図 9. アクセスポイントの位置参照を使用して POI を表示します アクセスポイント参照を使用して、主要施設( POI )を作成して解決します。
val location: PointOfInterest = findPointOfInterest( optimizedMap)
val reference: POIWithAccessPointLocationReference =
LocationReferenceCreators( optimizedMap) . olrPoiWithAccessPoint
. create( location)
val resolvedLocation: PointOfInterest =
LocationReferenceResolvers( optimizedMap) . olrPoiWithAccessPoint
. resolve( reference)
println( resolvedLocation)
final PointOfInterest location = paths. findPointOfInterest ( optimizedMap) ;
final POIWithAccessPointLocationReference reference =
new LocationReferenceCreators ( optimizedMap) . olrPoiWithAccessPoint ( ) . create ( location) ;
final PointOfInterest resolvedLocation =
new LocationReferenceResolvers ( optimizedMap) . olrPoiWithAccessPoint ( ) . resolve ( reference) ;
System . out. println ( resolvedLocation) ;