WolframCloudの測地学的関数を使った例

2020-02-25

GoogleEarth Mathematica Wolfram

t f B! P L
WolframCloudの測地学的関数のさわりの部分をご紹介

■ 位置の指定 GeoPosition[]


行政上の名称で指定できる場合もある
たぶん市役所の座標

In[]:= kurashiki=GeoPosition[Entity["City",{"Kurashiki","Okayama","Japan"}]]

Out[]= GeoPosition[{34.61,133.77}]


種子島で名前で呼び出せるのは西之表だけかも

In[]:= tanegashima=GeoPosition[Entity["City",{"Nishinoomote","Kagoshima","Japan"}]]

Out[]= GeoPosition[{30.73,131.}]


種子島の射点(第1)は市町村では指定できないのでGoogleMapなどで調べて座標で指定
(実は方法あり。WolframCloudは知っていたのでEntityを使ってこうする。)



In[]:= launchpad1= GeoPosition[{ 30.400904,130.977769}]

Out[]= GeoPosition[{30.4009,130.978}]



観測地として久万高原天体観測館横のグランド中央


In[]:= kumaground=GeoPosition[{ 33.675906,132.938748}]

Out[]= GeoPosition[{33.6759,132.939}]


■ 標高を参照 GeoElevationData[]


グランド中央の標高を確認してみる


In[]:= GeoElevationData[kumaground]

Out[]= 1988.19ft

In[]:= UnitConvert[Quantity[1988.19,"Feet"],"Meters"]

Out[]= 606.m


■中心を指定して地図を描く GeoBackground


射点

In[]:= GeoGraphics[{launchpad1},GeoBackground->"ReliefMap"]
Out[]=

グランド

In[]:= GeoGraphics[{kumaground},GeoBackground->"ReliefMap"]
Out[]=


地図は等高線表示もできるのだが...
In[]:= GeoGraphics[{kumaground},GeoBackground->"ContourMap"]
Out[]= $Aborted

等高線表示もできるのだが、山が険しいためか、PlotRangeが広すぎるためか
実行制限がかかった。Basicプランではあまり無理はできないようだ。



■ 2地点間を結ぶ線を描く GeoPath[]


デフォルトでは地図のバックグランドは普通の道路地図。

In[]:= GeoGraphics[GeoPath[{kumaground,launchpad1}]]



■ 2地点間の距離 GeoDistance[]


In[]:= GeoDistance[kumaground,launchpad1]

Out[]= 253.295mi

In[]:= UnitConvert[Quantity[253.295,"Miles"],"Kilometers"]

Out[]= 407.638km


■ 可視域を描く GeoVisibleRegion[], SatelliteData[]


H2BF5のKMLからSRB燃焼終了位置を指定し、

この位置(高度52km)からの可視範囲を描く。(大気差や地形の標高は無視)


In[]:= H2BF5SRBend=GeoPosition[{30.241636,131.475209,52000}]
Out[]= GeoPosition[{30.2416,131.475,52000}]


In[]:= GeoGraphics[GeoVisibleRegion[GeoPosition[H2BF5SRBend] ]]
Out[]=

もっと高い場所からはどうか?

WolframCloudは地球楕円体、各種投影法、人工衛星のデータも知っている。
例えばISS

ISSの現在位置(時刻情報を含んで出てくる)

In[]:= SatelliteData[Entity["Satellite", "25544"], "Position"]

Out[]= GeoPosition[{45.9537,-14.6812,427127.,3.791517613551300*^9}]

In[]:= GeoGraphics[GeoVisibleRegion[%], GeoRange -> "World"]
Out[]=

つばめ

In[]:= SatelliteData[Entity["Satellite", "40302"], "Position"];
GeoGraphics[GeoVisibleRegion[%], GeoRange -> "World"]
Out[]=




ひまわり8

In[]:= SatelliteData[Entity["Satellite", "40267"], "Position"];
GeoGraphics[GeoVisibleRegion[%], GeoRange -> "World"]
Out[]=




















■ 標高データを3次元で描く



測地線上を所定の距離移動したGeoPositionを求めるにはGeoDestinationを使う。

GeoDestination[緯度,経度]  あるいは GeoDestination[距離,方位角]

GeoElevationData[{{Xmin,Ymin},{Xmax,Ymax}}]のように範囲も引数に持てる。

kumagroundを中心とした2km四方の範囲の標高データを求める。


In[]:= data = GeoElevationData[{

GeoDestination[kumaground,{-1000,-1000}],

GeoDestination[kumaground,{1000,1000}]},
  GeoRange -> Quantity[2., "Kilometers"], GeoProjection -> Automatic, 
  UnitSystem -> "Metric"]

Out[]= 





これを3次元でプロットする。

In[]:= ListPlot3D[Reverse[data], MeshFunctions -> {# &}, 
 ImageSize -> Large]

Out[]= 


MathematicaやWolframCloudの画面上では
3Dプロットの結果をマウスで掴んでグリグリ動かせる。

QooQ