基準点成果サービスを使用してターゲットファイルを作成する方法

,

GeoDiveExaの精度や動作確認をするために基準点を計測する場合が有ります。事前に基準点をターゲットとしておくと計測作業がやり易くなります。

1)基準点サービスから基準点をkmlファイルとしてダウンロードする方法

RTK-GNSS受信機の精度調査や計測時のキャリブレーションとして正確な位置がわかっている基準点を利用する場合があると思います。
その場合、国土地理院の基準点成果等閲覧サービスサイトから基準点情報をCSVファイルで取得すると便利です。PC版基準点検索入り口をクリックすると以下の様な画面が表示されます。

PC版基準点検索入り口

使い方は簡単です。基準点が欲しいい地域に移動・拡大・縮小して基準点を取得したい地域を表示します。取得したい基準点にチェックして「検索」ボタンを押すと、基準点位置にアイコンが表示されます。

基準点検索した結果例

検索結果をリスト表示」をクリックすると検索結果がリスト表示されます。

検索結果リスト

KMLファイル出力」をクリックすると最初ならログイン画面が表示されます。

地理院のIDとパスワードを入れてログインしてください。

無い場合は「新規登録」を押して、IDとパスワードを登録してください。

ログインすると利用目的選択画面が出ますので、利用目的に応じた項目を登録してください。

再度「KMLファイル出力」をクリックすると検索した基準点のkmlファイルがダウンロードフォルダーにダウンロードされます(=例では20240714_173532_Public.kmlになりました)。
20240714_173532_Public.kmlファイルをGoogleEarthで表示すると次の様になりました。

Screenshot

2)ダウンロードした基準点kmlをターゲットファイルに変換する方法

以前はcsvファイルとしてダウンロード出来て居たのですが、24/7/14現在はkmlファイルのみになって居ました。kmlファイルの緯度経度部分を抽出して作成する事になります…が、面倒なので簡単なpythonプログラムを作成します。

2-1)kmlファイルからtarget.csvを作成するpythonプログラム

pykmlを使用しますのでpipなどで事前にインストールしてください。

<kml2target.py ソース>
# coding: utf_8
import sys
from pykml import parser

# ----------------------------------------------------------
# 国土地理院の「基準点成果サービス」で取得したkmlファイルを読み込み
# 緯度経度と基準点名をリストを取得する「
#----------------------------------------------------------
#  kmlファイルを読み込み、target.csv用のデータを抽出する
def kmlread(kmlFilePath):
    f = open(kmlFilePath)
    # folder = parser.parse(f).getroot().Document.Folder
    doc = parser.parse(f).getroot().Document
    #
    csvList = list()
    no = 0
    for pm in doc.Placemark:
        no += 1
        #
        cod = pm.Point.coordinates
        xy = cod.text.split(',')
        dat = f"{no},{pm.name},{xy[1]},{xy[0]},"
        csvList.append(dat)
    #
    return csvList

# ----------------------------------------------------------
# 緯度経度と基準点名リストからGeoDiveExaで使用するtarget.csvを作成する
# ----------------------------------------------------------
#  target.csv用のデータからcsvファイルを作成する
def markTargetCsv(csvFilePath,csvList):
    csvF = open(csvFilePath,'w')
    csvF.write("no,name,lat,lon,etc\n")
    for dat in csvList:
        csvF.write(f"{dat}\n")
    #
    csvF.close()

# ----------------------------------------------------------
# 起動方法: > python kml2target.py <kmlファイルパス> <csvファイルパス>
# 注意:引数が無い場合、デフォルトを使用して実行します。
#   デフォルト: kml = target.kml   csv= target.csv
# ----------------------------------------------------------
if __name__ == '__main__':
    # 入力kmlパス設定
    if len(sys.argv) > 1:
        kmlFilePath = sys.argv[1]
    else:
        kmlFilePath = "target.kml"
    #
    if len(sys.argv) > 2:
        csvFilePath = sys.argv[2]
    else:
        csvFilePath = "target.csv"
    #
    print(f"kml2csv {kmlFilePath} {csvFilePath} start")
    # no,name,lat,lonのリスト作成
    csvList = kmlread(kmlFilePath)
    # target.csvを作成する
    markTargetCsv(csvFilePath,csvList)
    print(f"kml2csv end : ターゲット数={len(csvList)}")

2−2)kml2target実行方法

以下の例の様に python kml2target.py <kmlファイルパス> で実行します。正常に終了するとtarget.csvが作成されます。

 % python kml2target.py 20240714_173532_Public.kml 
