JIS X 7107:2005 地理情報-空間スキーマ | ページ 12

50
X 7107 : 2005 (ISO 19107 : 2003)
6.4.9.2 interpolation “interpolation”(内挿法)属性は,この曲線分に使用する曲線内挿法を指定する。
この内挿法は,このGMCurveSergmentの位置を決定するための制御点及び制御パラメタを使用する。
GMCurveSegment::interpolation : GMCurveInterpolation
6.4.9.3 numDerivatives “numDerivativesAtStart”(始点連続性級数)属性及び“numDerivativesAtEnd”(始
点連続性級数)属性は,この曲線分とその前後の曲線分との間の連続性の種類を定義し,最初の属性は直
前の曲線分との,第2の属性は直後の曲線分との連続性を扱う。曲線中の最初及び最後の曲線分では,こ
れらの値のうち適切なほうを無視する。“numDerivativesInterior”(内部連続性級数)属性は,曲線の内部で
保証される連続性の種類を定義する。既定値である“0”は,単純な連続を意味し,これは満たさなければ
ならない最低水準の連続性とする。この水準は,数学の文献では,“C0”として表されるものである。1の
値は,関数とその一次導関数が対応する端点同士で連続する,“C1”級の連続を意味する。任意の整数n
の値は,関数とそのn次までの導関数が連続する,“Cn”級の連続を意味する。
GMCurveSegment::numDerivativesAtStart [0,1]: Integer = 0;
GMCurveSegment::numDerivativesInterior [0,1]: Integer = 0;
GMCurveSegment::numDerivativesAtEnd [0,1]: Integer = 0;
備考 これらの値は,基本的な曲線の定義が限定されているシステム上でだけ,適切に使用すること
ができる。例えば,折れ線とその線分とでは,線分の端点で内部角を調整するような予備の制
御パラメタが存在しないので,C0より上の連続性に対応できない。一方,スプライン関数の場
合,端の曲線分がC1級又はそれ以上の連続性に対応するよう導関数の値を調整するため,しば
しば自由な次数を追加としてもつ。
6.4.9.4 samplePoint “samplePoint”(標本点取得)操作は,GMCurveSegment上にある点の値の順序配
列(GMPointArray)を返す。多くの場合,それらは,曲線分の構成に使用した制御点に関係した点とな
る。
GMCurveSegment::samplePoint() : GMPointArray
備考 曲線分のcontrolPointは,その形状を制御するために使用し,常にその曲線分上に存在している
わけではない。例えば,スプライン曲線の場合,曲線分は,幾つかのcontrolPointのベクトルの
重み付け和として表現する。それぞれの重み付け関数は,曲線上の点が対応するcontrolPoint
に最も接近して通過する区間におおむね対応する構造パラメタの区間内に最大値をもつ。これ
らの点は,重み付け関数の最大値における曲線の値で,曲線分の標本点となる。
6.4.9.5 boundary GMCurveSegmentの“boundary”(境界取得)操作は,GMCurveSegmentの端点が既
存のGMPointを必要とせず,境界が一時的に生成したGMPointを含んでよいことを除き,GMCurveの
境界取得操作と同様に操作する。
GMCurveSegment::boundary() : GMCurveBoundary
備考 上記のGMCurveBoundaryは,ほとんど常に二つの離れた位置となるが,GMCurveのように
GMCurveSegment自身も輪体となることができる。曲線分を集成(aggregate)したGMCurveの
startPoint及びendPointを除いて,境界に使用するすべての点が一時的である(戻り値として生
成される)ような状況はもっともありがちである。GMCurveがGMComplexの一部である場
合,これら二つの位置(GMCurveのstartPoint及びendPoint)は,同じGMComplexに含まれ
るGMPointで表す。
6.4.9.6 reverse GMCurveSegmentの“reverse”(反転取得)操作は,単純に曲線分のパラメタ化の方向
性を反転させる。

――――― [JIS X 7107 pdf 56] ―――――

                                                                                             51
