goo blog サービス終了のお知らせ 

ArcGISのデータ作成サポートページ

ArcGISデータ作成に関する情報共有のページです

pythonコード(多変量変数を用いる場合)

2014-02-06 15:44:18 | 日記
フィールド演算で「コードブロック」として入力する内容(def で始まる一連の記述)には、Python の文法に従って関数を定義します。お知らせ頂いた FAQ に記載の例では、Reclass という名前の関数を定義しており、ひとつの引数(関数への入力パラメータ:temperature)を受け取っています。

関数が受け取ることのできる引数の数は制限されません。たとえば気温の他に降水量も必要な場合は、関数 Reclass の定義を修正し、def Reclass(temperature, precip): などとすることで 2 つの引数を受け取れるようになります。

もちろん、関数を呼び出す側、現在 Reclass( !TempAug15! ) となっている箇所も、Reclass( !TempAug15!, !Precipitation! ) のように修正が必要です。

あとは、関数 Reclass の中で 2 つの変数を使ったロジックを書いていく、ということになります。この関数の return する値が、フィールド演算で最終的にフィールドに設定される値となりますので、2 つの変数を使ってご希望の文字列を return するようにしてください。

(ご参考)Python 2.7.2 ドキュメント 4.6. 関数を定義する
http://docs.python.jp/2.7/tutorial/controlflow.html#tut-functions

関数内部のロジックなど、実装方法については ArcGIS 特有の使い方というよりも、プログラミング言語 Python の使い方になります。Python の学習に関しては、優れたサイトなどが多数あるようですので、一通り基礎的な部分を習得されますと ArcGIS での活用に役立つものと思います。

また、ArcGIS のフィールド演算における Python の記述や、arcpy と呼ばれる ArcGIS 特有の Python モジュールの使い方などでご不明点がある場合には、別途有償の「開発者サポート」サービスにて承っておりますので、ご検討頂ければと思います。

■開発者サポートサービス内容
http://www.esrij.com/services/dev-support/details/

とあるポイントに対してラインまでの距離が一番短い場所を抽出

2014-02-06 15:39:33 | 日記
2通りの方法がある。
どちらも最短距離が算出でき、その他の点が異なる。

○ ArcToolbox の [最近接(Near)] ツール ←何故か上手いいかない、下段の方式を利用する方がベター
ArcToolbox → [解析 ツール] → [近接] → [最近接(Near)]

このツールによって、各ポイントに対して、ライン シェープファイルのラインフィーチャの中で、最短距離、最短のラインフィーチャの ID、ライン フィーチャ上で最も近い位置のXY座標、角度 を算出し、ポイント フィーチャの属性に付与できる。

※ [最近接(Near)] ツールは入力データを上書きしてしまうので、実行前に必ずデータのバックアップを行う必要がある。

ツールのヘルプページはこちら
http://resources.arcgis.com/ja/help/main/10.2/0008/00080000001q000000.htm


○ ArcToolbox の [空間結合(Spatial Join)] ツール
ArcToolbox → [解析 ツール] → [オーバーレイ] → [空間結合(Spatial Join)]

ツールのパラメーターとして、以下を設定。

 ターゲット フィーチャ:家屋情報のポイント フィーチャクラス
 結合フィーチャ:ライン フィーチャクラス
 出力フィーチャクラス:ツールが結果として新規作成するフィーチャクラスを指定します。
 結合方法:JOIN_ONE_TO_ONE
 マッチ オプション:CLOSEST
 検索範囲:適当な数値を入力します。各ポイントに対して、この項目に入力された範囲のラインを検索します(入力不要)。
 距離フィールド名:結果フィーチャクラスの距離フィールド名を指定します(入力必須)。

このツールの処理により、各ポイントに対して、ライン シェープファイルのラインフィーチャの中で、最短距離と、最短のラインフィーチャの IDを算出。結果は新しく出力されたポイント フィーチャの属性に付与される。

ツールのヘルプページはこちら
http://resources.arcgis.com/ja/help/main/10.2/0008/00080000000q000000.htm

建物構造・周辺建物数・浸水深から全壊確率の推定コード(Python)

2014-02-06 01:12:42 | 日記
条件式
Reclass( !建物構造!, !SurBuildCount!, !浸水位! )

コードブロック
def Reclass(type,num,inun):

