ラベル 単純で複雑 の投稿を表示しています。 すべての投稿を表示
ラベル 単純で複雑 の投稿を表示しています。 すべての投稿を表示

2026年11月1日日曜日

単純で複雑なQGISのX軸Y軸

 The X and Y axes in QGIS: Simple yet complex


I spent several days struggling to understand how QGIS handles X and Y axes. In practice, it turns out to be quite simple; however, once you dig a little deeper, things become complex—involving intricate rules for display order and discrepancies between definitions and actual behavior. My struggle to grasp this aspect of QGIS stems from my use of EPSG:6677 (a plane rectangular coordinate system).


QGISのX軸Y軸を確認したのですが、理解に苦しみ数日を過ごしました。結果として実用上は単純であることがわかりました。しかし、一歩踏み込むと、表示順番の複雑な決定法とか定義との乖離など複雑な様相を呈します。このQGISX軸Y軸理解苦しみはEPSG6677(平面直角座標系)利用に起因しています。

1 QGISのX軸Y軸の実用上理解


QGISのX軸Y軸

QGISの内部演算は全てこのX軸Y軸で行っていることを理解しました。従ってジオリファレンスなどの操作画面ではEPSGの違いにかかわらずこのX軸Y軸を前提に数値入力します。

2 QGIS画面下の座標数値表示欄の順番

QGIS画面下の座標数値表示欄の順番はデフォルトでは一定しません。

EPSG6677(平面直角座標系、JGD2011 / Japan Plane Rectangular CS IX)ではY座標-X座標の順になります。

EPSG385(擬似メルカトル図法、Pseudo-Mercator / Webメルカトル)ではX座標-Y座標の順になります。

私はこの順番が一定していると勘違いして、いつまでもX軸Y軸の正しい理解に到達できませんでした。

また、QGIS画面下の座標数値表示欄の順番はデフォルトでは一定しませんが、強制的に順番を固定することが出来ます。

プロジェクト→プロパティ→全般→座標順で次の3つから1つを選択できます。

デフォルト

東距、北距(経度、緯度)

北距、東距(緯度、経度)

3 EPSG6677のX軸Y軸の確認

3-1 実用上のX軸Y軸の確認


EPSG6677のX軸Y軸の確認

この画面で座標○印からカーソルを上にあげると1→2→3と数値が変化します。従って、1の値は南北距離(上下)の値です。同じくカーソル移動で5は東西距離(左右)の値です。

このカーソル移動だけではどちらがX軸かY軸か確認できません。それを自分はジオリファレンズで強制体験的に認識させられました。


ジオリファレンス画面

値5をX座標に値1をY座標に、他の点も同じに入力することによって正確なジオリファレンスができましたので、画面表示順(南北-東西)がY-Xであることを確認しました。

この作業の前に逆順に数値を入力して、ジオリファレンスを失敗していますから、自分は強制的に理解させられたことになります。

3-2 定義上のX軸Y軸の確認


プロジェクトのプロパティ-座標参照系(CRS) EPSG6677画面

…………………

JGD2011 / Japan Plane Rectangular CS IX

●プロパティ

単位: メートル

静的(プレート固定のデータに依拠)

天体: Earth

変換法: Transverse Mercator

●WKT

PROJCRS["JGD2011 / Japan Plane Rectangular CS IX",

    BASEGEOGCRS["JGD2011",

        DATUM["Japanese Geodetic Datum 2011",

            ELLIPSOID["GRS 1980",6378137,298.257222101,

                LENGTHUNIT["metre",1]]],

        PRIMEM["Greenwich",0,

            ANGLEUNIT["degree",0.0174532925199433]],

        ID["EPSG",6668]],

    CONVERSION["Japan Plane Rectangular CS zone IX",

        METHOD["Transverse Mercator",

            ID["EPSG",9807]],

        PARAMETER["Latitude of natural origin",36,

            ANGLEUNIT["degree",0.0174532925199433],

            ID["EPSG",8801]],

        PARAMETER["Longitude of natural origin",139.833333333333,

            ANGLEUNIT["degree",0.0174532925199433],

            ID["EPSG",8802]],

        PARAMETER["Scale factor at natural origin",0.9999,

            SCALEUNIT["unity",1],

            ID["EPSG",8805]],

        PARAMETER["False easting",0,

            LENGTHUNIT["metre",1],

            ID["EPSG",8806]],

        PARAMETER["False northing",0,

            LENGTHUNIT["metre",1],

            ID["EPSG",8807]]],

    CS[Cartesian,2],

        AXIS["northing (X)",north,

            ORDER[1],

            LENGTHUNIT["metre",1]],

        AXIS["easting (Y)",east,

            ORDER[2],

            LENGTHUNIT["metre",1]],

    USAGE[

        SCOPE["Cadastre, engineering survey, topographic mapping (large and medium scale)."],

        AREA["Japan - onshore - Honshu - Tokyo-to. (Excludes offshore island areas of Tokyo-to covered by Japan Plane Rectangular Coordinate System zones XIV, XVIII and XIX)."],

        BBOX[29.31,138.4,37.98,141.11]],

    ID["EPSG",6677]]

●Proj4

+proj=tmerc +lat_0=36 +lon_0=139.833333333333 +k=0.9999 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

●出力レイヤ

138.40, 29.31, 141.11, 37.98

…………………

WKTの中で

        AXIS["northing (X)",north,

            ORDER[1],

            LENGTHUNIT["metre",1]],

        AXIS["easting (Y)",east,

            ORDER[2],

            LENGTHUNIT["metre",1]],

