コメントは受け付けていません。libraryを使用した汎用性を考えたcodeを学んでおきます。Developmentを参考にして、実践的に使えるPythonでGeoSpatialの使い方を学んでいくものです。code等に関しては、あくまでも参考としてください。なにがあっても責任とれませんので。PythonとGeoSpatialに関するlibraryが設定できているもとして進めていきます。fileにfileの存在場所をハードコーディングして、汎用性がないcodeでした。PyScripterのrunボタンを使ってインタープリタ画面に結果を出力していました。programを実行し、任意の場所のfileが読み込めるように修正してみましょう。sys.exit(1)のようにします。パラメータを渡すことを意味します。この場合、sys.argv[0]には、calcFeatureLengths.pysys.argv[1]には、test_file.shpがsys.argvにimportされます。codeを作成してみましょう。codeとりあえず、Ediorで下記のcodeを入力して、保存します。folderにcalcFeatureLengths.pyで保存します。totLength/1000)[/python]注意)上記codeで¥は全角ですので、半角にするかもしくは、バックスラッシュに置き換えてください。F:¥¥shapefile_data¥¥TM_WORLD_BORDERS-0.3.shpと入力後、実行すると、のように各国の国土の総延長距離が計算されます。promptの入力画面となります。codeの説明calcFeatureLengths.pyが何を行っているのかを順にみていきましょう。pyprojosgeoのogrとosrを使います。libraryを使います。geometryからsegmentに分割する関数です。戻り値はsegmentsとなります。segmentとは、「始点と終点をもった途中に座標点を持たない直線」と考えることができます。したがって、lineは複数のsegmentで構成されます。shapefile.GetLayer(0)Shapefileのlayerはただ一つのlayerですから、GetLayer(0)となります。datum='WGS84')読み込んだshapefileのspatialRefをcheckちます。defaultはWGS84です。spatialRef.IsProjected()でprojectionの定義をします。totLength/1000)layer.GetFeatureCount()数でloopします。getLineSegmentsFromGeometryでsegmentに分割します。spatialRef.IsProjected()がtrueの場合、pyproj.transformでWGS84の緯度経度に変換します。分割したsegmentの数だけloopしてgeod.inv(...)で距離を求めます。国土の総延長距離の計算結果を表示します。geod.inv関数とは、PyScripterのインタプリタ上でhelp(geod.inv)でのような引数と関数であることがわかります。うまくhelpを使うことで、それぞれのobjectのmethodなどを確認することができます。0.0これは、エラー回避のためのstatementです。「緯度経度変換にエラーがあった場合は、programが異常終了しないように、segmentの距離を0とします。」と言う意味になります。checkを行い、programの異常終了等がないようにしなければなりません。順番にみていくと理解できると思います。codeについて学びました。これで、5章が終了しました。次回はいよいよGeoSpatialでDatabaseを使う際の準備を行います。Scriptの基本的なことはある程度理解している前提で今後も話を進めていきます。誤字、脱字、spell間違いや勘違いや翻訳間違いなど多々出てくると考えられます。それは違うじゃん!!とかいろんな意見をいただければと思います。Tutorialの目次に戻る。水文水理解析ソフトウェアの販売セール後1日です。水文水理解析ソフトウェアの販売PythonでMySQLを使ってみる。4]PythonでGUIを試してみる。第1弾ExcelでPythonを使ってみる。ExcelでPythonを動かす。3]PythonでExcelを読み書きする。PythonでGeocodingする。2]Pythonで水文水理解析をやってみる。AB-WebLog.com.。