GeoGraphics

Wolfram言語のバージョン10.0以来,GeoGraphicsは地球上あるいはその他の天体上の地図を作成するための一般的で簡単な方法となっている.GeoGraphicsは強力なGraphics機能を,高速で高精度の測地学計算,およびEntityフレームワークを使ったWolfram Knowledgebaseへの直接アクセスと統合する.
標準の2DGraphicsに対してGeoGraphicsに含まれる新しい基本的な事項は,地球の表面は曲面なので紙上やコンピュータスクリーン上で平坦な地図を作成する場合,変形させる必要があるということである.このため,曲面上の点を平坦な地図上の点にどのようにマップすればよいかを決定する関数,地図投影法の選択が常に必要である.GeoProjectionDataパクレットは多数の投影法を提供する.
GeoGraphicsは地球の曲率に適応したGeoPathGeoDiskGeoHemisphere等の新しい地理的プリミティブや,DayHemisphereDayNightTerminator等の時間依存の測地プリミティブも導入している.
GeoGraphicsはWolfram Knowledgebaseに簡単にアクセスし,Entityフレームワークを使って地理的情報を得ることができる.国や都市から橋,地震,人工衛星までのさまざまなタイプのオブジェクトに関する多数の特性に一様にアクセスできるのである.
GeoGraphicsは,バージョン10.0で大きく更新されたWolfram言語の測地学機能とも完全に統合されている.この機能は格段に高速になり,楕円体地球の表面でミリ単位まで正確になっている.GeoPositionを使うと地球上の任意の位置を指定するのに,GPS衛星によって使われるWGS84の準拠楕円体をはじめとしたGeodesyDataの多数の楕円体のどれでも使える.
これは,GeoGraphicsとそれに関連した関数についての入門チュートリアルである.まず,GeoGraphicsに適切な座標範囲,投影法等を選ばせることで,任意の地域または地理的実体の地図を簡単に作成する方法を見ていく.次にニーズに応じて地図を調整するために,オプションを選ぶ方法について説明する.
基本的な地図作成
最も簡単であるが最も重要な操作は,指定された領域の地図を取得することである.Entityフレームワークは,要求された位置情報を得るための高速で均整の取れた方法を提供する.GeoGraphicsにより適切な投影法が選ばれるが,通常スケールが小から中(対角線がおおよそ2000km未満)の場合は"Mercator"図法が選ばれる.
GeoGraphics[primitives,options]
地図を描画する
主な地図作成コマンド
以下はフランスの地図である.CTRL=の後にFranceとタイプすると実体が得られる:
ニューヨーク市の地図である:
引数を指定しない場合,GeoGraphicsはデフォルトで$GeoLocationによって判定された地域を半径10マイルの範囲で与える.
GeoPosition[{lat,lon}]オブジェクトとして返された現在の$GeoLocation
測地位置の周囲の地図:
世界の地図は,オプション値GeoRange"World"を使って得ることができる.このような地図はデフォルトでは"Equirectangular"図法を使って与えられる.これは,横軸が厳密に経度であり縦軸が厳密に緯度である.同様にGeoRange"Country"ではユーザがいる国の地図が返され,GeoGraphicsによって地図の歪みを最小にする投影法が選ばれる.
世界地図:
$GeoLocationにより判定される国の地図:
どの投影法が使われたかを調べる:
どの範囲の緯度および経度(単位:度)が選ばれたかを調べる:
オプションGeoRangeGeoRangePaddingGeoCenterGeoZoomLevelを使うと,いくつもの方法で関心領域を指定することができる.その方法については,このチュートリアルの後半で扱う.
緯度と経度の範囲を明示的に与える:
四方に10kmの充填を加える:
中心およびズームレベルを指定する:
測地範囲を変更しないで,画像のズームレベルを変更することもできる.徐々に詳細なものになる:
地図の大きさも徐々に大きくなる:
ここまで,指定された領域に対応する測地背景画像を表示する地図を作ってきた.GeoGraphics言語は,地図の上に置くことのできる測地プリミティブという多様なオブジェクトを提供している. これらの測地プリミティブには,点状(PointあるいはGeoMarker),線状(GeoPathGeoCircleLine等),領域状(GeoDiskGeoHemispherePolygon等)のものがある.
南アメリカの国々の首都にマーカーを置く:
チリのサンチアゴからスペインのマドリッドまでの測地線である.この投影法では直線ではない:
シカゴ周辺60マイルの円の領域である.下が透けて見えるよう,デフォルトでは不透明度が低くなっている:
アメリカ合衆国を覆う多角形である.ここでもデフォルトなので,不透明度が低い:
地図にスタイルを付けるのには,いくつかの方法がある.緯線や子午線,スケールバーを加えたり,測地背景を変更して高度データや等高線プロットの起伏地図を描いたりすることができる.色や透明度を変更したり,測地円板や多角形のような2Dの測地プリミティブの内部に画像を入れたり等,多数のオプションがある.
緯線と経線を1度ごとに引いたスペインとポルトガルの地図.スケールバーはkm単位である:
測地高度データを表す,同じ地域の起伏地図:
国土上にスペインの旗を置く:
他の天体(惑星と月)でも可能である.
月の手前側(経度0が地球に向いた方向であると定義される):
火星のオリンポス山付近の地図:
地理的位置と地理的計算