と定義されています。

つまり、北方向X軸、東方向Y軸です。

これはQGIS実用上のX軸Y軸と異なります。

このため、EPSG6677定義に従って測量されたデータをQGISで表示するにはXY座標を交換する必要があります。

4 EPSG3857のX軸Y軸の確認

4-1 実用上のX軸Y軸の確認


EPSG3857のX軸Y軸の確認

千葉市付近の座標の15598193はカーソル移動で東西距離を、4242495は同じ方法で南北距離にかかわります。それぞれの値がX座標かY座標かはこの画面だけでは確認できません。そこでフィールド計算機でX座標値算出関数、Y座標値算出関数を使ってX座標、Y座標をを確認しました。


フィールド計算機でX座標を確認している様子

4-2 定義上のX軸Y軸の確認


プロジェクトのプロパティ-座標参照系(CRS) EPSG3857画面

…………………

WGS 84 / Pseudo-Mercator

●プロパティ

単位: メートル

動的(プレート固定でないデータに依拠)

天体: Earth

World Geodetic System 1984 ensemble (EPSG:6326) では最大 2 メートルの精度しかありません

変換法: Mercator

●WKT

PROJCRS["WGS 84 / Pseudo-Mercator",

    BASEGEOGCRS["WGS 84",

        ENSEMBLE["World Geodetic System 1984 ensemble",

            MEMBER["World Geodetic System 1984 (Transit)"],

            MEMBER["World Geodetic System 1984 (G730)"],

            MEMBER["World Geodetic System 1984 (G873)"],

            MEMBER["World Geodetic System 1984 (G1150)"],

            MEMBER["World Geodetic System 1984 (G1674)"],

            MEMBER["World Geodetic System 1984 (G1762)"],

            MEMBER["World Geodetic System 1984 (G2139)"],

            MEMBER["World Geodetic System 1984 (G2296)"],

            ELLIPSOID["WGS 84",6378137,298.257223563,

                LENGTHUNIT["metre",1]],

            ENSEMBLEACCURACY[2.0]],

        PRIMEM["Greenwich",0,

            ANGLEUNIT["degree",0.0174532925199433]],

        ID["EPSG",4326]],

    CONVERSION["Popular Visualisation Pseudo-Mercator",

        METHOD["Popular Visualisation Pseudo Mercator",

            ID["EPSG",1024]],

        PARAMETER["Latitude of natural origin",0,

            ANGLEUNIT["degree",0.0174532925199433],

            ID["EPSG",8801]],

        PARAMETER["Longitude of natural origin",0,

            ANGLEUNIT["degree",0.0174532925199433],

            ID["EPSG",8802]],

        PARAMETER["False easting",0,

            LENGTHUNIT["metre",1],

            ID["EPSG",8806]],

        PARAMETER["False northing",0,

            LENGTHUNIT["metre",1],

            ID["EPSG",8807]]],

    CS[Cartesian,2],

        AXIS["easting (X)",east,

            ORDER[1],

            LENGTHUNIT["metre",1]],

        AXIS["northing (Y)",north,

            ORDER[2],

            LENGTHUNIT["metre",1]],

    USAGE[

        SCOPE["Web mapping and visualisation."],

        AREA["World between 85.06°S and 85.06°N."],

        BBOX[-85.06,-180,85.06,180]],

    ID["EPSG",3857]]

●Proj4

+proj=merc +a=6378137 +b=6378137 +lat_ts=0 +lon_0=0 +x_0=0 +y_0=0 +k=1 +units=m +nadgrids=@null +wktext +no_defs

●出力レイヤ

-180.00, -85.06, 180.00, 85.06

…………………

WKTの中で

        AXIS["easting (X)",east,

            ORDER[1],

            LENGTHUNIT["metre",1]],

        AXIS["northing (Y)",north,

            ORDER[2],

            LENGTHUNIT["metre",1]],

と定義されています。

つまり、東方向X軸、北方向Y軸です。

これはQGIS実用上のX軸Y軸と同一です。

5 メモ

自分が一番理解に苦しんだのは画面下にある座標数値表示欄の数値のどちらがX座標でどちらがY座標かという確認方法です。ChatGPTによれば次の3つの方法があるとのことです。

1 ジオリファレンス画面による試行錯誤(実施)

2 フィールド計算機によるX座標関数、Y座標関数利用(実施)

3 Pythonコンソールでの確認(Pythonスクリプトによる確認)(未実施)

X軸Y軸という本来既知であるべき事柄を確認する必要があったので、この検討は疲れました。

なお、画面下にある座標数値表示欄の数値の順番は定義にある順番ORDER[1]、ORDER[2]どおりで、それをXYではなく、方向として読めばよいということのようですが、あまりに複雑です。



……………………………………………………………………

【グッド&ニュー】(ブログ活動や生活・散歩中に思い浮かべた良い感情や考え、素晴らしいアイディアや注目すべき事柄)

日本語入力で「2026年」と入力しようとすると必ず「2026稔」となってしまって困っていました。すぐ直るので長期にわたりこの不都合を放置して、その都度苦しんでいました。しかし、思い切ってGoogle検索(AIモード)に聞いたら、直ぐに直し方を教えてくれました。「nen」と入力して漢字候補から稔を探し、それをCtrl+deleteすればよいとのこと。試したら、即座に不都合は解消しました。気持が楽になりました。これからは不都合は放置しないで、その都度対策を打つことにします。