kml2csv 20240714_173532_Public.kml target.csv start
kml2csv end : ターゲット数=21

2−3)作成されたtarget.csv例

no,name,lat,lon,etc
1,1017A,33.11716353,131.79264194,
2,1018A,33.11577311,131.78701361,
3,1016A,33.11982167,131.78080553,
4,1014A,33.12041378,131.79616508,
5,1015A,33.12008394,131.80034064,
6,1022A,33.11323800,131.79034514,
7,1023A,33.11217883,131.79814067,
8,1021A,33.11383028,131.80252978,
9,1019A,33.11573050,131.78201331,
10,1020A,33.11409944,131.81054642,
11,1013A,33.12032889,131.80773642,
12,1006A,33.12770828,131.78966294,
13,1007A,33.12730267,131.80994589,
14,1005A,33.12944533,131.80125669,
15,1003A,33.13273572,131.78616981,
16,1004A,33.13031831,131.78274542,
17,1011A,33.12286456,131.78517758,
18,1012A,33.12052569,131.79104242,
19,1010A,33.12377119,131.78067372,
20,1008A,33.12501889,131.79364347,
21,1009A,33.12477981,131.79953981,

3)ターゲットファイルをGeoDiveExaに配置する方法

ブログ記事ターゲットファイル説明とGeoDiveExaに設定する方法を参照してください。

4)GeoDiveExaのターゲット表示例

GeoDiveExaのgpsフォルダーにtarget.csvを配置すると、ターゲットアイコンが表示されます。

5)pythonについて

今回基準点成果等閲覧サービスからダウンロードするファイル形式がkmlになった為、急遽pythonで変換プログラム(=kml2target.py)を作りましたが、pythonは便利なので覚える事は良い事だと思います。

思いつくメリットは….

1。地図関係で仕事するならQGISは無視出来ません。QGISpythonで機能拡張できますので、pythonが使えればQGISルーチンワークを半自動化できます。
2。昨今のAIブームですが、AI関連開発はpythonが主流です。ChatGPTpythonから使用できるAPIがあり、自分専用ChatGPTアプリをpythonで作成出来ます。

あとは、MS-Copilotさんに追記お願いします。

Pythonを覚えるメリットはたくさんあります。以下にいくつかのポイントを挙げてみますね:
1. **読みやすさとシンプルさ**: Pythonはコードがシンプルで読みやすいので、初心者でも理解しやすいです。例えば、「Hello, World!」を表示するコードは `print("Hello, World!")` だけです¹。
2. **豊富なライブラリ**: Pythonには多くのライブラリがあり、データ分析、機械学習、ウェブ開発など様々な分野で活用できます。これにより、効率的に開発を進めることができます²。
3. **多用途性**: Pythonはウェブ開発、データサイエンス、人工知能、機械学習、自動化スクリプトなど、幅広い分野で使用されています³。
4. **大規模なコミュニティ**: Pythonのユーザーコミュニティは非常に大きく、質問や問題解決のためのリソースが豊富です⁴。
5. **高い需要**: Pythonは多くの企業で使用されており、特にAIやデータサイエンスの分野での需要が高まっています²。
Pythonを学ぶことで、キャリアの幅が広がるだけでなく、日常的なタスクの自動化などにも役立ちます。興味があれば、ぜひ挑戦してみてください!

¹: [Pythonのメリット・デメリットを簡潔にまとめてみた](https://www.sejuku.net/blog/107708)
²: [Python入門 学習のメリットから将来性までを徹底解説](https://itc.tokyo/python/python-learning-pros-cons/)
³: [Python(パイソン)の特徴と勉強方法を解説](https://studycode.jp/language/python/)
⁴: [Pythonの特徴と習得するメリット](https://datamix.co.jp/media/datascience/python-features-merit/)

QGIS-pythonで良さそうな本をAmazonで検索してみました。

QGIS-pythonの説明書籍は日本語では見つけられませんでした。

英語ならばある様です。

AI-pythonならば山ほどありますのでより取りみどりです。

現在ChatGPTは一番気になる存在なので買った本です。今後使う可能性があると思って居ますので、APIの概要を見てみようと思い購入しました。

ChatGPTが出る前(=3年前)に買った本です。ChatGPT以前のAI基礎が学べます。ChatGPT前後で世の中が大きく変わりました….が、ある程度基礎を知らないと今のLLMモデル全盛時代が理解できないので見てみるのは良いかもしれません。


コメントを残す

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

PAGE TOP