|
Miscellaneous`WorldPlot`

地図の表示
ある大陸全体の地図の作成には,国名のリストの場所に大陸名を与えればよい.つまり,例えばWorldPlot[Oceania]はWorldPlot[{"Indonesia","Papua New Guinea","Fiji","Australia","New Zealand"}]と同じであるということである.地図が作成できる国の名前はこのセクションの最後に記載されている.国の名前は文字列である.つまり,国のリストの中でこれらを用いるときはダブルクォートで囲まなければならないということである.しかし,大陸名はリストであるので,これは文字列でなくシンボルである.従って大陸名にはダブルクォートは使用しない.
パッケージをロードする.
In[1]:= <<Miscellaneous`WorldPlot`
黒のアウトラインで描かれ白で塗りつぶされたアフリカのすべての国の地図.
In[2]:= WorldPlot[ Africa ]

Out[2]= 
各国がランダムなグレーレベルで塗りつぶされた世界地図.
In[3]:= WorldPlot[{World, RandomGrays}]

Out[3]= 

地図のグレーレベルの指定
地図の作成の際に,各国の色の指定にはいくつかの方法がある.1つ目はGrayLevel,RGBColor,Hue等のグラフィックス指示子のリストを明示的に指定する方法である.このリストの 番目の要素が国名リストの 番目の要素の地図の色を指定する.また,国の色は色関数を定義することでも指定できる.この色関数は国の名前を引数に取り,色指示子を返す.色付き地図の最も簡単な作成方法は,色関数にRandomColorsまたはRandomGraysを指定することであろう.この2つの関数はリスト中の各国に色またはグレーレベルを割り当てるのに乱数を用いる.
簡単な色関数.
In[4]:= shadefunc[country_] := Switch[country, "Canada", GrayLevel[0], "Mexico", GrayLevel[.3], _, GrayLevel[.6]]
この色関数を使うとカナダは黒,メキシコは濃いグレー,その他の国は明るいグレーで描かれる.
In[5]:= WorldPlot[{NorthAmerica, shadefunc}]

