単位の管理は、ilog.views.maps パッケージに含まれる次の 3 つのクラスで行います。
- IlvAngularUnit (角度を測定する)。
- IlvLinearUnit (長さを測定する)。
これらのクラスは、角度と距離の測定単位を明確に区別しなかった以前の
ilog.views.maps.IlvUnitConverter
に代わるものです。単位は、物理量を計測する単純な参照システムです。通常、それぞれの種類の単位にはカーネル単位が定義されています。角度のカーネル単位はラジアンで、長さのカーネル単位はメートルです。これで派生単位の変換が容易になります。
単位は座標系の各軸に付加されています。つまり、座標系内で、縦座標を異なる座標で表すことができます。例えば、地理座標を使用して、x および y 縦軸を度数で表し、z 縦軸 (例えば、楕円体の高さに対応) をメートルで表すことができます。通常、座標系では、同じ単位を使用してすべての同じような物理量を表します (例えば、すべての角度を度数で表します)。
この例のソース・コード一式は、以下のファイルにあります。
定義済みの単位
パッケージには長さと度数の両方を計測するための定義済み単位一覧があります。定義済み単位はその略称で参照されます。関連クラスのスタティック・インスタンスか、またはスタティック・メソッド GetRegisteredUnit のいずれかを使用して、定義済み単位コンバーターにアクセスできます。
JViews Maps で提供されている定義済みの角度および長さの単位については、次の一覧を参照してください。
定義済みの角度単位
略称 |
単位名 |
カーネル単位変換 |
---|---|---|
rad |
ラジアン |
1.0 |
deg |
度 |
PI / 180 |
grad |
グラード |
PI / 200 |
定義済みの長さの単位
略称 |
単位名 |
カーネル単位変換 |
---|---|---|
km |
キロメートル |
1000.0 |
m |
メートル |
1.0 |
dm |
デシメートル |
0.1 |
cm |
センチメートル |
0.01 |
mm |
ミリメートル |
0.0010 |
kmi |
国際海里 |
1852.0 |
イン |
国際インチ |
0.0254 |
ft |
国際フィート |
0.3048 |
yd |
国際ヤード |
0.9144 |
mi |
国際法定マイル |
1609.344 |
fath |
国際尋 |
1.8288 |
ch |
国際チェーン |
20.1168 |
link |
国際リンク |
0.201168 |
us-in |
米国測量局のインチ |
0.025400050800101603 |
us-ft |
米国測量局のフィート |
0.304800609601219 |
us-yd |
米国測量局のヤード |
0.914401828803658 |
us-ch |
米国測量局のチェーン |
20.11684023368047 |
us-mi |
米国測量局の法定マイル |
1609.347218694437 |
ind-yd |
インドのヤード |
0.91439523 |
ind-ft |
インドのフィート |
0.30479841 |
ind-ch |
インドのチェーン |
20.11669506 |
単位の定義
IlvUnit
クラスは、すべての単位のスーパークラスです。JViews Maps パッケージに、このクラスの 2 つの特殊バージョンが含まれています。- 長さを測る単位
- 角度を測る単位
新しい単位を定義するには、3 つのパラメーターを指定して、これら 2 つのクラスのインスタンスを新規に作成します。
- カーネル単位への変換係数 (単位を 1 つ定義する際に必要なカーネル単位の数)
- 単位の略称
- 単位の名称
例えば、以下のコードでは、メートルをフィートに変換する IlvLinearUnit のインスタンスを新規に作成します (1 ft=0.3048 メートルと想定)。
IlvLinearUnit unit = new IlvLinearUnit(0.3048, "ft", "International foot");
単位の使用
単位は、値間または座標系の単純な変換に使用できます。さまざまな標準単位が、JViews Maps パッケージの組み込み単位クラスに定義されています。これらの単位を取得するには、
IlvLinearUnit
および IlvAngularUnit
クラスの定義済み静的メンバー (これらは、最もよく使用される単位です) かまたは GetRegisteredUnit メソッドを使用します。単純な単位変換
例えば、メートルをフィートに変換する場合に、次に示すフィートのスタティック定義を使用することができます。
IlvLinearUnit unit = IlvLinearUnit.FT; double meters = 100D; double feet = unit.fromMeters(meters); System.out.println("100 m = " + feet + " ft"); // The following is also valid, as the kernel unit for lengths // is the meter. double other_feet = unit.fromKernel(meters); System.out.println("100 m = " + feet + " ft");
または、登録されたバージョンを使用します。
IlvUnit unit = IlvUnit.GetRegisteredUnit("ft"); double meters = 100D; double feet = unit.fromKernel(meters); System.out.println("100 m = " + feet + " ft");
単位の標準変換について、
IlvUnit
クラスは次のメソッドを定義します。- toKernel メソッドは、単位をカーネル単位に変換します。
- fromKernel メソッドは、カーネル単位から特定の単位に変換します。
さらに、
IlvLinearUnit
クラス (あるいは IlvAngularUnit
) では、明示的にメソッドを呼び出す必要のあるアプリケーションに toMeters および fromMeters メソッド (それぞれ、toRadians
メソッドと fromRadians
メソッド) を定義します。座標系における単位
単位は座標系の定義の一部です。つまり、すべての座標系は、軸の単位で構成されている必要があります。座標系に単位を定義すると、変換ファクトリーは後続のアフィン変換を自動的に追加して、変換パスの座標を変換することができます。