第1章 実世界のモデル化と形式化 4.空間スキーマ 2011-02-15 第1章 実世界のモデル化と形式化 4.空間スキーマ 太田守重 morishige_ota@kkc.co.jp
ここで学ぶこと ほとんどの地物は空間的な性質をもつ。例えば、建物はその外形を示す多角形をもって、空間的な性質とするかもしれない。また台風は、時点毎の勢力範囲をもって、空間的な性質とするであろう。さらに、国境線のように、その場にいっても見えない地物もあるが、その線形は国境線の重要な性質となる。これらの空間属性は地球上の位置で示される幾何属性である。 ところで、あなたが道案内をするとき、どのように説明するであろうか。「この道をいくと、十字路があるので、右に曲がって3ブロックいくと、目的地です。」といった言い方をするかもしれない。この説明には、位置はないが、道、十字路、ブロックといった地物同士の関係で経路を示している。つまり、地物同士の空間関係が、経路の属性になっている。このような、位置を伴わない空間的な関係は、位相属性と呼ばれる。 ここでは、地物のもつ、幾何及び位相属性について学び、その形式表現及びインスタンスのXML表現について学ぶ。
空間スキーマとは 地物の空間属性を記述し、操作するためのスキーマ 初期の地理情報システムでは、典型的な空間属性は、地物の形状を表現する点、折れ線及び多角形であった。 今日では、これらを含む幾何及び位相を合わせて、空間属性と呼ぶ。 折れ線 多角形 これまでの地理情報システム(GIS)では、実世界の諸現象は図形とその他の属性の対で表現するとしてきた。地図の表現能力を考えればそれは当然のことであったと言える。しかし、実世界の存在は、様々な側面で語ることができる。例えば、「一番古い建物の名前が知りたい」という要求には、建物の竣工日と名称が使われ、この検索には図形は関与しない。つまり、位置や形状は、他の属性と同等の、実世界の現象を語る一つの側面といえる。しかし、空間属性は幾何や位相など複雑な構造、つまりスキーマをもつ。以後、空間スキーマの基礎を学ぶことになる。 点
地物の空間的な性質 位相(空間関係) “n” と “e” は地物同士の位相 (空間関係)属性. 配電線は電柱に接続する - e は nから始まり、nで終わる 地物 電柱 配電線 n1 – e1 – n2 – e2 – n3 – e3 – n4 地物の空間的な性質は幾何と位相に分けることができる。幾何は位置と形状を表現し、位相は幾何に潜む相互関係を表現する。例えば街に良くある配電網について考えてみよう。配電網は電柱と配電線からなる。電柱の幾何的な性質は「点」とすることができる。一方配電線は「曲線」と考えられる。また、その始点と終点は電柱の点と一致するであろう。これが配電網の幾何である。 ところで、配電網の電気が流れるためには、電柱を介して配電線どうしが連結していなければいけない。つまり、“連結”自体が配電網の重要な特性になる。これを表現するために位相属性が使われる。位相とは、弾性的な変形が加えられても変化しない性質のことを指す。例えば配電線の形状は、風が吹けば変化するが、切れない限り、連結の関係は保持される 位相属性では、電柱は配電線が出入りするノードと呼ばれ、出入りする配電線(エッジ)で表現される。配電線はエッジと呼ばれ、始点及び終点となるノードで表現される。ノードの位置やエッジの形状は、弾性的な変化が起きると変ってしまうので、位相属性の要素にはならない。 幾何 “p” と “c” は電柱と配電線 の幾何属性 p1 p2 p3 p4 c1 c2 c3 p には位置がある c はpから始まり、その形状を示す点列をもち、pで終わる。
2種類の空間属性 幾何属性 次元、位置、サイズ、形状及び方向を含む、地物の空間的な特性。幾何属性のデータ型は幾何オブジェクトと呼ばれ、地物の位置及び形状を表現する座標の組み合わせを含む。 位相属性 空間が弾性的かつ連続的に変形しても不変性を保つ幾何オブジェクトの特性。位相属性のデータ型は位相オブジェクトと呼ばれ、境界及び双対境界を含み、オブジェクト間の内側、外側関係を含む。 この講義では、2次元の位相空間(以下、2次元空間という)までを扱う。これは、平面にマッピングできる空間という意味であり、平面ではない。つまり、でこぼこな地形のように、3次元座標の集まりで表現する面は、平面上の点と一対一対応する((弾性的な変形を加えれば、平面になる)ので、2次元の位相空間と考える。地球のような球面は、理論的には一点を除けば平面に対応づけられるが、実用的には投影法を使って部分的に平面に対応させることができる。 ここでは2次元までの空間を対象とする。
応用スキーマに見られる幾何属性 Curve Point ランドマーク 道路網 交差点 建物 公園 道路 応用スキーマ 幾何スキーマ 種類: String 信号機あり : Boolean 応用スキーマ 応用スキーマに登場する地物は多くの場合幾何属性をもつ。例えばランドマークになる建物や公園など、また道路網のような線的な地物もある。しかも、この図にある「交差点」のように、道路の始点、終点になるようなものもある。つまり、幾何属性は位相的な性質も表現している場合がある。このような性質は、応用スキーマだけを見ても分からないことがあるが、幾何スキーマを理解することによって、より深い表現が可能になる。この例では、道路網のインスタンスを使うことによって、道路のつながりを追うことができるようになる。 幾何スキーマ 場所 中心線 Point Curve 位置
応用スキーマに見られる位相属性 道路網 交差点 名称:String 道路 延長:float Node Edge 応用スキーマ 位相スキーマ 応用スキーマ上の地物は位相属性をもつと、相互の関係が表現できるようになる。この例の場合、道路網の連結関係が表現され、かつ交差点間の道路の延長がわかるので、例えば、歩いて1時間以内に行ける範囲はどこまでか(交差点の名前を列挙する)、といった問いに素早く応えることができる。幾何属性でこれをやるには、事前に道路の延長を求める必要があり、そもそもデータ量がより多くなるので、応答時間が長くなる。 位相スキーマ 交差 リンク Node Edge
幾何プリミティブ 幾何プリミティブとは? 点 曲線 曲面 幾何プリミティブ これらは、単純な幾何プリミティブではない。 2次元空間中にある、それ以上不可分な幾何要素を幾何プリミティブという。幾何プリミティブには点、曲線、そして曲面がある。ここで、曲線及び曲面は自己交差しない単純な形状をもつものを指す。自己交差するものは、交差箇所で分断すると、単純な幾何プリミティブの集まりになる。 これらは、単純な幾何プリミティブではない。
幾何プリミティブとは 幾何プリミティブ: 幾何的な構成を表現する、不可分な幾何形状. GM_Primitive Point Curve Surface この講義において、幾何プリミティブはGM_Primitiveと表記するクラスと考える。点、曲線及び曲面は全て幾何プリミティブなので、GM_Primitiveはこれらの上位クラスとなる。しかし、地物の空間属性となるのは、点、曲線または曲面なので、GM_Primitiveはそれらがもつ共通的な性質をつかさどる抽象クラスである。共通的な性質には、例えば「境界の有無」がある。曲面の境界は輪になる。これは、始点と終点が一致する曲線、または曲線の列とも考えられる。曲線の境界は両端点である。一方点には境界はない。なお、境界自体はその幾何プリミティブには所属しないと考える。つまり、幾何プリミティブは境界の内側である。 点に境界はない 曲線の境界は二つの端点 曲面の境界は、閉じた曲線を構成する、向きをもった曲線の列
<<DataType>> 点 (Point) と、そのインスタンス Pointは位置 (position)をもつ. 位置は座標 (coordinates) で表現する. 座標成分 (components) の数は次元 (dimension) と呼ばれる。境界はもたないので、境界を求める操作 boundary() は、常にnullを返す。 GM_Primitive id: String Point position: Coordinate boundary(): Null 点のインスタンスのXML 表現 GM_Primitiveは他と区別するための識別子をもつ。点(Point)はそれを継承し、更に位置を属性とする。境界を求める操作の戻り値は常にnullである。位置は座標(Coordinate)によって示される。われわれは2次元の位相空間を対象としているが、座標自体は3次元、つまり三つの座標要素(component)の列までが許される。従って、この位置は何次元の幾何座標なのかを示す次元の数(dimension)も座標の属性となる。componentはカンマで区切られた数の列として表現する。従って、Pointのインスタンスを、すでに説明したルールに従ってXMLで表現すると、スライドに示すように表現できる。 なお、idに使う文字列の付番のための規則は徳に示されていないが、インスタンス集合の中で一意でなければいけない。 <Point id=“p001”> <position idref=“crd01”/> </Point> <Coordinate id=“crd01” component=“345.2,230.5” dimension=“2” /> <<DataType>> Coordinate component: Sequence<Number> dimension: Number
<<DataType>> 曲線 (Curve) GM_Primitive Curveは形状 (shape) 及び、始点(start) と終点 (end) への関連をもつ。 属性“shape” の型は座標の配列であり、曲線の内側を表現する。 id: String start Point Curve position: Coordinate shape: CoordinateArray end GM_Primitiveとしての曲線(Curve)は両端点を結ぶ形状(shape)で表現できるが、その最も単純な表現は、曲線の刺繍点を含まない座標列(CoordinateArray)である。しかし、どの始終点が境界になるかを示す、Pointへの関連(start, end)をもつ。 shape end <<DataType>> CoordinateArray start element: Sequence<Coordinate>
Curveのインスタンス p002 (15,5) (18, 6) p001 (10, 3) (5,2) <Curve id=“c1”> <association> <start idref=“p001” /> <end idref=“p002” /> </association> <shape idref=“sh01”/> </Curve> <Point id="p001"> <position idref=“c001”/> </Point> <Point id="p002"> <position idref=“c002” /> <CoordinateArray id=“sh01”> <sequence> <element idref=“c003” /> <element idref=“c004” /> </sequence> </CoordinateArray> <Coordinate id=“c001” component=“5,2” dimension=“2”/> <Coordinate id=“c002” component=“18,6” dimension=“2”/> <Coordinate id=“c003” component=“10,3” dimension=“2”/> <Coordinate id=“c004” component=“15,5” dimension=“2”/> Curveのインスタンスを、すでに示した規則に従ってXMLで表記すると、スライドのようになる。Curveは始点、終点を参照し、自らの形状を座標列として保持する。Curveは曲線なので、この表現は最も単純な曲線の表現ということになる。実際には、内挿法を使って、滑らかな曲線を定義することもできるが、それはより上級の講義の中で示されるであろう。
曲面 (Surface) とは? c3 c2 r2 c1 r1 向きがついた曲線は有向曲線といわれる。 曲面(Surface)は、境界線の内側として定義されている。境界線は輪になるが、2次元の位相空間では外側及び、場合によっては内側に境界線をもつ場合がある。輪自体は左回りの向きをもつと考えるが、境界線は左に内側をみる方向をもつとする。スライドに示した例の場合。c3を要素とする輪r2は(-c3)で表現できるが、曲面の内側境界は、(-r2)となる。また、外側境界は(+r1)であるが、これは(+c1, -c2)で表現される。つまり、 内側境界 = -r2 = -(-c3) = c3 外側境界 = +r1 = +(+c1, -c2) = (c1, -c2) と言える。 向きがついた曲線は有向曲線といわれる。 曲面は外側と、もしあれば内側の境界を示す、始点と終点が連結する有向曲線の列(輪)で記述できる。輪自体は必ず反時計まわりとする。上記の例では、外側境界は+ (+c1, –c2) 、内側境界は-(-c3)で示される。
Surface の境界 もともと曲線は、始点から終点への方向をもつ。 曲面の境界を構成する曲線は、異なる方向をもつ場合がある。そこで、曲線に向きの記号をもたせることで、方向をそろえることができる。 a ー b + この曲線は、有向曲線-aと+bの列で表現できる。 曲面が孤立した存在ならば、その境界は輪(つまり始点と終点が一致する単純な曲線)で定義すればいい。しかし、行政界線や土地利用境界など、多くの曲面は別の曲面と隣接し、部分的に同じ境界線を共有することがある。そのような場合、輪は、向きをもつ複数の曲線の列となる。また、一つの曲線が隣り合う曲面の境界線になるので、曲面との関係において、異なる向きをもつことになる。 S1 C +C S2 -C 曲面S1にとっては、Cは正方向、 曲面S2にとっては、反方向
Surfaceの構造 Surface s1=(+r1, -r2) s2=(+r2) c1 s1 c2 s2 c3 Ring GM_Primitive Surface s1=(+r1, -r2) s2=(+r2) id: String Curve Surface p1 shape: CoordinateArray original c1 s1 p3 c2 s2 c3 OrientableCurve orientation: Sign 0..1 exterior Ring orientation: Sign これまでの説明で概要は示したが、ここではより厳密に、曲面の構造を明らかにする。SurfaceはGM_Primitiveのid属性を継承し、外側、及び内側の境界と関連づけられる。外側境界は通常一つの輪になる。ただし、外側の境界はない場合もある。例えば地球にとっての宇宙のように。外側境界(exterior)になるRingは正の方向をもち、内側境界(interior)になるRingは負の方向をもつ。Ring自体は、反時計まわりであるが、それに合わせるため、有向曲線(OrientableCurve)の列で表現される。有向曲線の元になるオリジナルな曲線(Curve)は座標列の示す方向をもつ。これが基本になって、輪の要素としての有向曲線の符号が決まる。なお、有向曲線も輪もGM_Primitiveである。 ところで、ここで説明した曲面は、本来立体的な形状でもかまわない。しかし、このクラス図では、境界線の要素になる座標が3次元になることを許す他、曲面の内側の凹凸形状を示す情報はない。つまり、東京ドームの屋根のような曲面(Spanning Surface)を表現することはできない。より上級の講義の中で、それは示されるであろう。 element 1..* interior 0..* p2 OrientableCurve oc1=+c1 oc2=-c2 oc3=+c3 Ring r1=(oc1, oc2) r2=(oc3)
SurfaceインスタンスのXML表現 c1 s1 c2 s2 c3 Surface s1=(+r1, -r2) s2=(+r2) Ring <Surface id="s1”> <association> <exterior idref="r1" /> </association> <interior idref="r2" /> </Surface> <Surface id=”s2"> <exterior idref=”r2" /> <Ring id="r1” orientation=“+”> <element idref="oc1" /> <element idref="oc2" /> </Ring> <Ring id="r2” orientation=“-”> <element idref="oc3" /> c1 s1 <OrientableCurve id="oc1" orientation="+"> <association> <original idref="c1"> </association> </OrientableCurve> <OrientableCurve id="oc2" orientation="-"> <original idref="c2"> <OrientableCurve id="oc3" orientation="+"> <original idref="c3"> c2 s2 c3 Surface s1=(+r1, -r2) s2=(+r2) この例に示された曲面インスタンスs1を、前のスライドに示したクラス図に従ってXML表記すると、右側のようになる。なお、Curveの表記は省略している。以上で幾何プリミティブの説明を終わる。 Ring r1=(oc1, oc2) r2=(oc3) OrientableCurve oc1=+c1 oc2=-c2 oc3=+c3 曲線の記述は省略
位相(Topology)とは? 位相:空間が弾性的かつ連続的に変形しても不変性を保つ幾何オブジェクトの特性。位相属性のデータ型は位相オブジェクトと呼ばれ、境界及び双対境界を含み、オブジェクト間の内側、外側関係を含む。 不変な特性 2 領域、 1 全体空間 3 境界 2 交差点 各交差点は3つの境界線が交わる 各境界線は2つの交差点を端点とする 各領域は2つの境界で構成される 位相(Topology)とは、形状が弾性的変形しても保たれる性質をさす。例えばこのスライドの例の場合、曲面(領域)とその外部の数、境界線の本数、交差点数などは変形があっても変らない。左側の図は東京の山手線と中央線で区切られる地域のようにも見えるが、これはギリシャ文字シータと同じ位相をもつ。同じ位相をもつ図形同士は同位相といわれる。
位相プリミティブ 位相プリミティブ:連続的かつ弾性的な変形を受けても不変の空間特性を示す、単純な不可分の空間オブジェクト 点、曲線、曲面,有向曲線、輪の位相はノード、エッジ、フェイス、有向エッジ、サイクルと呼ばれる。 TP_Primitive id: String start out right 0..* 幾何プリミティブの位相は、前のスライドでも示したような、図形とその境界の“関係”で記述できる。点、曲線、有向曲線、輪及び曲面の位相をつかさどる位相プリミティブはノ-ド(Node)、エッジ(Edge)、有向エッジ(DirectedEdge)、サイクル(Cycle)及びフェイス(Face)と呼ばれる。これらはTP_Primitiveの性質を継承する。ノードの位相は、出入りするエッジで示す。エッジの位相は、左右のフェイス、始点、終点になるノードで表現される。そして、フェイスの位相は、外部及び内部の境界になるサイクルで示される。 Node Edge Face 0..* end in original left exterior 1 0..* interior DirentedEdge orientation: Sign Cycle orientation: Sign 1..* element
位相プリミティブのインスタンス表現 e1 n4 n1 f2 e5 f3 e2 e4 f1 n2 n3 e3 <Edge id="e1"> <association> <start idref="n1"/> </association> <end idref="n4"/> <left idref="f3"/> <right idref="f2"/> </Edge> ・・・・・・以下省略 <Face id="f1"> <exterior idref="cy1"/> </Face> <Face id="f2"> <exterior idref="cy2/> <Face id="f3"> <interior idref="cy3"/> <Cycle id="cy1" orientation="+"> <association> <element idref="de31"/> <element idref="de22"/> <element idref="de52"/> </association> </Cycle> <Cycle id="cy2" orientation="+"> <element idref="de51"/> <element idref="de12"/> <element idref="de42"/> ・・・・・・以下省略 <DirectedEdge id="de11" orientation="+"> <original idref="e1"/> </DirectEdge> <DirectedEdge id="de12" orientation="-"> e1 n4 n1 f2 e5 f3 e2 e4 f1 n2 n3 e3 <Node id="n1"> <assoication> <out idref="e1"/> </association> <association> <in idref="e4"/> </Node> <Node id="n2"> <out idref="e4"/> <out idref="e5"/> <out idref="e3"/> <Node id="n3"> <in idref="e3"/> <in idref="e2"/> ・・・・・・以下省略 この例では、f1、f2が閉じたフェイスであるに対して、f3は外部境界をもたない開いたフェイスになっている。このスライドでは、背景の緑色でそれを強調している。この場合、f3の内部境界を表現するサイクルcy3は、以下のように、インスタンス表現することになる。 <Cycle id="cy3" orientation=”-"> <association> <element idref="de31"/> <element idref="de22"/> <element idref="de12"/> <element idref=“de42”/> </association> </Cycle>
まとめ 地物の空間的な特性を空間属性という。空間属性には幾何属性と位相属性がある。幾何属性は点、曲線及び曲面などが最も基本的な要素、つまり幾何プリミティブである。位相属性は、弾性的な変形があっての変らない性質を示すが、これはノード、エッジ及びフェイスなどで、表現することができる。 幾何属性は座標及び座標列をもつが、この講義では、2次元までの位相空間を対象としている。つまり、平面に写像できる三次元空間までが、対象となるので、三次元座標を扱うこともできる。
参考文献 有川正俊、太田守重監修(2007)『GISのためのモデリング入門』ソフトバンククリエイティブ 村山祐司,柴崎亮介監修(2008)『GISの理論』朝倉書店 (財)日本規格協会、JIS X 7107:2005 地理情報ー空間スキーマ