X 7107 : 2005 (ISO 19107 : 2003)
GMCurveSegment::reverse() : GMCurveSegment
6.4.10 GMLineString
6.4.10.1 意味 GMLineString(折れ線)(図16参照)は,おのおのがGMLineSegment (6.4.11参照)の
ようにパラメタ化した直線分の列からなる。このクラスは,本質的には,記憶領域を大幅に節約しつつ,
Sequence<GMLineSegments>を単一のオブジェクトに組み合せる。
6.4.10.2 controlPoint GMLineStringの“controlPoint”(制御点)属性は,曲線を直線的に内挿するような
位置の列とする。この列の1点目はそのGMLineStringのstartPointとし,列の最後の点はGMLineString
のendPointとする。
GMLineString::controlPoint : GMPointArray
Abstract
GMCurveSegment
Type Type
GMLineString GMGeodesicString
+ controlPoint : GMPointArray + controlPoint : GMPointArray
+ GMGeodesicString(points[2..n] : GMPosition) : GMGeodesicString
+ GMLineString(points[2..n] : GMPosition) : GMLineString
+ asGMGeodesic() : Sequence<GMGeodesic>
+ asGMLineSegment() : Sequence<GMLineSegment>
Type Type
GMLineSegment GMGeodesic
+ GMGeodesic(point [2] : GMPosition) : GMGeodesic
+ GMLineSegment(point[2] : GMPosition) : GMLineSegment
--controlPoint列のすべての --controlPoint列のすべての点は, [{interpolation = "geodesic"}]
点は,双線型とする。 同一の測地線上に存在する。
図 16 直線,弧及び測地線による内挿法
6.4.10.3 GMLineString(コンストラクタ) “GMLineString”のコンストラクタは,点の列をとり,そ
れらの点をcontrolPointとするGMLineStringを構築する。
GMLineStringのコンストラクタは2点以上の位置をとり,それらを結ぶ適切な折れ線を生成する。
GMLineString::GMLineString(points[2..n] : GMPosition) : GMLineString
6.4.10.4 asGMLineSegment “asGMLineSegment”(線分型変換)操作は,折れ線を,それと等価な線
分の列に分解する。
GMLineString::asGMLineSegment() : Sequence<GMLineSegment>
6.4.11 GMLineSegment
6.4.11.1 意味 GMLineSegment(線分)は直線で結ばれた二つの異なるDirectPosition (startPoint及び
endPoint)からなる。したがって,そのinterpolation属性は,“linear”でなければならない。
GMGenericCurve::parameterization = c(s)の既定値は,次のようになる。
(L : Distance) = endParam startParam
c(s) = ControlPoint[1] + ((s-startParam)/L) * (ControlPoint[2] - ControlPoint[1])

――――― [JIS X 7107 pdf 57] ―――――

