ArcPy(ArcGIS10)に関する覚書 †ワイルドカードを用いて複数ファイルを指定する †マージなどの複数のデータを入力する処理を行う際に
ワイルドカードを用いてファイルを指定する手順
河口から流路延長1kmごとにポイントを発生させる処理 †あまり美しくないですが・・ あと大学じゃないと(=arcinfoがないと)できません # Set the necessary product code # Import arcpy module # 必要なエクステンションの指定 # 河口のポイントデータ(test_shisetsu)とネットワークデータセット(test02_ND)を指定する # ワークスペースの指定 #変数xを1000から100000まで1000間隔で繰り返し処理する
except:
NetworkAnalystのサービスエリア解析で得られた結果にIDを振ってまとめる処理 †(特定の方向けに作ったので意味不明だと思いますが・・)~ やはりあまり美しくないですね・・ # Import arcpy module # Import glob module # Local variables: # temporary workspace try: for x in range(0, 11000, 1000):
#変数の宣言
plus = int(x) + 1000
plusstr = str(plus)
mkyori = str(x)
layer1 = str(x)[:-3] + "L"
formula1 = "\"ToCumul_di\">" + str(x) + "AND" + "\"ToCumul_di\"<=" + plusstr
output1 = tempWorkspace + "\\sec_" + str(x)[:-3] + ".shp"
output2 = results + "\\sec_" + str(x)[:-3] + "_with_att.shp"
bufoutput1 = tempWorkspace + "\\buf_" + str(x)[:-3] + "_sec.shp"
bufoutput2 = tempWorkspace + "\\buf_" + str(x)[:-3] + "_sec_s.shp"
buflayer = str(x)[:-3] + "BL"
buflayer2 = buflayer
buflayer3 = buflayer
buflayer4 = buflayer
buflayer5 = buflayer
parameter = "OBJECTID \"OBJECTID\" true true false 9 Long 0 9 ,First,#," + output1 + ",OBJECTID,-1,-1;FacilityID \"FacilityID\" true true false 9 Long 0 9 ,First,#," + output1 + ",FacilityID,-1,-1;FromCumul_ \"FromCumul_\" true true false 19 Double 0 0 ,First,#," + output1 + ",FromCumul_,-1,-1;ToCumul_di \"ToCumul_di\" true true false 19 Double 0 0 ,First,#," + output1 + ",ToCumul_di,-1,-1;Shape_Leng \"Shape_Leng\" true true false 19 Double 0 0 ,First,#," + output1 + ",Shape_Leng,-1,-1;dist_sec \"dist_sec\" true true false 0 Long 0 0 ,First,#," + bufoutput2+ ",dist_sec,-1,-1;id_sec \"id_sec\" true true false 0 Long 0 0 ,First,#," + bufoutput2 + ",id_sec,-1,-1"
# Process: フィーチャ レイヤの作成 (Make Feature Layer)
arcpy.MakeFeatureLayer_management(sectiondata, layer1, formula1, "", "FID FID VISIBLE NONE;Shape Shape VISIBLE NONE;FacilityID FacilityID VISIBLE NONE;FromCumul_ FromCumul_ VISIBLE NONE;ToCumul_k ToCumul_k VISIBLE NONE;ORIG_FID ORIG_FID VISIBLE NONE;DANGLE_LEN DANGLE_LEN VISIBLE NONE")
# Process: フィーチャのコピー (Copy Features)
arcpy.CopyFeatures_management(layer1, output1, "", "0", "0", "0")
# Process: バッファ(Buffer)
arcpy.Buffer_analysis(layer1, bufoutput1, "0.1 Meters", "FULL", "ROUND", "ALL", "")
# Process: マルチパート → シングルパート(Multipart To Singlepart)
arcpy.MultipartToSinglepart_management(bufoutput1, bufoutput2)
# Process: フィーチャ レイヤの作成(Make Feature Layer)その2
arcpy.MakeFeatureLayer_management(bufoutput2, buflayer, "", "", "FID FID VISIBLE NONE;Shape Shape VISIBLE NONE;OBJECTID OBJECTID VISIBLE NONE;FacilityID FacilityID VISIBLE NONE;FromCumul_ FromCumul_ VISIBLE NONE;ToCumul_di ToCumul_di VISIBLE NONE;Shape_Leng Shape_Leng VISIBLE NONE;id_section id_section VISIBLE NONE;BUFF_DIST BUFF_DIST VISIBLE NONE;ORIG_FID ORIG_FID VISIBLE NONE")
# Process: フィールドの追加(Add Field)
arcpy.AddField_management(buflayer, "dist_sec", "LONG", "", "", "", "", "NON_NULLABLE", "NON_REQUIRED", "")
# Process: フィールドの追加(Add Field) その2
arcpy.AddField_management(buflayer2, "id_sec", "LONG", "", "", "", "", "NON_NULLABLE", "NON_REQUIRED", "")
# Process: フィールド演算(Calculate Field)
arcpy.CalculateField_management(buflayer3, "dist_sec", mkyori, "VB", "")
# Process: フィールド演算(Calculate Field)その2
arcpy.CalculateField_management(buflayer4, "id_sec", "[FID]+1", "VB", "")
# Process: 空間結合(Spatial Join)
arcpy.SpatialJoin_analysis(output1, bufoutput2, output2, "JOIN_ONE_TO_ONE", "KEEP_COMMON", parameter, "WITHIN", "", "")
print mkyori except: print "error" # 出力ファイルの指定 # ワイルドカードを使用して入力データリストを指定 # Process: マージ (Merge) # Process: ディゾルブ(Dissolve) print "finish" |