if (type == 1 and num == 0 and inun < 1.0 and inun >= -99.9):
return 0.0
elif (type == 1 and num == 0 and inun < 2.0 and inun >= 1.0):
return 10.0
elif (type == 1 and num == 0 and inun < 3.0 and inun >= 2.0):
return 70.0
elif (type == 1 and num == 0 and inun < 4.0 and inun >= 3.0):
return 80.0
elif (type == 1 and num == 0 and inun < 5.0 and inun >= 4.0):
return 80.0
elif (type == 1 and num == 0 and inun < 6.0 and inun >= 5.0):
return 80.0
elif (type == 1 and num == 0 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 1 and num == 0 and inun < 8.0 and inun >= 7.0):
return 90.0
elif (type == 1 and num == 0 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 1 and num == 0 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 1 and num == 0 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 1 and num == 0 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 1 and num == 0 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 1 and num == 0 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 1 and num == 0 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 1 and num == 0 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 1 and num == 0 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 1 and num == 0 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 1 and num == 0 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 1 and num == 0 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 1 and num == 0 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 1 and num < 4 and num >= 1 and inun < 1.0 and inun >= -99.9):
return 10.0
elif (type == 1 and num < 4 and num >= 1 and inun < 2.0 and inun >= 1.0):
return 40.0
elif (type == 1 and num < 4 and num >= 1 and inun < 3.0 and inun >= 2.0):
return 50.0
elif (type == 1 and num < 4 and num >= 1 and inun < 4.0 and inun >= 3.0):
return 60.0
elif (type == 1 and num < 4 and num >= 1 and inun < 5.0 and inun >= 4.0):
return 70.0
elif (type == 1 and num < 4 and num >= 1 and inun < 6.0 and inun >= 5.0):
return 90.0
elif (type == 1 and num < 4 and num >= 1 and inun < 7.0 and inun >= 6.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 1 and num < 4 and num >= 1 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 1 and num >= 4 and inun < 1.0 and inun >= -99.9):
return 30.0
elif (type == 1 and num >= 4 and inun < 2.0 and inun >= 1.0):
return 30.0
elif (type == 1 and num >= 4 and inun < 3.0 and inun >= 2.0):
return 50.0
elif (type == 1 and num >= 4 and inun < 4.0 and inun >= 3.0):
return 50.0
elif (type == 1 and num >= 4 and inun < 5.0 and inun >= 4.0):
return 70.0
elif (type == 1 and num >= 4 and inun < 6.0 and inun >= 5.0):
return 80.0
elif (type == 1 and num >= 4 and inun < 7.0 and inun >= 6.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 1 and num >= 4 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 2 and num == 0 and inun < 1.0 and inun >= -99.9):
return 10.0
elif (type == 2 and num == 0 and inun < 2.0 and inun >= 1.0):
return 20.0
elif (type == 2 and num == 0 and inun < 3.0 and inun >= 2.0):
return 50.0
elif (type == 2 and num == 0 and inun < 4.0 and inun >= 3.0):
return 70.0
elif (type == 2 and num == 0 and inun < 5.0 and inun >= 4.0):
return 90.0
elif (type == 2 and num == 0 and inun < 6.0 and inun >= 5.0):
return 90.0
elif (type == 2 and num == 0 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 2 and num == 0 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 2 and num == 0 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 2 and num == 0 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 2 and num == 0 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 2 and num == 0 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 2 and num == 0 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 2 and num == 0 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 2 and num == 0 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 2 and num == 0 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 2 and num == 0 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 2 and num == 0 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 2 and num == 0 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 2 and num == 0 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 2 and num == 0 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 2 and num < 4 and num >= 1 and inun < 1.0 and inun >= -99.9):
return 40.0
elif (type == 2 and num < 4 and num >= 1 and inun < 2.0 and inun >= 1.0):
return 40.0
elif (type == 2 and num < 4 and num >= 1 and inun < 3.0 and inun >= 2.0):
return 60.0
elif (type == 2 and num < 4 and num >= 1 and inun < 4.0 and inun >= 3.0):
return 70.0
elif (type == 2 and num < 4 and num >= 1 and inun < 5.0 and inun >= 4.0):
return 80.0
elif (type == 2 and num < 4 and num >= 1 and inun < 6.0 and inun >= 5.0):
return 80.0
elif (type == 2 and num < 4 and num >= 1 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 2 and num < 4 and num >= 1 and inun < 8.0 and inun >= 7.0):
return 90.0
elif (type == 2 and num < 4 and num >= 1 and inun < 9.0 and inun >= 8.0):
return 90.0
elif (type == 2 and num < 4 and num >= 1 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 2 and num < 4 and num >= 1 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 2 and num >= 4 and inun < 1.0 and inun >= -99.9):
return 40.0
elif (type == 2 and num >= 4 and inun < 2.0 and inun >= 1.0):
return 40.0
elif (type == 2 and num >= 4 and inun < 3.0 and inun >= 2.0):
return 60.0
elif (type == 2 and num >= 4 and inun < 4.0 and inun >= 3.0):
return 60.0
elif (type == 2 and num >= 4 and inun < 5.0 and inun >= 4.0):
return 80.0
elif (type == 2 and num >= 4 and inun < 6.0 and inun >= 5.0):
return 80.0
elif (type == 2 and num >= 4 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 2 and num >= 4 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 2 and num >= 4 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 3 and num == 0 and inun < 1.0 and inun >= -99.9):
return 40.0
elif (type == 3 and num == 0 and inun < 2.0 and inun >= 1.0):
return 40.0
elif (type == 3 and num == 0 and inun < 3.0 and inun >= 2.0):
return 60.0
elif (type == 3 and num == 0 and inun < 4.0 and inun >= 3.0):
return 80.0
elif (type == 3 and num == 0 and inun < 5.0 and inun >= 4.0):
return 90.0
elif (type == 3 and num == 0 and inun < 6.0 and inun >= 5.0):
return 90.0
elif (type == 3 and num == 0 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 3 and num == 0 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 3 and num == 0 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 3 and num == 0 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 3 and num == 0 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 3 and num == 0 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 3 and num == 0 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 3 and num == 0 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 3 and num == 0 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 3 and num == 0 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 3 and num == 0 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 3 and num == 0 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 3 and num == 0 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 3 and num == 0 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 3 and num == 0 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 3 and num < 4 and num >= 1 and inun < 1.0 and inun >= -99.9):
return 30.0
elif (type == 3 and num < 4 and num >= 1 and inun < 2.0 and inun >= 1.0):
return 40.0
elif (type == 3 and num < 4 and num >= 1 and inun < 3.0 and inun >= 2.0):
return 60.0
elif (type == 3 and num < 4 and num >= 1 and inun < 4.0 and inun >= 3.0):
return 70.0
elif (type == 3 and num < 4 and num >= 1 and inun < 5.0 and inun >= 4.0):
return 90.0
elif (type == 3 and num < 4 and num >= 1 and inun < 6.0 and inun >= 5.0):
return 90.0
elif (type == 3 and num < 4 and num >= 1 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 3 and num < 4 and num >= 1 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 3 and num < 4 and num >= 1 and inun < 99.0 and inun >= 20.0):
return 100.0

