世界プロットパッケージ
WorldPlot[countrylist] | countrylist で指定された国の地図を生成する |
WorldPlot[{countrylist,RandomColors}] | ランダムに選ばれた色で国を塗りつぶす |
WorldPlot[{countrylist,RandomGrays}] | ランダムに選ばれたグレーレベルを使う |
ある大陸全体の地図の作成には,国名のリストの場所に大陸名を与えればよい.つまり,例えばWorldPlot[Oceania]はWorldPlot[{"Indonesia","Papua New Guinea","Fiji","Australia","New Zealand"}]と同じであるということである.地図が作成できる国の名前はこのセクションの最後に記載されている.国の名前は文字列である.つまり,国のリストの中でこれらを用いるときはダブルクォートで囲まなければならないということである.しかし,大陸名はリストであるので,これは文字列でなくシンボルである.従って大陸名にはダブルクォートは使用しない.
WorldPlot[{countrylist,colorfunc}] | colorfunc で指定されたように国を塗りつぶす |
WorldPlot[{countrylist,colorlist}] | 色指示子を使って国を塗りつぶす |
地図の作成の際に,各国の色の指定にはいくつかの方法がある.1つ目はGrayLevel,RGBColor,Hue等のグラフィックス指示子のリストを明示的に指定する方法である.このリストの 番目の要素が国名リストの 番目の要素の地図の色を指定する.また,国の色は色関数を定義することでも指定できる.この色関数は国の名前を引数に取り,色指示子を返す.色付き地図の最も簡単な作成方法は,色関数にRandomColorsまたはRandomGraysを指定することであろう.この2つの関数はリスト中の各国に色またはグレーレベルを割り当てるのに乱数を用いる.
地図は単純に地球表面の一部の平面での表現である.地球はほぼ球状であるので,この表現には球状の物体の表面を二次元平面として取るための方法が必要となる.このような方法は投影と呼ばれる.どの投影法もその性質から特定の歪みを生じさせる.地球表面のある特定の性質を維持し,他を歪ませるさまざまな投影が生み出されてきた.等積投影法は地図上で同じ面積を持つ2つの地域は地球上でも同じ面積を持つという性質がある.角度の関係を維持するため,方角が正しく表される投影は等角投影法と呼ばれる.方位図法は中心点からの方角が維持されている.
地図の投影法はオプションWorldProjectionで指定する.2つの引数を取る純関数を与えることで,独自の投影法を定義することもできる.例えば,WorldProjectionのデフォルトの設定はEquirectangularである.これは純関数としてWorldProjection->({#2,#1}&)のように与えられる.純関数を囲むカッコは,Wolfram言語がこれを1つの式であると見なすようにするためのものである.投影法を定義する際に重要なのは,データベース中の座標が分で与えられているということである.つまり,Wolfram言語の三角関数を使用する前に,これらの値をラジアンに変換しなければならないのである.また,国境の座標は,最初の項目が緯度であるペアで与えられていることにも注意されたい.
オプションWorldProjectionの値として投影法の名前を指定することもできる.標準的な投影法の多くがこのパッケージに含まれている.以下に各投影法について述べる.
最も簡単な投影法は正距円筒図法のEquirectangularである.この投影法は単純に緯度を 座標,経度を 座標として取る.この投影法では角度や面積は維持されない.EquirectangularはWorldProjectionのデフォルトの設定である.
ランベルト(Lambert)円筒図法のLambertCylindricalは正距円筒図法であるが,正しい面積が維持されるように緯線間の距離が調整されている.この投影法は「正積円筒図法」とも呼ばれる.
ランベルト方位図法のLambertAzimuthalでは,地球はある1点で地球に接する平面に投影され,正しい面積が維持されるように投影点の周りの緯線の円の間隔が調整される.この投影法では中心点からの方角が正しくなるため,「正積方位図法」とも呼ばれる.
別の方位図法として,正射方位図法がある.Orthographicは投影点を無限として球体の投影を指定する.その結果,非常に遠方から地球を見たような図になる.この投影では面積も角度も維持されない.
正弦曲線図法のSinusoidalは擬似円筒図法に分類され,緯線は直線であり,経線はカーブしており,これらの間隔は面積が維持されるように調整されている.
世界地図で最も一般的な等積図法はモルワイデ(Mollweide)図法,Mollweideである.面積を維持するために行われる調整は極めて高度で,三角方程式の解を用いる.この投影法は「楕円等積投影図法」または「ホモログラフ図法」とも呼ばれる.
メルカトル(Mercator)図法のMercatorは円筒図法であり,角度情報は維持されるが面積は等しくならない.これは地球の中心から投影された円筒図法を調整して得られる.この投影法では地図上の直線が固定の方角に相当するため,特にナビゲーションにおいて便利である.
円錐図法は円に沿って地球に接する円錐に地球表面を投影することで得る図法である.Albers円錐図法のAlbersは面積が等しくなるように調整された円錐図法である.他の投影法とは異なり,Albersには追加の情報の指定が必要である.これはAlbers[par1,par2]という形式をとり,指定した2つの緯線に沿ってスケールが正しくなる.アメリカ合衆国に適した投影はAlbers[20,60]である.Albers円錐図法は「Albers正積円錐図法」とも呼ばれる.
オプション名
|
デフォルト値
| |
WorldBorders | Automatic | 国境の表示スタイル.Noneとすると国境は描かれない |
WorldCountries | World | 使用できる国名のリストの名前 |
WorldDatabase | WorldData | 国の多角形データを保有しているデータベースの名前 |
WorldToGraphics | False | 標準Graphicsオブジェクトを返すかどうかを指定する |
WorldPlotのオプション
オプション名
|
デフォルト値
| |
WorldBackground | None | 背景の多角形に用いるスタイル |
WorldClipping | Full | 部分的にプロット範囲の外に出ている線や多角形の処理方法を指定する |
WorldFrame | Automatic | 地図の周りのフレームのスタイルを指定する.Noneと指定した場合は境界は表示されない |
WorldFrameParts | {1,1,1,1} | 表示するフレームの部分の指定 |
WorldGrid | Automatic | 表示する緯度と経度の場所 |
WorldGridBehind | True | グリッドを国の背面(True)に表示するか前面(False)に表示するかを指定する |
WorldGridStyle | Thickness[.001] | グリッドのスタイル |
WorldPoints | 100 | グリッド線のプロットと多角形の切落しに使う区画の数 |
WorldProjection | Equirectangular | 投影に使う関数 |
WorldRange | Automatic | 表示する地球の表面の部分.この指定には{{minlat,maxlat}, {minlong,maxlong}}という形式を使う |
WorldRotatedRange | False | 範囲指定が適用される座標系.Trueとすると,WorldRotationの結果の座標系に適用される |
WorldRotation | {0,0,0} | 投影の前に座標の回転が適用される |
WorldPlotのその他のオプション.これらのオプションはWorldGraphicsでも使える
国境の表示方法の指定にはWorldBordersオプションを使う.このオプションはNone,Automatic,またはスタイルのリストで指定できる.Automaticと指定すると,国の色指定のスタイルリストが指定されていない場合は,国境は{GrayLevel[0], Thickness[.001]}というスタイルで描かれる.国の色指定のスタイルリストが指定されている場合は,国境は描画されない.
地図の周りのフレームのスタイルの指定にはWorldFrameオプションを使う.フレームのどの部分を描画するかを指定する場合はWorldFrameParts->{s1,s2,s3,s4}を用いる.各 は0か1で指定する.(1)とするとフレームの指定部分が描かれ,(0)とすると描かれない.最初の項目が東側の辺を指し,順に時計回りで指定する.
WorldGridを使うと緯線と経線の有無が指定できる.このオプションをWorldGrid->{deg1,deg2}という形で指定すると,赤道またはグリニッジ子午線で始まるそれぞれ緯線と経線の間隔が指定できる.WorldGrid->deg という設定はWorldGrid->{deg,deg}と同じである.どの緯線と経線を描画するかを明示的に指定することもできる.これにはWorldGrid->{{lat1,lat2,…},{lon1,lon2,…}}と指定する.デフォルトの設定AutomaticはWorldGrid->30と設定した場合と同じである.設定はすべて度で行う.
プロットで最も時間を要する作業のひとつは,部分的にプロット範囲外にある多角形や線を切り取る作業である.切取り方法はオプションWorldClippingで指定される.デフォルトの設定はFullで,オブジェクトがプロット範囲の境界で適切に切り取られる.描画時間の短縮のためにこのオプションをSimpleまたはNoneと指定することもできる.Simpleではプロット範囲外のオブジェクトは描画されず,Noneではすべてのオブジェクトが描画される.
前述のように,投射というのは地球上の緯度と経度を平面の , 座標に変換するものである.どの投影法でも特定の幾何学的なものが固定されている.例えばランベルト正積方位図法では,地球の表面をある一点において接する平面に投影する.投影法としてLambertAzimuthalを指定すると,この点が緯度・経度ゼロ度として固定される.この点はWorldRotationオプションを設定することで変更できる.
WorldRotationの値は3つの数のリスト{deg1,deg2,deg3}でなければならない.ここで,最初の2項目は0から180までの値であり,3つ目の項目は180から180までの値である.これらの値がどのように作用するかを理解するには,正の 軸が北極点, 軸が赤道とグリニッジ子午線の交点から出ている標準の座標系に置かれた地球を考えるとよい.3つの値は連続的な3回の回転の回転量を度で表す.1つ目の項目は 軸,2つ目は 軸,3つ目は最初の2つの回転の「後」の北極点についての値である.
WorldPlotは地図を表すWolfram言語グラフィックスオブジェクトを作成することにより作動する.地図上の各国はPolygonプリミティブで与えられる.国のリストから地図を作るためには,リスト中の各国の多角形の頂点をWolfram言語が認識している必要がある.これらのデータはパッケージWorldDataに含まれており,このパッケージはWorldPlot`がロードされると自動的にロードされる.前述のように,頂点データは分で表された緯度・経度の組で順に与えられている.慣例に従い,赤道より北の緯度は正,南は負で表され,グリニッジより東の経度は正,西は負で表される.
オプションWorldDatabaseを設定すると,地理座標のデータベースを指定することができる.このオプションには,多角形の頂点を生成するために国名に適用される関数名を設定する.データベースに存在する国名はオプションWorldCountriesを用いて指定する.このオプションには,使用できる国名が含まれているWolfram言語リストの名前を指定する.デフォルトの値はWorldNamesパッケージに含まれているリストWorldである.このパッケージもWorldPlot`をロードすると自動的にロードされる.
WorldGraphics[primitives,options] | 地球の地図を表すグラフィックスオブジェクト |
Show[wg,options] | 指定のオプションを使ってWorldGraphicsオブジェクトを表示する |
Graphics[WorldGraphics[primitives,options]] | WorldGraphicsオブジェクトをGraphicsオブジェクトに変換する |
WorldGraphicsオブジェクトの作成と表示
PlotやListPlot等の組込みWolfram言語関数はGraphicsオブジェクトを構築し,それを表示する.結果のGraphicsオブジェクトは種々のオプションを用いて操作・再表示することができる.WorldPlotもこれと同様に,WorldGraphicsオブジェクトを作成し,それを表示する.WorldGraphicsオブジェクトは本質的にはGraphicsオブジェクトであり,地理データを使って操作できるように作られている.プリミティブPolygon,Line,Point,Textで与えられている座標はすべて{lat,long}で与えられる.ここで緯度と経度は分で与えられる.関数ToMinutesを使うと,度と分で表されたデータを分を使ったデータに変換することができる.例えばPoint[ToMinutes[{{41,49},-{87,37}}]]は北緯41度49秒東経87度37分にあるイリノイ州シカゴの場所の点を表している.WorldGraphicsオブジェクトは表示される前に,WorldProjectionの値で指定された投影法を使って内部的に標準のGraphicsオブジェクトに変換される.
ToMinutes[deg] | deg を分に変換する |
ToMinutes[{deg,min}] | 引数が度,分のときに変換する |
ToMinutes[{deg,min,sec}] | 引数が度,分,秒のときに変換する |
大陸名を指定することは,その大陸にある国の名前のリストを指定することと同じである.Worldは世界中のすべての国のリストを与えるものである.前述のように,国名は文字列であるため,ダブルクォートで囲まなければならない.大陸名はシンボルで,これにはダブルクォートは必要ない.以下の国を指定することができる.
Belize | Bermuda |
Canada | Costa Rica |
Cuba | Dominican Republic |
El Salvador | Greenland |
Guatemala | Haiti |
Honduras | Jamaica |
Mexico | Nicaragua |
Panama | Puerto Rico |
USA |
Albania | Andorra |
Austria | Belarus |
Belgium | Bosnia and Herzegovina |
Bulgaria | Croatia |
Cyprus | Czech Republic |
Denmark | Estonia |
Finland | France |
Germany | Gibraltar |
Greece | Hungary |
Iceland | Ireland |
Italy | Latvia |
Liechtenstein | Lithuania |
Luxembourg | Macedonia |
Moldova | Monaco |
Netherlands | Norway |
Poland | Portugal |
Romania | Russia |
San Marino | Serbia and Montenegro |
Slovakia | Slovenia |
Spain | Sweden |
Switzerland | Turkey |
Ukraine | United Kingdom |
Argentina | Bolivia |
Brazil | Chile |
Colombia | Ecuador |
French Guiana | Guyana |
Paraguay | Peru |
Suriname | Uruguay |
Venezuela |
Afghanistan | Armenia |
Azerbaijan | Bahrain |
Bangladesh | Bhutan |
Brunei | Burma |
Cambodia | China |
Georgia | India |
Indonesia | Iran |
Iraq | Israel |
Japan | Jordan |
Kazakhstan | Kuwait |
Kyrgyzstan | Laos |
Lebanon | Malaysia |
Mongolia | Nepal |
North Korea | Oman |
Pakistan | Philippines |
Qatar | Russia |
Saudi Arabia | Singapore |
South Korea | Sri Lanka |
Syria | Taiwan |
Tajikistan | Thailand |
Turkey | Turkmenistan |
Uzbekistan | Vietnam |
Algeria | Angola |
Benin | Botswana |
Burkina | Burundi |
Cameroon | CAR |
Chad | Congo |
Cote d’Ivoire | Djibouti |
Egypt | Equatorial Guinea |
Eritrea | Ethiopia |
Gabon | Ghana |
Guinea | Guinea‐Bissau |
Kenya | Lesotho |
Liberia | Libya |
Madagascar | Malawi |
Mali | Mauritania |
Morocco | Mozambique |
Namibia | Niger |
Nigeria | Rwanda |
Senegal | Sierra Leone |
Somalia | South Africa |
Sudan | Swaziland |
Tanzania | The Gambia |
Togo | Tunisia |
Uganda | Western Sahara |
Zaire | Zambia |
Zimbabwe |