Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
FOSS4G 山陰Meetup 2024/ QGIS Processing でのGRASSのエ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
OSGeo.JP
September 20, 2024
47
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
FOSS4G 山陰Meetup 2024/ QGIS Processing でのGRASSのエラーの調査
FOSS4G 山陰Meetup 2024 もくもく会で @picaosgeoさんが行われた、QGIS Processing でのGRASSのエラーの調査に付いての報告。
OSGeo.JP
September 20, 2024
More Decks by OSGeo.JP
See All by OSGeo.JP
Advancing the 3D Geospatial Ecosystem in Japan via Global Collaborations
osgeojp
0
3.4k
農業用ダム監視を目的とした衛星SAR 干渉解析の適用性について
osgeojp
0
3.4k
FOSS4G 2023 Japan@FUKUI 佐橋 功一様、 新垣 仁様 発表資料
osgeojp
0
360
FOSS4G 2023 Japan@FUKUI 白土 洋介様 発表資料
osgeojp
0
840
FOSS4G 2023 Japan@FUKUI 熊谷康太様発表資料
osgeojp
0
280
FOSS4G 2023 Japan@FUKUI 小林裕之様発表資料
osgeojp
0
860
吉中輝彦様 QGISで扱うラスタレイヤ (FOSS4G 2022 Japan Online)
osgeojp
0
85
原田 豊様 Windows版『聞き書きマップ』のQGISプラグイン化
osgeojp
0
480
吉中輝彦様 QGISと点群とPLATEAUと
osgeojp
0
2.1k
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
270
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
New Earth Scene 8
popppiees
3
2.5k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
480
How to Ace a Technical Interview
jacobian
281
24k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
How STYLIGHT went responsive
nonsquared
100
6.3k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
650
Transcript
QGIS processing の GRASS/SAGA バッチ 処理時の unicode エラーについての調査 FOSS4G ⼭陰
Meetup 2024 @picaosgeo QGIS の processing ツ ー ル に お い て 、 GRASS/SAGA の フ ァ ン ク シ ョ ン を バ ッ チ 処 理 す る 際 に UnicodeDecodeError が発⽣するケースが存在することについて、原因と対応状況をまとめました。 【現象報告と経過】 2022 年 11 ⽉ 14 ⽇⽉曜⽇ 16:15:11 UTC+9 GuLaNak 22: いつもお世話になっております。 私は GRASS 機能の v.set.distance 機能を⽤いて、点から避難施設位置への最短経路探索を⾏い、 避難者の割り当てを⾏いたいのですが、エラーで UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 35: illegal multibyte sequence と出てしまい、これは⽂字コードの違いによるエラーとはわかるの ですが、これは⽤いているレイヤのデータの⽂字コードを shift-JIS にしなければいけないという認識でよろ しいでしょうか? それともパスに全⾓⽂字が含まれてはいけないという認識でしょうか? 私はユーザーフォルダ名に全⾓⽂字とスペースが使われておりますが、違うアカウントでユーザー名に半⾓ しか⽤いていないアカウントでも同様のエラーが発⽣してしまいます。 もしなにか解決策があればお願いします。 これ以外に必要な情報があればお願いします。 初めての質問で、ご迷惑をおかけします QGIS のバージョン:3.22.10 OS:Windows 10 2022 年 11 ⽉ 14 ⽇⽉曜⽇ 17:01:06 UTC+9 GuLaNak 22: エラーメッセージ Traceback (most recent call last): File "C:\PROGRA~1/QGIS32~1.10/apps/qgis-ltr/./python/plugins\grassprovider\Grass7Algorithm.py", line 433, in
processAlgorithm Grass7Utils.executeGrass(self.commands, feedback, self.outputCommands) File "C:\PROGRA~1/QGIS32~1.10/apps/qgis-ltr/./python/plugins\grassprovider\Grass7Utils.py", line 397, in executeGrass
for line in iter(proc.stdout.readline, ''):UnicodeDecodeError: 'cp932' codec can't decode byte 0x84 in position 35: illegal multibyte sequence Execution failed after 0.62 秒(seconds) 出⼒レイヤの読み込み 次のレイヤは正しく⽣成されませんでした。 C:/Users/◦◦◦◦/AppData/Local/Temp/processing_odreTI/38bad66d5c174a9295bf22b9d4ad8c6a/output. gpkg QGIS メインウィンドウの"ログメッセージパネル"をチェックすると、アルゴリズムの実⾏に関する詳 細情報が表⽰されます。 2022 年 11 ⽉ 14 ⽇⽉曜⽇ 17:01:06 UTC+9 GuLaNak 22: 嘉⼭と申します (ご本⼈には重複返信してしまったかもしれません) このエラーは以前も報告されていて GRASS のコマンドを QGIS の Python の⼦プロセスとして 動かしてみて、その時の出⼒結果⽂字列を Python プログラム内で取り込んで解釈しようとしたら デコードできなかったという話だったと思います。 データやら実⾏環境やらをいろいろ変えてもうまくいかなかったです。 エラーの修正はむつかしそうなので 単体の GRASS で同じデータに対して処理を⾏ったらうまくいったと いう話が以前はありました。去年の今頃の話題になってました。 Windows での問題で Mac や Linux ではうまくいくみたいな話だったかな ワールドワイド⾔語サポートで Unicode UTF-8 を使⽤という設定にすると警告: マップセットの平⾏ロック はウィンドウズではサポートされていません。が出るという感じだったかな。 早い解決策はコマンドラインの GRASS で処理してみるのがいいみたいです。 mooya 2022/11/15 12:09:32 To: QGIS 初⼼者質問グループ こんにちは 3.16 の exe 版をインストールして、with Grass のショートカットで起動すると使えると思います。この場 合も多バイト⽂字は使えません。 https://download.qgis.org/downloads/QGIS-OSGeo4W-3.16.16-1-Setup-x86_64.exe 本家にも issue が上がっますが、なかなか、 、
https://github.com/qgis/QGIS/issues/29712 Missing CP949 (Korean) encoding at GRASS processing #29712 https://github.com/qgis/QGIS/issues/29712
v.clean UnicodeDecodeError when special character (German Umlaute) in path #29845 https://github.com/qgis/QGIS/issues/29845 【バグフィックス】 本件に関して、MIERUNE の Kanahiro Iguchi さんがパッチを提供して、Sep 26, 2022 でマージされていま す。 Fix GRASS7/SAGA UnicodeDecodeError in QGIS of Windows-Japanese or others #49226 https://github.com/qgis/QGIS/pull/49226 https://github.com/qgis/QGIS/pull/49226/commits/3908efb4ba1db51394c17dcebc14eab98067a781 python/plugins/grassprovider/Grass7Utils.py ex) C:\Program Files\QGIS 3.34.10\apps\qgis-ltr\python\plugins\grassprovider\Grass7Utils.py 原因:GRASS の stdout の⽂字列リードに失敗した場合、エラーとして''(空⽂字)を返していた。 変更:UnicodeDecodeError の場合に''(空⽂字)を返す様にした。 上記のファイルの python コードを確認して、 この様になっていれば、発⽣しないということになっています。 対応/⾮対応のチェック結果は下記の通りです。 QGIS3.1.x〜QGIS3.21.x:パッチ⾮対応(未チェック) QGIS3.22.0:パッチ⾮対応 def readline_with_recover(stdout): """A method wrapping stdout.readline() with try-except recovering. detailed in https://github.com/qgis/QGIS/pull/49226 Args: stdout: io.TextIOWrapper - proc.stdout Returns: str: read line or replaced text when recovered """ try: return stdout.readline() except UnicodeDecodeError: return '' # replaced-text
QGIS3.24.3:パッチ⾮対応 QGIS3.28.0:パッチ対応済 QGIS3.28.1:パッチ対応済 QGIS3.34.1:パッチ対応済 旧バージョンで発⽣する場合、Grass7Utils.py の該当箇所を同じ様に修正すると良いと思われます。 なお SAGA についても同様のパッチがマージされています。 【その他の確認事項】
QGIS から GRASS processing サービスの起動については下図のバッチ処理を経由しています。 ・apps\grass\grass84\etc\env.bat(13)で、GRASS_PYTHON 環境変数を作成する ・bin\grass84.bat(18)で、%GRASS_PYTHON% %GISBASE%\etc\grass84.py %* を ⼦プロセス起動する ・bipython-grass84.bat(16)で、%GRASS_PYTHON% %* を ⼦プロセス起動する 上記のバッチ処理部分では、⼦プロセス起動の場合の UTF8 コードページ 65001 を固定しておらず、英語環 境以外では、起動時の状況で 932 からデフォルトのコードページ 437 に変化する可能性があります。 コードページ 65001 の状態では、ANSI 出⼒に UTF8 のテキストが流れてくることを前提にしていて、ANSI 出⼒でテキスト出⼒したりするときに⽂字コードの変換は⾏いませんので、既存の Shift_JIS のテキストを ANSI 出⼒するようなコマンドを実⾏すると標準出⼒が⽂字化けします。 フォントの環境変数の問題 apps\grass\grass84\etc\env.bat(16)で、FONTCONFIG=%GISBASE%\etc\fonts.conf 環境変数が設定され るが windows 版インストーラ版では fonts.conf ファイルがない。 qt および GRASS-GIS/SAGA で画⾯上のフォント表⽰が異常になる場合、 fonts.conf を参照しようとして失敗 したあとの処理に問題があると考えられます。 processing についてはコミット:3908efb4ba1db51394c17dcebc14eab98067a781 で回避されるはずです。 -以上-