GeoPositionと測地実体

地球上の特定の位置はGeoPosition[{lat,lon}]オブジェクトで与えることができる.これは標準的な慣習に従い, 緯度経度の座標は度単位で与えられる.GeoPositionは,地理的なEntityオブジェクトおよびEntityClassオブジェクト等,他の形式の入力でも変換することができる.
GeoPosition[{lat,lon}]
地球表面の位置
Entity["type",name]
指定されたタイプの実体
EntityClass["type",name]
指定されたタイプの実体のクラス.実体のリストに等しい
位置の指定
北極の座標:
以下のようにして求めることもできる:
座標は,度分秒(DMS)の文字列形式で与えることもできる:
ラジアンをQuantityオブジェクトとして任意の単位で与える:
地理的なEntityデータを数値座標に変換する:
内部的には,GeoPositionEntityValueを呼んでその情報を得ている:
GeoPositionは座標の配列を扱うこともできる.これは多数の点を同時に効率的に操作できて便利である.配列の点は異なる表記法で与えてもよい.GeoPositionがそのすべてを数値座標に変換する.
実体のリストを変換する:
EntityClassオブジェクトは,そのメンバーのリストの代表として解釈される:
画像から測地位置EXIF情報を抽出する:
異なるタイプのオブジェクトを同時に変換する:

距離と方位(角度)

指定された場所の座標位置の他,2地点の間の距離,および人が1点から別の点に移動するのに辿る必要のある羅針方位を知ることも重要な場合が多い.距離は測地線,つまり2地点間の最短曲線に沿って計算される.角度は,北からその測地線までの角度を時計回りに測定した方位として与えられる.Wolfram言語では,地球表面の距離はGeoDistanceで測定され,方位はGeoDirectionで計算される.
GeoDistance[loc1,loc2]
2地点間の測地距離
GeoDirection[loc1,loc2]
loc1から loc2までの測地線 loc1における北からの角度
GeoDisplacement[loc1,loc2]
loc1から loc2までの測地線 loc1の距離と角度
GeoDestination[loc1,displ]
loc1から始まり displ によって与えられる測地線の終点の位置
測地的変位
2つの都市間のほぼ中心の位置を取る:
この2地点間の測地線である:
2地点間の距離:
結果は$UnitSystemで指定されている単位を使ったQuantityオブジェクトとして与えられる:
別の単位に変更するためには,UnitConvertを使う:
GeoDistanceの呼出しで必要な単位系を変更することもできる:
距離を計算するためにEntityオブジェクトを直接使うこともできるが,Wolfram言語関数は可能な限り,純粋に点状の位置ではなく多角形情報を使おうとする.つまりGeoDistanceは多角形のすべての点を考慮してできるだけ最短の距離を返すのである.
ニューヨークの境界線とパリの境界線の間の距離:
これは都市の中心同士を結ぶ距離より短い:
GeoDistanceDistanceFunctionオプションを使うと,中心間の距離も計算することができる:
次の地図は,都市の多角形の中心を示す:
方位はGeoDirectionを使って計算される.現在,この関数は多角形情報ではなく位置情報のみを扱う.必要に応じて警告メッセージが出力される.
ニューヨークからパリまでの測地線の方位を,ニューヨークで測定する:
結果をDMS形式で表現する:
GeoDirectionは常に中心位置を使うため,上の結果と下の結果は同じになる:
同じ測地線の方位であるが,今度はパリからニューヨークまでのものである:
GeoDisplacementは距離(単位:メートル)と方位(単位:度)の両方を返す:
測地移動と最初の位置が分かっているので,最終的な位置を得ることができる:

関係を示す位置付け

