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" |