■ 位置の指定 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"]
In[]:= GeoGraphics[{kumaground},GeoBackground->"ReliefMap"]
Out[]=
地図は等高線表示もできるのだが...
In[]:= GeoGraphics[{kumaground},GeoBackground->"ContourMap"]
Out[]= $Aborted
等高線表示もできるのだが、山が険しいためか、PlotRangeが広すぎるためか
実行制限がかかった。Basicプランではあまり無理はできないようだ。
デフォルトでは地図のバックグランドは普通の道路地図。
In[]:= GeoGraphics[GeoPath[{kumaground,launchpad1}]]
In[]:= GeoDistance[kumaground,launchpad1]
Out[]= 253.295mi
In[]:= UnitConvert[Quantity[253.295,"Miles"],"Kilometers"]
Out[]= 407.638km
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[]=
測地線上を所定の距離移動した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の画面上では
地図は等高線表示もできるのだが...
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[]=
3Dプロットの結果をマウスで掴んでグリグリ動かせる。