位置が与えられたとき,その場所から短距離内に特定のタイプの実体が存在するかどうかを知ることが重要な場合がよくある.これを行うのが関数GeoNearestである.位置あるいは実体が拡張されると,面白い包含関係が見付かることもある.
GeoNearest[enttype,loc]
loc に最も近い enttype タイプの実体
GeoIdentify[enttype,loc]
loc を含む enttype タイプの実体
GeoEntities[reg,enttype]
領域 reg に含まれる enttype タイプの実体
GeoWithinQ[reg,loc]
loc が領域 reg に含まれるかどうか
実体と位置の間の距離関係
現在地から最も近い海:
指定された位置に最も近い4つの国々を求め,境界線までの距離で並べ替える:
イングランドのバースの周囲10マイル以内にある都市すべてを求め,距離で並べ替える:
他の関係は,実質的にGeoNearestから派生したものである.例えば,GeoIdentifyは指定された位置(デフォルトでは現在の測地位置)を含む実体すべてを返す.
現在の測地位置を含む,利用可能な実体すべて:
さまざまなタイプの実体:
ローマを含む行政区画:
逆に,GeoEntitiesは与えられた拡張実体に含まれる実体をリストする.
レベル1の行政区画内にあるレベル2の行政区画:
テキサス州ダラスの有名な建築物:
関数GeoWithinQは地理的領域内部に地理的位置(拡張か否かにかかわらない)が含まれるかどうかをチェックする.
シカゴがイリノイ州の中にあるかどうかをチェックする:
テネリフェ島は地中海ではなく大西洋にある:
これらの計算はすべてWolframの測地サーバに送られ,結果はそのサーバからダウンロードされる.Nearestを使ってローカルで操作を実行することが可能な場合もある.
次の変数は,今どの国にいるかを返す:
その国の多角形の境界線の点を取る:
これらの点の中で現在地に最も近いものを求める:
測地線を矢印で描画する:

測地実体の限定子

小さい島や距離が大きく離れている属領を含まない,主たる国土部分の地図だけが欲しい場合もあれば,すべての領土を含む地図が欲しい場合もある.このような場合,Wolfram言語は頭部GeoVariantを使って追加の情報を指定する.
GeoVariant[entity,variant]
地理的な限定子付きの実体
測地実体の限定子
アメリカのデフォルトの地図には,共有する境界のある州のみが含まれている:
以下の地図はすべての領土を含んでいる:
その中間は限定子"PrincipalArea",およびサンプル数を減らした形式"SimplifiedArea"で得ることができる.この場合アメリカの地図にはアラスカ州とハワイ州が含まれる:
地図でデフォルトで使われるのは"DefaultMapArea"である:
この他の測地関数も測地実体の限定子を扱うことができる.しかしデフォルトは必ずしも同じではない.例えば,GeoNearestのデフォルトの限定子は,対応するGeoGraphicsのデフォルトよりも大きい場合がある.
GeoNearestの限定子付き測地オブジェクトのデフォルトは"PrincipalArea"である:
そのため,限定子を変更すると結果が異なる:

$GeoLocationとFindGeoLocation

Wolfram言語はGeoIP情報を使って,ユーザの大体の位置を判定することができる.これにはFindGeoLocationが使われ,結果は大域変数$GeoLocationに保存される.変数Hereを使っても,現在の測地位置にアクセスすることができる.GeoGraphicsに関連する関数の多くは,位置情報が提供されない限りデフォルトで現在位置になる.$GeoLocationは手動で好きな位置に設定することができ,そのWolfram言語セッションはその位置にいるかのように動作する.$GeoLocationの値を設定すると,変数$GeoLocationCity$GeoLocationCountry$GeoLocationを含む都市と国,あるいは最も近い都市と国に自動的に設定される.$GeoLocationを変更しても$TimeZoneは自動的に変更されないので注意のこと.
$GeoLocation
ユーザの現在の測地位置を含む,再設定可能な変数
Here
現在の測地位置を得る簡単な方法
$GeoLocationCity
現在の測地位置に最も近い都市
$GeoLocationCountry
現在の測地位置も近い国
FindGeoLocation[]
GeoIP情報を使って現在の測地位置を求める
現在位置
現在の$GeoLocation
同等のオブジェクトである:
したがって,次のようになる:
$GeoLocationを他の場所に変更する:
現在地の地図がニューヨークの地図になる:
実際の現在地に戻す:
FindGeoLocationを使って,ある場所のおおよその位置を求める:
座標の範囲と投影法

LatitudeとLongitude:GeoRange

経緯度座標で覆われる地図上の領域を指定する最も一般的な方法は,オプションGeoRange{{latmin,latmax},{lonmin,lonmax}}を使うことである.ここでも角度は標準的に度で指定される.この他の測地範囲の指定は, 最終的に内部的にこのような範囲の指定に変換され,GeoRangePaddingオプションで指定されたように拡張されることもある.
GeoRange
地図の範囲を指定する,GeoGraphicsのオプション
測地範囲の指定
GeoBoundsは任意の地理的領域の経緯度範囲を計算する:
"Equirectangular"図法を使う地図は,その座標範囲に対応する軸とともに領域を表示する.測地範囲に特定の数値を使うと,充填は加えられない:
"World"測地範囲はデフォルトでは{{-90,90},{-180,180}}で,全世界に対応する.
世界を二等分する:
経度{lonmin,lonmax}はどのような指定で与えることもできる.lonmaxlonmin より大きくなるよう,360を法として調整される:
経度範囲に使われる指定は,円筒図法(以下の投影法の種類を参照)の場合だけは結果に保存される:

GeoCenter