elif (type == 3 and num >= 4 and inun < 1.0 and inun >= -99.9):
return 30.0
elif (type == 3 and num >= 4 and inun < 2.0 and inun >= 1.0):
return 30.0
elif (type == 3 and num >= 4 and inun < 3.0 and inun >= 2.0):
return 50.0
elif (type == 3 and num >= 4 and inun < 4.0 and inun >= 3.0):
return 70.0
elif (type == 3 and num >= 4 and inun < 5.0 and inun >= 4.0):
return 90.0
elif (type == 3 and num >= 4 and inun < 6.0 and inun >= 5.0):
return 90.0
elif (type == 3 and num >= 4 and inun < 7.0 and inun >= 6.0):
return 90.0
elif (type == 3 and num >= 4 and inun < 8.0 and inun >= 7.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 9.0 and inun >= 8.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 10.0 and inun >= 9.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 11.0 and inun >= 10.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 12.0 and inun >= 11.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 13.0 and inun >= 12.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 14.0 and inun >= 13.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 15.0 and inun >= 14.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 16.0 and inun >= 15.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 17.0 and inun >= 16.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 18.0 and inun >= 17.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 19.0 and inun >= 18.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 20.0 and inun >= 19.0):
return 100.0
elif (type == 3 and num >= 4 and inun < 99.0 and inun >= 20.0):
return 100.0

else:
return -99.9