Maxima branch_5_47_base_7_g39559bd_dirty Manual: Functions and Variables for worldmap

Previous: Functions and Variables for pictures, Up: draw [Contents][Index]

### 48.4 Functions and Variables for worldmap

このパッケージは自動的にパッケージ`draw`をロードします。

#### 48.4.1 Variable and Functions

グローバル変数: boundaries_array

  デフォルト値: `false`

  `boundaries_array`は グラフィックオプション`geomap`が境界座標を探すところです。

  Each component of `boundaries_array`のそれぞれの成分は 浮動小数点量の配列であり、 多角形のセグメントかマップ境界の座標です。

  `geomap`も参照してください。

  Package draw ·

関数: numbered_boundaries (nlist)

  その数(`boundaries_array`座標)でラベルされた 多角形セグメント(境界)のリストを描画します。 これは新しい地理的なものを作る時に非常に役立ちます。

  例:

  `boundaries_array`内の成分数で境界をラベルされたヨーロッパの地図

      (%i1) load("worldmap")$
      (%i2) european_borders:
                 region_boundaries(-31.81,74.92,49.84,32.06)$
      (%i3) numbered_boundaries(european_borders)$

  Package draw ·

関数: make_poly_continent (continent_name)
関数: make_poly_continent (country_list)

  色付けられた大陸や国のリストを描画するのに必要なポリゴンを作ります。

  例:

      (%i1) load("worldmap")$
      (%i2) /* A continent */
            make_poly_continent(Africa)$
      (%i3) apply(draw2d, %)$
      (%i4) /* A list of countries */
            make_poly_continent([Germany,Denmark,Poland])$
      (%i5) apply(draw2d, %)$

  Package draw ·

関数: make_poly_country (country_name)

  色付けられた国を描画するのに必要なポリゴンを作ります。 もし島が存在するなら、1つの国はただ1つ以上のポリゴンで定義され得ます。

  例:

      (%i1) load("worldmap")$
      (%i2) make_poly_country(India)$
      (%i3) apply(draw2d, %)$

  Package draw ·

関数: make_polygon (nlist)

  境界添字から`polygon`オブジェクトを返します。 引数nlistは`boundaries_array`の成分のリストです。

  例:

  ブータンは境界番号171, 173, 1143で定義されます。 だから、`make_polygon([171,173,1143])`は appends arrays of coordinates 座標`boundaries_array[171]`, `boundaries_array[173]`, `boundaries_array[1143]`の配列を付加し、 `draw`でプロットされるのに適した`polygon`オブジェクトを返します． エラーメッセージを避けるには、 任意の連続する配列が端で共通の2つの座標を持つという意味で配列は互換性がなければいけません。 この例では、 `boundaries_array[171]`の最初の2つの成分は `boundaries_array[173]`の最後の2つの座標と等しく、 `boundaries_array[173]`の最初の2つは `boundaries_array[1143]`の最初の2つに等しいです; 結論として、境界番号171, 173, 1143は (この順で)互換性があり、色付けられたポリゴンは描画できます。

      (%i1) load("worldmap")$
      (%i2) Bhutan;
      (%o2)                        [[171, 173, 1143]]
      (%i3) boundaries_array[171];
      (%o3) {Array:
             #(88.750549 27.14727 88.806351 27.25305 88.901367 27.282221
               88.917877 27.321039)}
      (%i4) boundaries_array[173];
      (%o4) {Array:
             #(91.659554 27.76511 91.6008 27.66666 91.598022 27.62499
               91.631348 27.536381 91.765533 27.45694 91.775253 27.4161
               92.007751 27.471939 92.11441 27.28583 92.015259 27.168051
               92.015533 27.08083 92.083313 27.02277 92.112183 26.920271
               92.069977 26.86194 91.997192 26.85194 91.915253 26.893881
               91.916924 26.85416 91.8358 26.863331 91.712479 26.799999
               91.542191 26.80444 91.492188 26.87472 91.418854 26.873329
               91.371353 26.800831 91.307457 26.778049 90.682457 26.77417
               90.392197 26.903601 90.344131 26.894159 90.143044 26.75333
               89.98996 26.73583 89.841919 26.70138 89.618301 26.72694
               89.636093 26.771111 89.360786 26.859989 89.22081 26.81472
               89.110237 26.829161 88.921631 26.98777 88.873016 26.95499
               88.867737 27.080549 88.843307 27.108601 88.750549
               27.14727)}
      (%i5) boundaries_array[1143];
      (%o5) {Array:
             #(91.659554 27.76511 91.666924 27.88888 91.65831 27.94805
               91.338028 28.05249 91.314972 28.096661 91.108856 27.971109
               91.015808 27.97777 90.896927 28.05055 90.382462 28.07972
               90.396088 28.23555 90.366074 28.257771 89.996353 28.32333
               89.83165 28.24888 89.58609 28.139999 89.35997 27.87166
               89.225517 27.795 89.125793 27.56749 88.971077 27.47361
               88.917877 27.321039)}
      (%i6) Bhutan_polygon: make_polygon([171,173,1143])$
      (%i7) draw2d(Bhutan_polygon)$

  Package draw ·