測地範囲を与える別の方法として,中心と半径の距離を与えて地球表面に測地円板を定義するというものがある.測地範囲はその測地円板を完全に包囲する{lat,lon}座標の矩形となる.これはオプションGeoCenterGeoRangeを使って行うことができる.後者は半径距離だけを含む.
GeoCenter
地図の中心を指定する,GeoGraphicsのオプション
地図の中心座標の指定
ダブリンから100マイル四方の地図:
GeoCenterオプションは地図の中心点を選ぶために使うこともできる.地図のGeoRangeは入力から自動的に得られる.オプションGeoRangeが明示的に領域を指定する場合,これがGeoCenterで提供される他の情報を常にオーバーライドする.
ミュンヘンを中心とするドイツの地図:
GeoRangeオプションが明示的ならば,GeoCenterは無視される:
GeoCenterを使うと測地範囲"World"に対する中心経度も選べる.

地図領域のその他の指定

GeoGraphicsは測地プリミティブ内部ではなく入力で位置情報を受け付ける.この情報は地図の範囲指定の一因となるが,それに関連付けられた地図上には何も描画されない.中心の情報だけが利用できる場合,地図のデフォルトのスケールは半径約10マイルとなる.
指定された位置の周囲の地図.地図には何も描画されない:
地図のスケールを表示する:
デフォルトの範囲は,好きなように変更できる:
Entityオブジェクトを使う場合,GeoGraphicsは位置と多角形の情報が存在するかどうかをEntityValueでチェックする.測地多角形が得られる場合はスケールが明確である.多角形が得られない場合は,前述のように中心位置とデフォルトスケールを使う.
シアトル周囲の多角形.GeoPositionオブジェクトの内部に複数の{lat,lon}のペアがある:
以下の地図は,この多角形を含むようにスケールされている:
下の地図は標準スケールの10マイルを使っている:
現在ローマの多角形情報はないので,以下の2つの地図は同一の範囲になる:

投影座標

世界の多くの地域に対するデフォルトの投影法は"Equirectangular"である.この投影法では,地図の座標が直接経度と緯度となる.しかし,変形を少なくするために他の投影法を選んだ方がよい地域もある.地図の座標は直接角度を意味しない.例えば,低いスケール(対角線が約2000km未満)の場合,デフォルトの投影法は,形状を維持する"Mercator"である.この場合,横軸は緯度を表すが,縦軸は経度ではない.
メルカトル図法はインターネットの地図サービスでよく使われる.しかしこれでは両極付近の距離や地域が大きく変形する.実際両極は垂直線に沿った無限遠で描かれるので,メルカトル図法では全世界を一つの地図で示すことができない.GeoGraphicsを使うと,必要な投影法を選ぶことができ,パクレットGeoProjectionDataは利用できる投影法の広範なコレクションを提供する.投影法が明示的に指定されていない場合,GeoGraphicsはスケールと地図の中心に従って,適切な投影法を選択する.
GeoProjection
地図投影法を指定するGeoGraphicsのオプション
地図投影法の指定
次はベルリンの経緯度座標である:
メルカトル図法で描かれたドイツの地図では,ベルリンの座標は異なる:
次は地図で使われているメルカトル図法であるが,適応された"Centering"および"GridOrigin"パラメータが使われているため,横軸はまだ実際の経度を現している:
GeoGridPositionは,選ばれた投影法における厳密な座標を与える:
同じ地図でその投影法を使うと,同じ結果が得られる:
デフォルトの投影法が異なる別の地図:
中スケールの地図では,デフォルトの投影法は"LambertAzimuthal"である.座標値は,緯度方向および経度方向の角度に関しての直接の意味を持たない.
アメリカの地図.北の境界線(49度とほぼ平行)が曲線となっていることに注目する:
この投影法では,緯線も経線も直線ではない:
メルカトル図法によるアメリカの地図と比較する.同じ緯線,経線を示している:

地図投影法について