52
X 7107 : 2005 (ISO 19107 : 2003)
controlPoint配列の他のすべての点は,この直線上になければならない。GMLineSegmentの制御点は,
すべてその始点と終点との間の直線上になければならない。これらの2点の間には,他の位置を直線的に
内挿してよい。
備考 構造パラメタtが 0≦t≦1.0 となる線形内挿法で, c(0) = c.startPoint()及びc(1) = c.endPoint()と
すると次が成り立つ。
c(t) c0()(1 t) c)1(t
6.4.11.2 GMLineSegment(コンストラクタ) “GMLineSegment”のコンストラクタは,二つの位置を
とり,それらを結ぶ適切な線分を生成する。コンストラクタは,クラススコープをもつ。
GMLineSegment::GMLineSegment(point[2] : GMPosition) : GMLineSegment
6.4.12 GMGeodesicString
6.4.12.1 意味 GMGeodesicString(測地線列)は,測地線分の列からなる。このクラスは,本質的には,
記憶領域を大幅に節約しつつ,Sequence<GMGeodesic>を単一のオブジェクトに組み合わせる。
6.4.12.2 controlPoint GMGeodesicStringの“controlPoint”(制御点)属性は,このGMGeodesicStringを
用いている座標参照系のジオイド面又はだ(楕)円体面による測地線を使用して内挿した位置の列である。
これらの点の構成は,GMLineString (6.4.10.2参照)と同じとする。
GMGeodesicString::controlPoint : GMPointArray
GMGeodesicStringの内挿法は“geodesic”とする。
GMGeodesicString::interpolation : GMCurveInterpolation = “geodesic”
6.4.12.3 GMGeodesicString(コンストラクタ) “GMGeodesicString”のコンストラクタは複数の位置
をとり,使用している座標参照系のジオイド面又はだ(楕)円体面によって定義される測地線を用いて内挿
を行い,それらを結ぶ適切な測地線列を生成する。
GMGeodesicString::GMGeodesicString(points[2..n]:GMPosition):GeodesicString
6.4.12.4 asGMGeodesic “asGMGeodesic”(測地線型変換)操作は,測地線列を等価な測地線分の列に
分解する。
GMGeodesicString::asGMGeodesic() : Sequence<GMGeodesic>
6.4.13 GMGeodesic
6.4.13.1 意味 GMGeodesic(測地線)は,測地曲線で結ばれた二つの異なる位置からなる。GMGeodesic
の制御点は,すべてが始点と終点との間を結んだ測地線上になければならない。それら2点の間では,座
標参照系が使用するだ(楕)円体又はジオイドモデルによって定義した測地曲線を他の位置の内挿に使用し
てよい。そのcontrolPointの他のすべての点はこの測地線上になければならない。
6.4.13.2 interpolation GMGeodesicの“interpolation”(内挿法属性)は“geodesic”とする。
GMGeodesic::interpolation : GMCurveInterpolation = “geodesic”
6.4.13.3 GMGeodesic(コンストラクタ) GMGeodesicのコンストラクタは,二つの位置をとり,それ
らを結ぶ適切な測地線を生成する。コンストラクタは,クラススコープをもつ。
GMGeodesic:: GMGeodesic(point[2] : GMPosition) : GMGeodesic
6.4.14 GMArcString
6.4.14.1 意味 GMArcString(弧列)(図17)は,内挿法に円弧を使用することを除いてGMLineString
と同様とする。円弧の決定には,3点が必要であるため,controlPointは,各弧の始点,始点と終点との間
のある点及び各弧の終点という三つのGMPositionの集合の,点の重複を含んだ列として扱う。各弧の終
点は,次の弧の始点となるため,controlPointの列では重複点のGMPositionは,繰り返さない。

――――― [JIS X 7107 pdf 58] ―――――

                                                                                             53
X 7107 : 2005 (ISO 19107 : 2003)
6.4.14.2 numArc “numArc”(弧数)属性はこの列における円弧の数とする。内挿法は,三つの位置の重
複を含んだ集合が必要なため,弧の数はcontrolPointの数を決定する。
GMArcString::numArc : Integer = ((controlPoint.length 1)/2)
6.4.14.3 controlPoint “controlPoint”(制御点)属性は,この列における弧を制御するために使用する点
の列とする。この列の最初の三つのGMPositionは,最初の弧を決定する。奇数番目で始まる三つの連続
したGMPositionは,いずれもこの列の別個の弧を決定する。
GMArcString::controlPoint : GMPointArray [{size = 2 * numArc + 1}]
6.4.14.4 interpolation GMArcStringの“interpolation”(内挿法)属性は,“circularArc3Points”とする。
GMArcString::interpolation : GMCurveInterpolation = “circularArc3Points”
6.4.14.5 GMArcString (コンストラクタ) GMArcStringのコンストラクタは,GMPositionで定義し
た点の列をとり,それらを結ぶ3点弧の列を生成する。弧列の性質から,列は,必ず奇数個の位置を含む。
GMArcString::GMArcSting( point[3,5,7...] : GMPosition): GMArcString
Abstract
GMCurveSegment
Type Type
GMArcString GMArcStringByBulge
+ numArc : Integer + bulge : Sequence<Real>
+ control Point : GMPointArray + numArc : Integer
+ normal : Sequence<Vector>
+ GMArcString(point[3, 5, 7,..] : GMPosition)
: GMArcString + GMArcStringByBulge(point[2..n] : GMPosition,
+ asGMArc() : Sequence<GMArc> bulge[1..n] : Real, normal[1..n] : Vector)
: GMArcStringByBulge
+ asGMArcString() : GMArcString
[{interpolation = "circularArc3Points"}]
[{controlPoint.count = 2 * numArc + 1}]
[{interpolation = "circularArc2PointWithBulge"}]
[{bulge.count = normal.count = numArc}]
-- 原国際規格では属性名がcontrolPoints
となっているが,本文の記述と整合させるた
めcontrolPointとした。
Type Type
GMArc GMArcByBulge
+ GMArc(point[3] : GMPosition) : GMArc + GMArcByBulge(point[2] : GMPosition, bulge : Real,
+ GMArc(point[2] : GMPosition, bulge : Real, normal : Vector) : GMArcByBulge
normal : Vector) : GMArc
+ center() : DirectPosition
+ radius() : Distance
+ startOfArc() : Bearing
+ endOfArc() : Bearing --すべての円弧は同一の円上にある
Type -- controlPoint列のすべての点は同一の円上にある
GMCircle
+ GMCircle(point[3] : GMPosition) : GMCircle
+ GMCircle(center : GMPosition, -- controlPoint列の始点と終点とは同一である
radius : Distance) : GMCircle
図 17 弧

――――― [JIS X 7107 pdf 59] ―――――

54
X 7107 : 2005 (ISO 19107 : 2003)
6.4.14.6 asGMArc “asGMArc”(弧型変換)操作は,この弧列と幾何的に等しい弧の列を生成する。
GMArcString::asGMArc() : Sequence<GMArc>
6.4.15 GMArc
6.4.15.1 意味 GMArc(弧)は,3点で定義され,その3点によって決まる円の,1点目から始まり2
点目を通って3点目に至る弧からなる。3点が同一直線上にある場合,弧は3点折れ線となり,中心,半
径,始角及び終角の値を返すことはできない。
備考 モデル上では,GMArcは,ただ一つの弧から成り立つ単純な弧列としてGMArcStringの下位
クラスとなる。これは,しばしば上位クラスよりその下位クラスが(追加的なメソッド及び属
性を伴って)複雑になると考えられるという意味で直観的でないかもしれない。GMArcは,
より少ないデータしかもたないためGMArcStringより単純ではあるが,それが“中心”,“始角”
及び“終角”といった幾何情報を返すことができるという点ではより複雑になる。この追加計
算の複雑さのため,この方法での下位クラス化が必要となる。加えて,“is type of”(の型で
ある)の意味は,この方向だけに作用する。
その最も単純な表現において,GMArcのcontrolPoint列中の3点は,弧の始点,始点でも終点でもない
弧上の点,及びGMArcの終点の順になければならない。
GMArc::controlPoint : GMPointArray = < startPoint : GMPosition,
midPoint : GMPosition,
endPoint : GMPosition>
追加の点を与える場合,すべての点は,制御点配列における同一直線上にない3点によって定義される
円周上になければならない。すべての点は,同一の円周上になければならず,controlPoint配列において弧
上でそれらが発生する順に指定しなければならない。
備考 controlPoint列の中央のGMPositionを示す“midPoint”(中点)という用語は,GMPositionが
円弧の幾何的中点であることを要求するものではない。このことは,このGMPositionにとっ
て計算上の安定性の見地から最良の選択ではあるが,数学的作用に絶対必要というわけではな
い。
6.4.15.2 GMArc(コンストラクタ) “GMArc”のコンストラクタは,三つの位置をとり,対応する
弧を生成する。
GMArc::GMArc(point[3] : GMPosition): GMArc
GMArcのコンストラクタの二つ目は,二つの位置並びに弧の中点から弦の中点への差を表現する距離
及び方向をとり,対応する弧を形成する。
GMArc::GMArc(point[2] : GMPosition, bulge : Real, normal : Vector) : GMArc
得られる弧の中点は,次のように与えられる :
midPoint = ((startPoint + endPoint)/2.0) + bulge*normal
二次元座標参照系では,bulge (膨らみ幅)は符号をもち,normal(法線)は弧の始終点間の線分(弧
の弦)に直交し,左を向くものとする。
例 2点をP0 = (x0,y0) 及び P1 = (x1,y1) とし,膨らみをbとすると,P0からP1への方向ベクトル
は,次の式で与えられる :

――――― [JIS X 7107 pdf 60] ―――――

次のページ PDF 61

JIS X 7107:2005の引用国際規格 ISO 一覧

  • ISO 19107:2003(IDT)

JIS X 7107:2005の国際規格 ICS 分類一覧

JIS X 7107:2005の関連規格と引用規格一覧

規格番号
規格名称
JISX7111:2014
地理情報―座標による空間参照