てくてくダイアリー

GISとか使ってました

フォルダ名にえんえん

2012-07-26 | ArcGIS

今日はArcGISでプログラムする人なら、誰でも知っているであろうお話。

昨日ふとArcGISで特定のフォルダにあるシェープファイル名をリストしたくなった。というか、する必要があった。

普段ならDOS窓開いて、*.shpと打つのだが、後々の処理を考えて、ここはひとつArcGISの中でPythonを使ってリストしてみようと思った。

ヘルプによれば、ListFeatureClasses()を使えば、シェープファイルのリストができそうである。ArcGISのヘルプにはサンプルのコードも載っているので、それをテキストエディタにコピペして、作業するフォルダだけを変更し、Pythonを動かしてみた。なんだ、Python、けっこうちょちょいのぱー?

ところが、エラーメッセージこそでないものの、シェープファイル名がリストアップされてこない。なぜに?全然ちょちょいのぱーとはいかない。

自慢じゃないが、Pythonのコードなんて私はほとんど書かない。それなのに、たまにプログラミングをしてみると、たいていちゃんと動かない。たまにやるんだから、もっとこう友好的に初心者に優しく動いてくれてもいいのに。なぜ動かないんだろう。

そうか、たまにやるからか。きっとプログラミングは一見さんお断りなのだ。

しかし、いじけていても仕方がない。気を取り直して、別のマシンで同様の操作をして実行してみた。

するとシェープファイル名がリストされてくる。それこそなぜに?余計に疑問が深まる。このマシンは一見さんOKなのか?

よく、ArcMapでレイヤのコピペすると、データソースのパスがうまく認識できないのと同じ現象だろうか。いやいや、フルパスでフォルダを設定しているのに、それはないだろう。

何回かいろんなフォルダのシェープファイルをリストを試みていくと、リストできるときとできないときがある。ということは、やっぱりフォルダの問題なのだろう。

んじゃあということで、arcpy.env.workspaceで設定したワークスペースを、ListEnvironments()でworkspaceに何が設定されているかを確認する。そうしたら、フォルダ名の一部がしかくく文字化けしているではないか。

この文字化けしているのは、findataという名前のフォルダだった。フォルダの区切り文字である¥マークとfの組み合わせで特殊な文字として認識されてしまうらしい。

果たして、Pythonのドキュメントを見てみると、\fとか\aとか\bとかには特別な意味があるらしい。\tだとタブ、\nだと改行を示すのと同じような感じだろうか。

とすると、フォルダ名がfとかaとかbとかで始まらない方がいいということになる。いや、しかし、それじゃあ、あんまりにもArcGISというかPythonが使いにくすぎる。で、よくよく、Pythonのドキュメントを見ると、¥マークを二つ並べるとバックスラッシュになることが判明。

これからは、Pythonでフォルダ名を設定するときは、C:\\home\\data\\findataというように、全部\\で区切ることにする。まったくえんえん。


最新の画像もっと見る

post a comment

ブログ作成者から承認されるまでコメントは反映されません。