Wolfram言語には地図投影法や投影座標を制御するための関数やパラメータが多数ある.このセクションではその概要を紹介する.詳細はGeoProjectionおよびGeoProjectionDataのドキュメントをご参照いただきたい.
地図投影法とは,地球表面上の点を平坦な地図の表面に投影する関数であり,常に何らかの変形が存在する.このための関数は多数あるが,変形を最小限にする等,結果の外観や目的によってどれを選ぶかが決定される.投影法はいくつかに分類できる.
投影法の多くは,球上の点を接平面上にマップする幾何的方法(方位角投影),接円筒(円筒図法),接円錐(円錐図法)を使って定義される.それぞれの割図法に対して,簡単に式を一般化することができる.基本的には,円筒や円錐の軸が球体の極軸に揃えられる.
地図投影法はすべてのスケールで有効であるが,世界地図を使うとその違いがより鮮明になる.このサブセクションでは世界地図の例のみを使う.
利用できる円筒図法:
円筒図法では,緯線と経線は直交する直線である:
利用できる円錐図法:
円錐図法では,経線は直線であるが緯線は円弧である:
利用できる方位角投影法:
デフォルトでさまざまな点を中心とする,方位角投影法の例:
これらの基本的なタイプの投影法には多数のバリエーションがある.たとえば,緯線が水平直線で経線が任意の曲線となれる場合,結果は「擬円筒」図法となる.特定のタイプを元来持たない投影法は通常「その他」と分類される.
利用できる擬円筒図法:
その他の投影法の例:
投影法の重要な分類の別の方法として,維持する幾何学的特性によるものがある.これには主に角度(等角写像),距離(正距図法),面積(正積図法)を使うものがある.同時にすべてを維持できる投影法はない.
メルカトル図法は,等角の円筒投影法である:
アルベルス図法は,正積の円錐投影法である:
ステレオ投影法は方位および等角の投影法であるが,配景写像によっても構築されている:
地図投影法にはパラメータがある.GeoProjectionData[projname]は投影法のパラメータのデフォルト値を与える.
投影の中心点を選ぶ:
円錐図法で割緯線を選ぶ:
デフォルトの地図スケールでkmを使うよう変更する(メルカトル図法では,赤道上だけが正しい距離である):

充填

緯度と経度の範囲を明示的に数値で指定したGeoRangeオプションは,リクエストされた正確な領域の地図を返す.円筒図法ではない場合,地図の境界は,指定された緯線と経線に対応する曲線になる.
GeoRangePadding
測地範囲の充填を指定するGeoGraphicsのオプション
測地範囲の充填の指定
アメリカの本土の緯度と経度の限界である:
GeoRangePadding->Fullを使うと,矩形の地図を完全にすることができる:
地理的なEntityオブジェクトあるいはEntityClassオブジェクトにより指定される地図は,まずGeoBoundsでオブジェクトの緯度と経度の限界を計算し,少量の充填を加え,矩形のプロット範囲にすることで構築される.これはGeoRangePadding->Fullを使うことに等しい.
オーストラリアの地図:
次はGeoGraphicsによって選ばれた測地範囲:
オーストラリアの緯度と経度の限界は実際にはもっと小さい:
上の限界を得るためには,5%拡張する必要がある:
もとの地図を得るためには,充填指定とFullを組み合せる:
GeoRangePaddingオプションは非常に柔軟である.地図の四方向にそれぞれ別の充填を指定することも,距離,角度,全体地図のスケールの比率等,実際の充填を異なる方法で指定することもできる.その名前のリンクをクリックすると,可能なものがすべて見られる.

GeoZoomLevelとImageSize

測地範囲を指定する別の方法に,点(GeoCenterを選ぶか,GeoGraphicsの第1引数に点のようなオブジェクトを与える)やズームレベルを選ぶというものがある.GeoGraphicsは測地範囲の半径を選び,測地背景画像が256×256画素の小さい数のタイル(通常10個)で構築されるようにする.地図のImageSizeオプションを大きくすると測地範囲を大きくすることができる.
GeoZoomLevel
ズームレベルを指定するGeoGraphicsのオプション
ImageSize
最終的な地図の画素サイズを指定するオプション
ズームと画像サイズの指定
ズームレベル5のパリ周辺の地図:
以下が選ばれた関連測地範囲であった:
以下のようにすると同じ地域の画像を(相当するズームレベルで)より大きくすることができる:
測地プリミティブ

点とマーカー    

最も簡単なプリミティブはPointである.これは地図上の点を表すが,サイズ,色,透明度等を制御するためのGraphicsの標準的な柔軟性を備えている.
GeoMarker[loc,icon]
指定されたアイコンを使った,位置 loc におけるマーカープリミティブ
Point[loc]
位置 loc における点プリミティブ
ゼロ次元の測地プリミティブ
巨大火山のリストを得る:
それぞれの位置である:
それぞれの位置に点を描く:
違う色でもっと大きい点を描く.位置のリストにマップせずに,Pointを使うことができる:
Pointの内部でGeoPositionを使うと,どの投影法の地図でも点が正しく置かれる:
実体のリストを直接使うこともできる.GeoGraphicsはそれらの位置を得るために,内部的にEntityValueを使う:
EntityClassオブジェクトは,そのメンバーのリストを表すので,そのオブジェクト自体を使うこともできる:
GeoMarkerプリミティブは指定された位置に何かを置く際に柔軟性を提供する.
デフォルトの地理マーカーである:
以下の火山の画像を使う:
上の画像をそれぞれの位置に使う.アイコンEntityオブジェクトの代りに画像を使うことができる:

経路