Out[5]= 
地図は単純に地球表面の一部の平面での表現である.地球はほぼ球状であるので,この表現には球状の物体の表面を2次元平面として取るための方法が必要となる.このような方法は投影と呼ばれる.どの投影法もその性質から特定の歪みを生じさせる.地球表面のある特定の性質を維持し,他を歪ませるさまざまな投影が生み出されてきた. 等積投影法は地図上で同じ面積を持つ2つの地域は地球上でも同じ面積を持つという性質がある.角度の関係を維持するため,方角が正しく表される投影は等角投影法と呼ばれる.方位図法は中心点からの方角が維持されている.
地図の投影法はオプションWorldProjectionで指定する.2つの引数を取る純関数を与えることで,独自の投影法を定義することもできる.例えば,WorldProjectionのデフォルトの設定はEquirectangularである.これは純関数としてWorldProjection -> ({#2, #1}&)のように与えられる.純関数を囲むカッコは,Mathematica がこれを1つの式であると見なすようにするためのものである.投影法を定義する際に重要なのは,データベース中の座標が分で与えられているということである.つまり,Mathematica の三角関数を使用する前に,これらの値をラジアンに変換しなければならないのである.また,国境の座標は,最初の項目が緯度であるペアで与えられていることにも注意されたい.

投影法
オプションWorldProjectionの値として投影法の名前を指定することもできる.標準的な投影法の多くがこのパッケージに含まれている.以下に各投影法について述べる.
最も簡単な投影法は正距円筒図法のEquirectangularである.この投影法は単純に緯度を 座標,経度を 座標として取る.この投影法では角度や面積は維持されない.EquirectangularはWorldProjectionのデフォルトの設定である.
ランベルト(Lambert)円筒図法のLambertAzimuthalは正距円筒図法であるが,正しい面積が維持されるように緯線間の距離が調整されている.この投影法は「正積円筒図法」とも呼ばれる.
ランベルト方位図法のLambertAzimuthalでは,地球はある1点で地球に接する平面に投影され,正しい面積が維持されるように投影点の周りの緯線の円の間隔が調整される.この投影法では中心点からの方角が正しくなるため,「正積方位図法」とも呼ばれる.
別の方位図法として,正射方位図法がある.Orthographicは投影点を無限として球体の投影を指定する.その結果,非常に遠方から地球を見たような図になる.この投影では面積も角度も維持されない.
正弦曲線図法のSinusoidalは擬似円筒図法に分類され,緯線は直線であり,経線はカーブしており,これらの間隔は面積が維持されるように調整されている.
世界地図で最も一般的な等積図法はモルワイデ(Mollweide)図法,Mollweideである.面積を維持するために行われる調整は極めて高度で,三角方程式の解を用いる.この投影法は「楕円等積投影図法」または「ホモログラフ図法」とも呼ばれる.
メルカトル(Mercator)図法のMercatorは円筒図法であり,角度情報は維持されるが面積は等しくならない.これは地球の中心から投影された円筒図法を調整して得られる.この投影法では地図上の直線が固定の方角に相当するため,特にナビゲーションにおいて便利である.
円錐図法は円に沿って地球に接する円錐に地球表面を投影することで得る図法である.Albers円錐図法のAlbersは面積が等しくなるように調整された円錐図法である.他の投影法とは異なり,Albersには追加の情報の指定が必要である.これはlbers[ , ]という形式をとり,指定した2つの緯線に沿ってスケールが正しくなる.アメリカ合衆国に適した投影はAlbers[20, 60]である.Albers円錐図法は「Albers正積円錐図法」とも呼ばれる.
正弦曲線図法は赤道とグリニッジ子午線付近で歪みが少ないため,アフリカの描画に適している.
In[6]:= WorldPlot[{Africa, RandomGrays}, WorldProjection -> Sinusoidal]

Out[6]= 

WorldPlotのオプション

WorldPlotのその他のオプション.これらのオプションはWorldGraphicsでも使える
国境の表示方法の指定にはWorldBordersオプションを使う.このオプションはNone,Automatic,またはスタイルのリストで指定できる.Automaticと指定すると,国の色指定のスタイルリストが指定されていない場合は,国境は{GrayLevel[0], Thickness[.001]}というスタイルで描かれる.国の色指定のスタイルリストが指定されている場合は,国境は描画されない.
地図の周りのフレームのスタイルの指定にはWorldFrameオプションを使う.フレームのどの部分を描画するかを指定する場合はWorldFrameParts ->  , , ,  を用いる.各 は か で指定する. とするとフレームの指定部分が描かれ, とすると描かれない.最初の項目が東側の辺を指し,順に時計回りで指定する.
WorldGridを使うと緯線と経線の有無が指定できる.このオプションをWorldGrid-> ,  という形で指定すると,赤道またはグリニッジ子午線で始まるそれぞれ緯線と経線の間隔が指定できる.WorldGrid->degという設定はWorldGrid-> deg, deg と同じである.どの緯線と経線を描画するかを明示的に指定することもできる.これにはWorldGrid->  , , ... ,  , , ...  と指定する.デフォルトの設定AutomaticはWorldGrid->30と設定した場合と同じである.設定はすべて度で行う.
プロットで最も時間を要する作業のひとつは,部分的にプロット範囲外にある多角形や線を切り取る作業である.切取り方法はオプションWorldClippingで指定される.デフォルトの設定はFullで,オブジェクトがプロット範囲の境界で適切に切り取られる.描画時間の短縮のためにこのオプションをSimpleまたはNoneと指定することもできる.Simpleではプロット範囲外のオブジェクトは描画されず,Noneではすべてのオブジェクトが描画される.
次のアフリカの地図では背景色は明るいグレーであり,グリッド線はなく,地図の周囲のフレームは通常より幾分太くなっている.
In[7]:= afmap = WorldPlot[Africa, WorldBackground -> GrayLevel[0.7], WorldGrid -> None, WorldFrame -> Thickness[.012], WorldProjection -> LambertCylindrical]

Out[7]= 
前述のように,投射というのは地球上の緯度と経度を平面 座標に変換するものである.どの投影法でも特定の幾何学的なものが固定されている.例えばランベルト正積方位図法では,地球の表面をある一点において接する平面に投影する.投影法としてLambertAzimuthalを指定すると,この点が緯度・経度ゼロ度として固定される.この点はWorldRotationオプションを設定することで変更できる.
WorldRotationの値は3つの数のリスト , ,  でなければならない.ここで,最初の2項目は から までの値であり,3つ目の項目は から までの値である.これらの値がどのように作用するかを理解するには,正の 軸が北極点, 軸が赤道とグリニッジ子午線の交点から出ている標準の 座標系に置かれた地球を考えるとよい.3つの値は連続的な3回の回転の回転量を度で表す.1つ目の項目は 軸,2つ目は 軸,3つ目は最初の2つの回転の「後」の北極点についての値である.
次のWorldRotationの設定では,投影が行われる前に地球が 度回転する.その結果,北極点が中心の北半球の図となる.
In[8]:= WorldPlot[{World, RandomGrays}, WorldRotation -> {90, 0, 0}, WorldRange -> {{0, 90}, {-180, 180}}, WorldProjection -> LambertAzimuthal]

Out[8]= 
WorldPlotは地図を表すMathematica グラフィックスオブジェクトを作成するときに使われる.地図上の各国はPolygonプリミティブで与えられる.国のリストから地図を作るためには,リスト中の各国の多角形の頂点をMathematica が認識している必要がある.これらのデータはパッケージMiscellaneous`WorldData`に含まれており,このパッケージはMiscellaneous`WorldPlot`がロードされると自動的にロードされる.前述のように,頂点データは分で表された緯度・経度の組で順に与えられている.慣例に従い,赤道より北の緯度は正,南は負で表され,グリニッジより東の経度は正,西は負で表される.
オプションWorldDatabaseを設定すると,地理座標のデータベースを指定することができる.このオプションには,多角形の頂点を生成するために国名に適用される関数名を設定する.データベースに存在する国名はオプションWorldCountriesを用いて指定する.このオプションには,使用できる国名が含まれているMathematica リストの名前を指定する.デフォルトの値はMiscellaneous`WorldNames`パッケージに含まれているリストWorldである.このパッケージもMiscellaneous`WorldPlot`をロードすると自動的にロードされる.

WorldGraphicsオブジェクトの作成と表示
PlotやListPlot等の組込みMathematica 関数はGraphicsオブジェクトを構築し,それを表示する.結果のGraphicsオブジェクトは種々のオプションを用いて操作・再表示することができる.WorldPlotもこれと同様に,WorldGraphicsオブジェクトを作成し,それを表示する.WorldGraphicsオブジェクトは本質的にはGraphicsオブジェクトであり,地理データを使って操作できるように作られている.プリミティブPolygon,Line,Point,Textで与えられている座標はすべて lat, long で与えられる.ここで緯度と経度は分で与えられる.関数ToMinutesを使うと,度と分で表されたデータを分を使ったデータに変換することができる.例えばPoint[ToMinutes[{{41, 49}, -{87, 37}}]]は北緯 度 分東経 度 分にあるイリノイ州シカゴの場所の点を表している.WorldGraphicsオブジェクトは表示される前に,WorldProjectionの値で指定された投影法を使って内部的に標準のGraphicsオブジェクトに変換される.
アイルランドの地図を与える多角形の頂点のリスト.
In[9]:= WorldData["Ireland"]
Out[9]= 
分で表されたアフリカの2つの都市の緯度と経度のリストである.
In[10]:= {capetown, cairo} = ToMinutes[ {{{-33, -56}, {18, 22}}, {{30, 3}, {31, 15}}}]
Out[10]= 
Showを使うとWorldGraphicsオブジェクトの地図を結合することができる.アフリカの地図afmapは上で定義されている.
In[11]:= Show[{afmap, WorldGraphics[ {Dashing[{0.05, 0.03}], Line[{capetown, cairo}]}]}]

Out[11]= 

分への変換
大陸名を指定することは,その大陸にある国の名前のリストを指定することと同じである.Worldは世界中のすべての国のリストを与えるものである.前述のように,国名は文字列であるため,ダブルクォートで囲まなければならない.大陸名はシンボルで,これにはダブルクォートは必要ない.以下の国を指定することができる.

リストNorthAmericaに含まれている国

リストEuropeに含まれている国

リストSouthAmericaに含まれている国

リストOceaniaに含まれている国

リストAsiaに含まれている国

リストMiddleEastに含まれている国

リストAfricaに含まれている国
|