14. 空間スキーマ

14. 空間スキーマ
Morishige Ota (太⽥田守重)
at Chuo University
from April to July, 2015
クイズ 第12回について
⼈人⼝口密集地域はある
⼈人⼝口密集地域はない
⼈人⼝口密集地域
細かいメッシュで調べると,⼈人⼝口密
集地域はあるのですが,メッシュを
縦横倍のサイズにして平均すると,
⼈人⼝口密集地域はなくなります.調査
計画時に設定されたメッシュサイズ
は右の⼤大きい⽅方でした.この調査エ
リアに⼈人⼝口密集地域はあるでしょう
か? あなたの考えを述べなさい.
可変⾯面域単位問題
(Modifiable areal unit problem)
集計単位が変ると、特性も変る。
⼈人⼝口密集地域はあるはずだが,気まぐれで選ば
れた集計と表現の⼿手法に限界があるため,それ
が表現できないのではないか.
The issue was discovered in 1934 and later described in detail
by Stan Openshaw, who lamented that "the areal units (zonal
objects) used in many geographical studies are arbitrary,
modifiable, and subject to the whims and fancies of whoever is
doing, or did, the aggregating.”
https://en.wikipedia.org/wiki/Modifiable_areal_unit_problem
前回は何をしたか?
古来,地図は紙などに描かれていた.
今⽇日,地図はスマホ,タブレット,PCなどのスクリーンに描か
れ,描画されている地物の属性も表⽰示できる,
対話型地図 (Interactive map)になっている.
前回は,gittokの場合,
画像や映像などを検索索できる
対話型地図の設計と表現について学んだ.
今回は何をするか?
地物は位置,形(かたち),
そして形同士の連結関係など,
空間的な性質をもつ.
具体的にはどんな種類があるのか.
どのように記述するか. 空間スキーマ
地物の空間的な性質を記述するスキーマ
幾何および幾何同⼠士の接続関係をあわせて,空間属性と呼ぶ.
これが地物の空間的な性質
幾何
折れ線
多⾓角形
接続関係
点
孤⽴立立した点には線
は接続しない.
折れ線同⼠士は交点
で接続する.
多⾓角形は境界線で
囲まれる.
地物の空間的な性質(空間属性)
道路路網は道路路と交差点からなる.
地理理院地図
幾何
道路路の中⼼心線は,曲線(折れ線)
交差点は,点
幾何同⼠士の接続関係
交差点で複数の中⼼心線が接続する.
幾何プリミティブ
点
曲線
曲⾯面
2次元空間中にある,そ
れ以上不不可分な幾何要素
を幾何プリミティブとい
う.幾何プリミティブに
は点,曲線,そして曲⾯面
単純な幾何プリミティブ
がある.ここで,曲線及
び曲⾯面は⾃自⼰己交差や折り
畳みがない,単純な形の
⾃自⼰己交差
ものを指す.
折りたたみ
これらは,単純な幾何プリミティブではない.
SG_̲Primitive
不不可分な,開いた幾何形状を⽰示す抽
象クラス.その下位に点,曲線,及び
曲⾯面がある.「開いた」とは,それ
SG_Primitive
ぞれの要素が境界を含まない単純な
幾何であることを⽰示す. SG_Curve SG_Point 点に境界はない SG_Surface 曲線の境界は⼆二つの点 曲⾯面の境界は,閉じた曲線になる,
向きをもった曲線の列列 曲線
曲⾯面
境界点
境界線
点
境界は幾何プリミティブが参照する,1次元低い別の幾何プリミティブ.
点 (SG_̲Point)
点は幾何プリミティブで,位置 (position)をもつ.
gittok では,位置は2次元座標 (coordinate2) で
表現する.
点から曲線が出る (goOut) ことがあり,逆に⼊入る
(getIn)こともある.その数は0以上である.
Coordinate2 x: Number y: Number dimension: int = 2 2次元の座標といったって,
⻑⾧長さの単位は?原点は?
座標要素の基準となる座標系は
別に定義される. (09 参照
系)をみること).
曲線(SG_̲Curve)
曲線は形状 (shape) 及び,始点
(start) と終点 (end) への関連をも
つ.属性“shape” の型は座標の配
列列リスト(06 単純データ型と主題
属性、参照)であり,曲線の“内
側”を表現する.
shape
曲線って滑滑らかじゃないの?
end
start
では,c0級の曲線,
gittok
つまり,折れ線のみを扱う.
曲⾯面とは?
c3
r2
r2
r
1
c1
c2
r
1
閉じた境界線(輪輪)の進⾏行行⽅方向左側が曲⾯面.境界線は,向きがついた曲線,つまり有向
曲線である.曲⾯面は内側の境界をもつことがある.輪輪は要素となる曲線の列列である.曲
線がもともと左に⾯面の内側を⾒見見るように⽅方向付けられていれば,⾯面にとって,曲線の⽅方
向は+.上記の曲⾯面では,外側境界 (r1)の輪輪は (+c1, –c2) ,内側境界の輪輪(r2)は(+c3)で
⽰示される.なお,現状 gittok では内側の境界は実装できない.
曲⾯面の境界
もともと曲線は,始点から終点への⽅方向を
もつ. しかし,曲⾯面の境界を構成する曲線は,異異
なる⽅方向になる場合がある.そこで,曲線
に向きの記号をもたせて,⽅方向をそろえる. S1
a ー
b +
この曲線は,有向曲線-­‐aと+bの列列で表現
できる.
+C
C
-­‐C
S2
曲⾯面S1にとっては,Cは正⽅方向,
曲⾯面S2にとっては,反⽅方向
曲⾯面(SG_̲Surface)
SG_Surface (曲⾯面) は,幾何プリミティブであり,外側境界
(exterior)をもち,複数の内側境界 (interior) をもつことがあ
る.
⾯面の境界は輪輪(SG_Ring)であるが,これは,向き
(orientation)をもつ有向曲線 (SG_OrientableCurve)の列列
(element)で表現される.
曲線⾃自⾝身は,どの曲⾯面
の境界か知ってるの?
いまのままでは,
分かりません.今
後検討します.
曲線と曲⾯面の関係(双対境界)
S1
曲線からみると,曲⾯面は進
C
S2
⾏行行⽅方向を基準にして左側と
右側に曲⾯面がありうる.
これを双対境界という.
幾何複体とは?
互いに接続する幾何プリミティブの集りを,幾何
複体 (complex)という.ただし,幾何複体の要素
になるプリミティブ同⼠士は以下の条件を満たさな
ければいけない.
1. 要素となるプリミティブ同⼠士は共通部分をもた
ない.
2.幾何複体は境界となるプリミティブを含む.
例例えば,複数の筆で構成される街区の空間属性は,
幾何複体である.また,右図に⾒見見られるように,
複数の土地利用区域を含む領領域は,幾何複体で表
現できる.
幾何複体(SG_̲Complex)
SG_Complexは点,曲線及び曲⾯面それぞ
れの集合からなる,幾何データ全体の部
分集合である.最も単純な幾何複体は,
端点が⼀一致する曲線とその端点の組み合
わせである.
幾何オブジェクト(SG_̲Object)
幾何オブジェクト (SG_Object) は抽象クラス,
幾何クラスのルートクラス,
識識別⼦子 (id) ,地物インスタンスの識識別⼦子 (featureID) ,及び属性
(attributeName)の名称を,下位クラスに継承させる.
スクリーン上に表⽰示された地図に⽰示されるのは幾何属性であり,これ
が地物を代理理 (proxy) するときは, featureID を使って,地物インス
タンスを特定することができる.
空間スキーマ (Spatial Schema)
gittok の空間スキーマは,接合
関係(位相という)を含む幾何
プリミティブ及び幾何複体で構
成される.
応⽤用スキーマに⾒見見られる空間属性
空間属性は,応⽤用スキー
マの中で空間属性のデー
応⽤用スキーマ
道路路網 タ型になる.しかも,空
間属性は空間スキーマの
1..*
1..*
要素として独⾃自の構造を
交差点 道路路 位置:SG_Point
中⼼心線:SG_Curve
もつ.
右の例例では,応⽤用スキー
マでは交差点道路路の位置
と道路路の中⼼心線は関係な
いようにみえるが,
空間スキーマ
start
SG_Point
空間スキーマの中で接続
関係をもつ.
end
goOut
0..*
getIn
SG_Curve
0..*
点
曲線
点のXML表現
p3
SG_PointはSG_Primitive
及びその上位の
SG_Objectを継承し,位
置(position)をもち,⼊入
る曲線(getIn),出る曲線
スのidがfeatureIDの値に
なる.また,proxyにな
c2
p1
c1
<inheritance>
<SG_Primitive>
<inheritance>
p2
<SG_Object id="p1" featureID=”A” attributeName=“b”/>
もし,点が地物インスタ
ときは,そのインスタン
c3
<SG_Point>
(goOut)への参照をもつ.
ンスを代理理 (proxy) する
p4
</inheritance>
</SG_Primitive>
</inheritance>
<position>
<Coordinate2 component="35.70,139.73" dimension="2"/>
る属性の名称が
</position>
attributeNameの値にな
<getIn idref="c1,c3"/>
る.
<goOut idref="c2"/>
</SG_Point>
曲線のXML表現
SG_Curveは始点 (start),終点 (end) を
参照し,⾃自らの形状 (shape) を座標列列と
して保持する.
p1
<SG_Curve>
<inheritance>
<SG_Primitive>
<inheritance>
<SG_Object id=“c1" featureID="” atributeName=“” />
oc01
</inheritance>
p2
(15,5)
<SG_Primitive>
c1
</inheritance>
<start idref=“p1"/>
(10, 3)
<end idref=“p2"/>
oc11
<shape>
<CoordinateArray element=“10,3,15,5" dimension="2"/>
</shape>
<extend idref=“oc01, oc11"/>
extendの idref 要素数
</SG_Curve>
0: 両側に⾯面がない
1: 左右どちらかに⾯面がある
2: 両側に⾯面がある
曲⾯面のXML表現
c1
s1
c2
s2 c3
SG_Surface s1=(r1, r3) s2=(r2)
SG_Ring r1=(oc01, oc12) r2=(oc03) r3=(oc13) SG_OrientableCurve
oc01=+c1
oc12=-c2
oc03=+c3
oc13=-c3
<SG_Surface>
<inheritance>
・・・・・
</inheritance>
<exterior idref=”r1" />
<interior idref=“r3” />
</Surface>
<SG_Surface>
<inheritance>
・・・・・
</inheritance>
<exterior idref=”r2" />
</SG_Surface>
<SG_Ring id=“r1”>
<element idref=”oc01,
oc12" />
</SG_Ring>
<SG_Ring id=“r2”>
<element idref=”oc03" />
</SG_Ring>
<SG_Ring id=”r3”>
<element idref=”oc13" />
</SG_Ring>
<SG_OrientableCurve id=”oc01"
<original idref=“c1”>
</SG_OrientableCurve>
<SG_OrientableCurve id=”oc12"
<original idref=“c2”>
</SG_OrientableCurve>
<SG_OrientableCurve id=”oc03"
<original idref=“c3”>
</SG_OrientableCurve>
<SG_OrientableCurve id=”oc13"
<original idref=“c3”>
</SG_OrientableCurve>
orientation="+”>
orientation="-”>
orientation="+”>
orientation=“-”>
幾何複体の構造
幾何複体 cpx1は,以下のように⽰示すことができる.
cpx1
p1
s2
s1
c1
cpx1 = (pointSet, curveSet, surfaceSet, orientableCurveSet, ringSet)
c2
ex2
ex1
c3
p2
幾何プリミティブは境界を含まない
が,幾何複体はそれ⾃自体が境界を含
む“閉じた”幾何である.
例例えば,上記の複体の場合,境界の
輪輪は,(-c1, +c3)であるが,これら
の有向曲線は幾何複体 cpx1 に含ま
れる.
幾何複体(右上グレーの部分)は,
幾何プリミティブなどへの参照で構
成される.
pointSet = (p1, p2)
curveSet = (c1, c2, c3)
surfaceSet = (s1, s2)
orientableCurveSet = (oc11, oc02, oc12, oc03)
ringSet = (ex1, ex2)
s1 = (ex1), s2 = (ex2)
ex1 = (oc11, oc12), ex2 = (oc02, oc03)
oc11 = ­−c1, oc02 = +c2, oc12 = ­−c2, oc03 = +c3
c1 = (p2, p1, shape1)
c2 = (p1, p2, shape2)
c3 = (p2, p1, shape3)
p1 = (getIn1, goOut1, position1)
p2 = (getIn2, goOut2, position2)
getIn1 = (c1, c3), goOut1 = (c2) getIn2 = (c2), goOut2 = (c1, c3)
*shapeおよびpositionの記述は省省略略
幾何複体のXML表現
cpx1
p1
s2
s1
oc1
2
c1
oc0
3
c2
ex1
oc1
1
oc0
2
ex2
c3
<SG_Complex>
<inheritance>
<SG_Object id=”cpx1" featureID=”…”
p
2
attributeName=“…”>
</inheritance>
<pointSet idref="p1,p2"/>
<curveSet idref="c1,c2,c3"/>
<surfaceSet idref="s1,s2"/>
<orientableCurveSet = "oc11,oc02,oc12,oc03"/>
<ringSet="ex1,ex2"/>
</SG_Complex>
演習(宿題)
c1
p2
p1
s1
c2
p3
c3
⾯面s1
及び
線c1,c2,c3
をXMLで記述しなさい.
ただし,線を構成する座標列列の座標値は適当で良良い.
クイズ 第13回
道路路に袋⼩小路路があります.
何分の1ぐらいに縮⼩小すると,
この袋⼩小路路は⾒見見えなくなるでしょうか.
1/2
1/4
1/8
1/16 1/32 1/64
演習結果の提出
1. 演習で作成した⾯面と線を表現するXML⽂文書
2. クイズの回答
期限は来週の⽕火曜⽇日.
メールの本⽂文に必ず,⽒氏名と学籍番号を記⼊入すること.
質問や意⾒見見がある場合も同様.
当⾯面の送付先は
[email protected]