GeoPathプリミティブは,地球表面上の任意の直線が平面地図上に投影される前の直線を表す.つまり,GeoPathオブジェクトは地球の曲面上で幾何学的意味を持つ軌道なのである.そのような線は,現在"Geodesic"(指定された2点間の最短経路),"Loxodrome"(同じ方位角あるいは角度を持つすべての経線を横切る曲線),"GreatCircle"(地球を,中心を通る平面で切断することで得られる曲線)の3種類がサポートされている.経線は常に航程線であり大圏コースでもある.緯線は常に航程線であるが,大圏コースであるとは限らない.赤道は大圏コースと一致する唯一の緯線である.
GeoPath[locs,pathtype]
タイプ pathtype の経路で指定された位置を繋ぐプリミティブ
一次元の測地プリミティブ
GeoPathオブジェクトのデフォルトタイプは"Geodesic"である.これは測地線である:
"LambertAzimuthal"図法は測地線をほぼ直線として表現する.同じ地図を"Equirectangular"図法および"Mercator"図法と比較する:
次はブエノスアイレスからリスボンまでの航程線である:
この線は地図ではなく地球の表面上で測定される以下の角度ですべての経線と交差する:
指定された2点間を,3つのタイプのGeoPathで比較する:
測地線と大圏コースはほぼ一致するが,地球が楕円体であるため,厳密には一致しない.アイスランド付近にズームしてみる:
上で赤い曲線の方が緑の曲線よりも短いというのは変に思えるかもしれない."Orthographic"図法によりその違いが分かる:
ここまで2点間の測地経路の例を見てきた.GeoPath[{p1,p2,,pn},type]は連続する点 pi 間の,指定されたタイプのセグメントで形成される連続直線を与えるが,完全な直線は一般にそのタイプにはならない.
いくつかの都市を回る最短経路を描画する.全体の直線は,最初と最後の点の間の測地線ではない:
最後の点と最初の点を,同じタイプの追加のセグメントで繋ぐ:
測地経路には{"Parallel",lat}{"Meridian",lon},および特殊な場合の"Equator""PrimeMeridian""DateLineMeridian"を含む名前付きのタイプがある.
緯線をいくつか引く:
緯線の一部を西から東,あるいは東から西に描画する.Arrowを使って測地経路に鏃を加える:
重要な名前付き測地線:
国際日付変更線を描く:

円と円板

中心が p で半径が r の測地円は p を囲む閉じた線である.その点はすべて p から測地距離 r のところにある.地球の曲率のため,測地円の全長は2π r より小さい.実際,r が大きくなるほど,測地円のサイズは小さくなり p の対蹠地を中心とするようになる.
GeoDisk[loc,r]
loc を中心とする半径 r の測地円板
GeoCircle[loc,r]
loc を中心とする半径 r の測地円
円板状の測地プリミティブ
シカゴ付近の半径500kmの測地円:
同じ場所を中心とする5000kmの測地円."Equirectangular"図法では円には見えない:
測地円が極を横断する場合,以下のように見える:
もっと大きくなると,対蹠地を中心とするようになる:
すべてを1000kmの刻み幅で表す:
地球は楕円体なので,このシーケンスの最後の測地円は以下のようになる:
測地円板は測地円の二次元的な内部である.あらゆる閉曲線のように,測地円は地球の表面を2つの有限部分に分離する.内部は中心点を含む部分であるが,外部よりも面積が必ずしも小さいとは限らない.
シカゴ周辺の半径500kmの測地円板:
同じ場所を中心とした5000kmの測地円板:
測地円板が極点を横断する場合は,以下のようになる:
もっと大きくなると,対蹠地周囲の小さい領域を除いて,地球のほとんどを覆うようになる:

半球

半球は,平面が地球の中心を通過することで分割されるため,地球の表面の半分を厳密に含む.したがって,半球の境界線は大円である(地球の楕円モデルが使われているため,実際には大楕円である).Wolfram言語は半球に使える測地プリミティブを2タイプ提供している.ひとつは表面上の点 p 周囲の半球GeoHemisphere[p]であり,もうひとつは指定された日付における太陽の位置から決定された,特に重要な半球DayHemisphere[date]NightHemisphere[date]である.GeoHemisphere[p]の境界線はGeoHemisphereBoundary[p]であり,昼半球と夜半球の境界線はDayNightTerminator[date]である.
GeoHemisphere[loc]
loc を中心とする半球
DayHemisphere[date]
指定された日付における昼半球
NightHemisphere[date]
指定された日付における夜半球
GeoHemisphereBoundary[loc]
loc を中心とする半球の境界線
DayNightTerminator[date]
date における昼半球と夜半球の境界線
半球関係の測地プリミティブ
東京を中心とした半球:
境界線を重ね合わせる:
東京を中心として方位図法を使う:
北半球:
昼半球と夜半球は,太陽の位置の投影に対するGeoHemisphereを地球表面,あるいはその反対側の点に応用したものである.曖昧さを避けるために,日付は明示的なTimeZone指定で指定しなければならない.
北半球の冬至における地球の昼の部分と夜の部分:
春分における地球の昼の部分と夜の部分:

高いところから見える領域

