pythonでスクリプトを書いてcsvのテーブルを読み込ませる時、ドキュメント*1に従って記載すると
csv_path = "file:///作業フォルダーまでのパス/csv_datas/なんかいっぱい入ったテーブル.csv?なんかオプション" csv_table = QgsVectorLayer(csv_path, "レイヤーの名前", "delimitedtext") QgsProject.instance().addMapLayer(csv_table)
とのようになる。
で、実際にこのようにコードを記載した時に読み込めないことがあってすごく困った。
ちなみにcsvじゃないshpファイルを読み込む時は
chr_dir = os.getcwd() file_path = f"{chr_dir}/shp_files/シェープファイル.shp" shp_file = QgsVectorLayer(file_path, "なんかのマップ", "ogr") QgsProject.instance().addMapLayer(shp_file)
で問題なく読めたりする。
原因と対策
【原因】ファイルのパスに全角文字が含まれている
これがあるとまず読み込めない。2020年代にもなってまだこんな話があるのかと思ったけど、実際今回の原因がこれだったので仕方ない。
古い時代のQ-GISでは「パスに半角英数字以外が入るとエラーになるので、保存先とファイル名に2バイト文字(日本語とか)が入らないようにしてください*2」と記載があるとはいえ、現在の3系統では概ね「レイヤ>レイヤを追加>CSVテキストレイヤを追加」から選択すれば読み込みができるので、こういう事態が未だに起きることは想定外であった。読み込めなくてもエラーで止まらないし。
【対策】ファイルのパスに関わるところに全角文字を入れない
基本的な方法だけど大事。
ファイル名やフォルダー名は極力半角で名前をつける。
それだけで割と回避できる。