関数: region_boundaries (x1,y1,x2,y2)

  頂点(x1,y1) -左上- と(x2,y2) -右下-の長方形に完全に含まれる グローバル変数`boundaries_array`の多角形セグメント検出します。

  例:

  南イタリアをプロットするためのセグメントの数を返します。

      (%i1) load("worldmap")$
      (%i2) region_boundaries(10.4,41.5,20.7,35.4);
      (%o2)                [1846, 1863, 1864, 1881, 1888, 1894]
      (%i3) draw2d(geomap(%))$

  Package draw ·

関数: region_boundaries_plus (x1,y1,x2,y2)

  頂点(x1,y1) -左上- と(x2,y2) -右下-で定義された長方形に少なくとも1つ頂点を含まれる グローバル変数`boundaries_array`の多角形セグメント検出します。 多角形セグメント検出します。

  例:

      (%i1) load("worldmap")$
      (%i2) region_boundaries_plus(10.4,41.5,20.7,35.4);
      (%o2) [1060, 1062, 1076, 1835, 1839, 1844, 1846, 1858,
             1861, 1863, 1864, 1871, 1881, 1888, 1894, 1897]
      (%i3) draw2d(geomap(%))$

  Package draw ·

#### 48.4.2 Graphic objects

グラフィックオブジェクト: geomap (numlist)
グラフィックオブジェクト: geomap (numlist,3Dprojection)

  2Dと3Dに関して地図を描画します。

  2D

  この関数はグローバル変数`boundaries_array`と一緒に機能します。

  引数numlistは 数や数のリストを含むリストです。 これらすべての数は、 グローバル配列`boundaries_array`の成分を表す 0以上の整数でなければいけません。

  Each component of `boundaries_array`のそれぞれの成分は 浮動小数点量の配列であり、多角形セグメントやマップ境界の座標です。

  `geomap (numlist)`は 引数を平坦化し、`boundaries_array`の中に関連した境界を描画します。

  このオブジェクトは以下のグラフィックオプションの影響を受けます: `line_width`, `line_type`, `color`.

  例:

  手で定義された簡単な地図:

      (%i1) load("draw")$
      (%i2) /* Vertices of boundary #0: {(1,1),(2,5),(4,3)} */
         ( bnd0: make_array(flonum,6),
           bnd0[0]:1.0, bnd0[1]:1.0, bnd0[2]:2.0,
           bnd0[3]:5.0, bnd0[4]:4.0, bnd0[5]:3.0 )$
      (%i3) /* Vertices of boundary #1: {(4,3),(5,4),(6,4),(5,1)} */
         ( bnd1: make_array(flonum,8),
           bnd1[0]:4.0, bnd1[1]:3.0, bnd1[2]:5.0, bnd1[3]:4.0,
           bnd1[4]:6.0, bnd1[5]:4.0, bnd1[6]:5.0, bnd1[7]:1.0)$
      (%i4) /* Vertices of boundary #2: {(5,1), (3,0), (1,1)} */
         ( bnd2: make_array(flonum,6),
           bnd2[0]:5.0, bnd2[1]:1.0, bnd2[2]:3.0,
           bnd2[3]:0.0, bnd2[4]:1.0, bnd2[5]:1.0 )$
      (%i5) /* Vertices of boundary #3: {(1,1), (4,3)} */
         ( bnd3: make_array(flonum,4),
           bnd3[0]:1.0, bnd3[1]:1.0, bnd3[2]:4.0, bnd3[3]:3.0)$
      (%i6) /* Vertices of boundary #4: {(4,3), (5,1)} */
         ( bnd4: make_array(flonum,4),
           bnd4[0]:4.0, bnd4[1]:3.0, bnd4[2]:5.0, bnd4[3]:1.0)$
      (%i7) /* Pack all together in boundaries_array */
         ( boundaries_array: make_array(any,5),
           boundaries_array[0]: bnd0, boundaries_array[1]: bnd1,
           boundaries_array[2]: bnd2, boundaries_array[3]: bnd3,
           boundaries_array[4]: bnd4 )$
      (%i8) draw2d(geomap([0,1,2,3,4]))$

  補助バッケージ `worldmap`は グローバル変数 `boundaries_array`を (経度、緯度)座標で 実世界境界に設定します。 これらのデータはパブリックドメインであり、 http://www-cger.nies.go.jp/grid-e/gridtxt/grid19.html に由来するものです。

  パッケージ`worldmap`は、国、大陸、海岸線の境界も `boundaries_array`の必要な成分を持つリストとして、 定義します。 (更に知るにはファイル`share/draw/worldmap.mac`を参照してください) パッケージ`draw`は自動的に`worldmap`をロードしません。

      (%i1) load("worldmap")$
      (%i2) c1: gr2d(geomap(Canada,United_States,
                            Mexico,Cuba))$
      (%i3) c2: gr2d(geomap(Africa))$
      (%i4) c3: gr2d(geomap(Oceania,China,Japan))$
      (%i5) c4: gr2d(geomap(France,Portugal,Spain,
                            Morocco,Western_Sahara))$
      (%i6) draw(columns  = 2,
                 c1,c2,c3,c4)$

  パッケージ`worldmap`は 国をポリゴンとしてプロットする時にも役に立ちます。 この場合、グラフィックオブジェクト`geomap`は もはや必要でなく、代わりに`polygon`オブジェクトが使われます。 配列ではなくリストが現在使われているので、 地図レンダリングはより遅いでしょう。 以下のコードを理解するためには、 `make_poly_country`と`make_poly_continent`も 参照してください。

      (%i1) load("worldmap")$
      (%i2) mymap: append(
         [color      = white],  /* borders are white */
         [fill_color = red],             make_poly_country(Bolivia),
         [fill_color = cyan],            make_poly_country(Paraguay),
         [fill_color = green],           make_poly_country(Colombia),
         [fill_color = blue],            make_poly_country(Chile),
         [fill_color = "#23ab0f"],       make_poly_country(Brazil),
         [fill_color = goldenrod],       make_poly_country(Argentina),
         [fill_color = "midnight-blue"], make_poly_country(Uruguay))$
      (%i3) apply(draw2d, mymap)$

  3D

  `geomap (numlist)`は地図境界を 中心が(0,0,0)で半径1の球上に射影します。 `geomap (numlist,3Dprojection)`を使うことで、 球や射影タイプを変えることが可能です。

  利用可能な3D射影:

  - `[spherical_projection,x,y,z,r]`: 地図境界を 中心(x,y,z)、半径rの球上に 射影します。

        (%i1) load("worldmap")$
        (%i2) draw3d(geomap(Australia), /* default projection */
                     geomap(Australia,
                            [spherical_projection,2,2,2,3]))$

  - `[cylindrical_projection,x,y,z,r,rc]`: 球地図境界を 中心(x,y,z)の半径rの地球の極を通る軸を持ち 半径rcの円柱に再射影します。

        (%i1) load("worldmap")$
        (%i2) draw3d(geomap([America_coastlines,Eurasia_coastlines],
                            [cylindrical_projection,2,2,2,3,4]))$

  - `[conic_projection,x,y,z,r,alpha]`: 球地図境界を 中心(x,y,z)の半径rの地球の極を通る軸を持ち 角度alphaの円錐上に 再射影します。 北円錐と南円錐両方が球に接触します。

        (%i1) load("worldmap")$
        (%i2) draw3d(geomap(World_coastlines,
                            [conic_projection,0,0,0,1,90]))$

  更に丹念な例を見るには、 http://www.telefonica.net/web2/biomates/maxima/gpdraw/geomap も参照してください。

  Package draw ·

Previous: Functions and Variables for pictures, Up: draw [Contents][Index]