測地半球は,ある方向の非常に遠いところ(実際には無限距離)から見ることのできる地球の部分と考えることができる. ここで,ビューポイントが楕円体地球の表面上の有限高さである場合の概念の一般化を導入する.得られる領域は常に半球よりも小さい.しかし幾何学的構造は非常に類している.可視領域は正割面によっても決定されるが,それは地球の中心を通過しない.
GeoVisibleRegion[loc]
高い位置 loc から可視の領域
GeoVisibleRegionBoundary[loc]
高い位置 loc から可視の領域の境界線
可視領域
国際宇宙ステーションから現在見える地域:
{0,0}上の静止軌道からの可視領域の境界線:

線,多角形,その他の標準的なグラフィックスプリミティブ

LinePolygonCircleのような,測地的グラフィックスではない標準的なプリミティブもGeoGraphicsで使うことはできるが,測地的グラフィックスのプリミティブのように地球表面上ではなく,平坦な地図上のプリミティブとして解釈される.これらはGraphicsにおける場合と同じ標準的な特性を持っている.特に,2つの連続する点の間のLineおよびPolygonのセグメントは直線である.
4つの測地位置を取る:
これら4つの点を繋ぐLineプリミティブは,どの投影法においても辺が直線になるが,同じ点を繋ぐGeoPathは一般に曲線になる:
一方,測地線の点は一意に定義されているが,Lineの点はそうではない.投影法によっては,黒い線がブラジルを通過する場合もある:
すべての場合において,一つの測地線の一部がモザンビークとマダガスカルの間を通過するが,対応するLineの部分が通過するアフリカの国々は,,投影法により異なる:
測地プリミティブではない標準のプリミティブで,直接投影された座標を使うことも可能であるが,どの投影法が使われているかを考慮しなければならない.これは,地球の表面に存在する要素に直接関連するものではなく,グラフィカルな要素を地図に加える場合に便利である.実際,地球の表面のどの点にも対応しない座標を使うことすらできる.この場合,より多くのプリミティブが追加されたときにGeoGraphicsが別の投影法を選ばないように,使った投影法を入力に明示的に加えておくことをお勧めする.
"Bonne"図法の地図に矢印とテキストを加える.いくつかのLineプリミティブにおいて,GeoPositionの指定と投影された座標がどのように混じっているかに注目のこと:
異なる投影法を使うと,GeoGraphicsで指定された位置が自動的に変更されるが,投影された座標で指定された位置は変更されない:
PlotRangeGeoRangeは完全に独立したオプションである.通常GeoRangeが指定され,GeoGraphicsで適切なPlotRangeが選ばれるが,両方を指定することもできる.GridLinesGeoGridLinesも独立している:

高度なトピック:GeoGraphicsの結果の構造

GeoGraphics入力式の結果は頭部GeoGraphicsを持つが,その第1引数は,地図として表示される実際のグラフィックスオブジェクトのGraphicsオブジェクトである.この出力GeoGraphicsは絶対値を持つ一連のオプションも含む.入力で与えられたオプションとGeoGraphicsにより決定されたオプションの両方である.
出力におけるGeoGraphicsの構造を分析する:
出力には頭部GeoGraphicsがある:
第1引数はGraphicsオブジェクトであり,その後に一連のオプションが続く:
投影法に関する情報がある:
選ばれたズームレベル:
選ばれた測地範囲と中心:
地球に対して選ばれた楕円体モデルのデフォルト"ITRF00"も見られる:
Graphicsオブジェクト自体に含まれる重要なオプションはPlotRangeである:
結果の中の画像(ここでは背景画像と道路標識)を抽出するためには,次を使う:

高度なトピック:測地プリミティブの測地的評価

測地プリミティブは"Equirectangular"図法で標準的なプリミティブに変換されるため,Graphicsを使って簡単に表示することができる.
GeoCircleGeographics`GeoEvaluateを使い,ペアのリストを含む{lon,lat}オブジェクトに変換する.
GeoGraphics`GeoEvaluateの第2引数は,使用されている回転楕円体のモデルを指定する.数値(単位はメートル),その半径の球を表すQuantity距離,あるいは回転楕円体の半軸のペア{a,b}で指定する.結果は異なる.
同じ測地円であるが,半径2000kmの球上にある.結果は異なる:
GeoGraphics`GeoEvaluateの第3引数は必要とされる分解能距離をメートル単位で指定する.この数が小さいほど測地プリミティブが分解される点が多くなり,その距離よりも近傍の方が近くなるよう保障される.
1000メートルの分解を使う.同じ測地円がより多くの点で分解されるようになっている:
地理的スタイル

地図のスタイル付け

GeoGraphicsは,色,不透明度,テクスチャ等をはじめとした,地図にスタイルを付けるために使うことのできる多様な指示子をGraphicsから継承している.その上,使用されている投影法に自動的に対応する,地図の特性となる新しい要素を加える.最も重要な新要素はGeoStyling[mapstyle,directive]である.これは地図の任意の部分,特に測地背景にどのようなスタイルを付けるかを指定するものである.
GeoGraphics"StreetMap""ReliefMap""ContourMap"等,すでに定義された地図のスタイルを提供し,ユーザは多角形上に任意の画像を置くことができる.
GeoStyling[mapstyle]
mapstyle を使って,2Dの測地プリミティブの内部にスタイルを付ける
GeoBackground
背景の地図スタイルを指定するGeoGraphicsのオプション
地図のスタイル付け
デフォルトスタイルの地図は"StreetMap"である:
同じ地域をラベルなしで表示する:
高度の起伏地図を表示する:
対応する等高線地図.オプションを使って結果を制御することができる:
衛星画像を表示する:
国境を示した輪郭線の地図を表示する:
GeoStylingは,測地円板や多角形のような2Dのプリミティブ内部に何を置くかを指定し,実質的にTextureのように動作する.その意味では,GeoBackgroundオプションは,地図全体に何を置くかを指定する特殊な場合であると考えることができる.
デフォルトスタイルの地図上にペルーの起伏地図を置く:
指定された領域の境界線に囲まれた地図を表示するために,GeoStylingを使うことができる:
地図上に任意の画像やグラフィックスを置くことのできる地図スタイルには,{"Image",image}{"GeoImage",image}の2つがある.前者では,画像は変換なし(縦横比の変更だけはあり得る)で指定領域に置かれるが,後者では画像は地図領域に沿って投影される.したがって,"GeoImage"は他の地図上に地図の部分を置くように構成される.
ガウスの写真を得る:
デフォルトの"Mercator"図法のドイツの上にその写真を置く:
"Image"地図スタイルを使うと,画像はどの投影法の中でもその向きを維持する:
ブラジルの古い地図を使い,その境界線を切る:
"GeoImage"地図スタイルを使うと,どの地図にでも適切に投影される:

不透明度と色

背景は通常空で,何かで覆われなければならないので,Graphics 2Dプリミティブはデフォルトでは不透明である.しかしGeoGraphicsは通常測地背景として地図の画像を含んでいる.これはその上のプリミティブによって完全に覆われてはならない.そのため,2Dプリミティブのデフォルトの不透明度は小さく,0.2である.これはGeoGraphicsでどのように不透明度が扱われるかに少し捻りを加えている.2Dプリミティブの不透明度は,デフォルトでは不透明の他のプリミティブ(点や線)の不透明度とは区別されなければならないからである.これにはGeoStylingを使う.
青く濃い境界線を持つ,オタワを中心とする測地円板.この測地円は不透明であるが円板は不透明ではない:
標準の不透明度指定は,2Dプリミティブ以外のすべてに影響を及ぼす:
円板の不透明度を変更するためにはGeoStyling[opacity]を使うが,濃い測地円には影響しない:
色は通常すべてのプリミティブに影響を及ぼす:
GeoStylingの内部に置かれた色は,2Dプリミティブに優先し,後で与えられる色にも優先する:
GeoStyling[Automatic]はそれまでのGeoStyling指定のアクションを取り消し,デフォルトに戻す.

測地線格子とスケールバー

緯線や経線を描画することは地図上の要素の向きを理解するのに便利であるが,非円筒図法を使っているときはなおさらである.オプションGeoGridLinesとそのスタイル付けのGeoGridLinesStyleは,いわゆる経緯線網を描画するための柔軟なインターフェースを提供する.
GeoScaleBar
スケールバーの使用をオンにするGeoGraphicsのオプション
GeoGridLines
経緯線網の使用をオンにするGeoGraphicsのオプション
GeoGridLinesStyle
測地線格子のスタイルを指定するGeoGraphicsのオプション
その他の地図スタイル付けオプション
"Equirectangular"図法では,すべての円筒図法でそうであるように緯線と経線は直線であり,等間隔である.システムに線を選ばせてみる:
以下は使われている緯度と経度である.複数の整数角がある:
任意の投影法で使用するそれぞれの線の概数を指定する:
経緯度線網の下位区分をQuantity角として指定する:
地図でスケールを読むためには,GeoScaleBarオプションを使うことができる.大きいスケールの地図では, 距離のスケール係数が点により異なる場合があるため,スケールバーは平均のみを表す.
フランスの地図で,メートル法のスケールバーを使う:
その他の天体
上はすべて地球についてのものであったが,火星,冥王星,月等,衛星画像が利用できる天体には同様に適用することができる.GeoGraphicsはオプションGeoModelの値によって決定される,適切な背景タイルを使う.
GeoModel
測地系あるいは天球儀を指定するGeoGraphicsのオプション
測地モデルの指定
モルワイデ図法による月の地図:
月面の細長い窪み:
コペルニクスクレーター:
ボンヌ図法による火星の地図:
宇宙探査機の着地位置を表示する:
火星における他の面白い地域:
正射投影法を使って冥王星を見る: