Python 3.6で緯度経度座標から平面直角座標へ変換

Table of Contents

Windows 10 ProのAnacondaで構築したPython環境において,pyprojを使って緯度経度から平面直角座標に変換する方法を調べました.

pyprojのインストール

pyprojのインストールpipで行いますが,以下のエラーとなりました.

distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

そこで,こちらの記事を参考にし,Unofficial Windows Binaries for Python Extension Packagesからpyprojのバイナリ(私の環境では,pyproj‑1.9.5.1‑cp36‑cp36m‑win_amd64.whl)をダウンロードします.通常は以下のフォルダにダウンロードされるようです.

 C:\Users\ユーザー名\Downloads

次に以下のようにしてインストールします.

C:\Users\ユーザー名\Downloads> python -m pip install pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
以下のようになりました
Processing c:\users\ユーザー名\downloads\pyproj-1.9.5.1-cp36-cp36m-win_amd64.whl
Installing collected packages: pyproj
Successfully installed pyproj-1.9.5.1

Jupyter notebookを立ち上げ,pyprojをimportします.なお,numpyもimportにしておきます.

In [1]: import pyproj
        import numpy as np

測地系等について

こちらの記事が大変参考になります.世界測地系平面直角座標は東京湾あたりですと,9系EPSG2451,世界測地系JGD2000(緯度経度座標)はEPSG4612とのことです.平面直角座標についてはこちらが参考になります.

緯度経度座標から平面直角座標へ変換

準備が整いましたので,こちらの記事を参考にし,いよいよ緯度経度座標から平面直角座標へ変換します.南北がX座標,東西がY座標であることに注意しましょう.

In [2]: lat = 35.679933
        lon = 139.714465

        EPSG4612 = pyproj.Proj("+init=EPSG:4612")
        EPSG2451 = pyproj.Proj("+init=EPSG:2451")
        y,x = pyproj.transform(EPSG4612, EPSG2451, lon,lat)

        print("x = ", x)
        print("y = ", y)

latやlonにはリストやnumpyのarrayを渡すこともできます.

In [3]: lata = np.array([35.6, 35.6])
        lona = np.array([139.7, 139.7])
        ya, xa = pyproj.transform(EPSG4612, EPSG2451, lona,lata) 

結果はこちらのサイトで検証できます.

Python 3.6で緯度経度座標から平面直角座標へ変換” に対して3件のコメントがあります。

  1. 劉非 より:

    the module 'utm' can also be used to transform lon lat into cartesian coordinates or inverse, and it can tell the UTM zone number.
    pip install utm

    1. jsasaki より:

      Thank you Liu for your comment. However, my intention was converting to the Japan's plane rectangular coordinate system, in which accuracy is higher than in UTM in Tokyo Bay or narrow domains. pyproj (proj) is the most common and generalized tool to convert among wide variety of coordinates, including UTM, and I recommend you to use it.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください