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)

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