ArcPy
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[ArcGIS]]
*ArcPy(ArcGIS10)に関する覚書 [#x4f227e3]
**ワイルドカードを用いて複数ファイルを指定する [#n467ab7f]
マージなどの複数のデータを入力する処理を行う際に
ワイルドカードを用いてファイルを指定する手順~
>&color(red){'''# globモジュールをインポートする'''};
>import glob~
>&color(red){'''# 出力ファイルのパスと名前を指定'''};
>outputdata = "C:\\temp\\ps_merge_all.shp"~
>&color(red){'''# ワイルドカードを使用して入力データリス...
>files = glob.glob('C:\\temp\\*.shp')~
>&color(red){'''# Process: マージ (Merge)'''};
>arcpy.Merge_management(files, outputdata)~
**河口から流路延長1kmごとにポイントを発生させる処理 [#lb6...
あまり美しくないですが・・
あと大学じゃないと(=arcinfoがないと)できません
&color(red){'''# Set the necessary product code'''};~
&color(red){'''# import arcinfo'''};~
&color(red){'''# Import arcpy module'''};~
import arcpy~
&color(red){'''# 必要なエクステンションの指定'''};~
arcpy.CheckOutExtension("Network")~
&color(red){'''# 河口のポイントデータ(test_shisetsu)とネ...
&color(red){'''# Local variables:'''};~
test_shisetsu = "C:\\temp\\test.mdb\\test_shisetsu"~
test02_ND = "C\\temp\\test.mdb\\test02\\test02_ND"~
&color(red){'''# ワークスペースの指定'''};~
tempWorkspace = "C:\\temp\\temp"~
outputWorkspace = "C:\\temp\\fin"~
&color(red){'''#変数xを1000から100000まで1000間隔で繰り返...
try:
>for x in range(1000, 101000, 1000):
>>&color(red){'''#変数の宣言'''};
>>&color(red){'''#ネットワーク解析レイヤの名前'''};
>>fc = "reach" + str(x)[:-3]
>>&color(red){'''#河口からの距離の変数'''};
>>mkyori = str(x)
>>&color(red){'''#ネットワーク解析レイヤからラインデータ...
>>line_l = "reach" + str(x)[:-3] + "\\ライン"
>>&color(red){'''#ポイントデータのファイル名'''};
>>output1 = tempWorkspace + "\\p_" + str(x)[:-3] + ".shp"
>>&color(red){'''#ポイントデータをレイヤに変換する際の名...
>>layer1 = str(x)[:-3] + "L"
>>&color(red){'''#ポイントデータからデータを抽出する際の...
>>formula1 = "\"ToCumul_k\" =" + str(x)
>>&color(red){'''#最終的なポイントデータのファイル名'''};
>>output2 = outputWorkspace + "\\ps_" + str(x)[:-3] + ".s...
>>&color(red){'''# Process: 到達圏レイヤの作成 (Make Ser...
>>arcpy.MakeServiceAreaLayer_na(test02_ND, fc, "k", "TRAV...
>>&color(red){'''# Process: ロケーションの追加 (Add Loca...
>>arcpy.AddLocations_na(fc, "施設", test_shisetsu, "Name ...
>>&color(red){'''# Process: 解析の実行 (Solve)'''};
>>arcpy.Solve_na(fc, "SKIP", "TERMINATE")
>>&color(red){'''# Process: フィーチャの頂点 → ポイント ...
>>arcpy.FeatureVerticesToPoints_management(line_l, output...
>>&color(red){'''# Process: フィーチャ レイヤの作成 (Mak...
>>arcpy.MakeFeatureLayer_management(output1, layer1, form...
>>&color(red){'''# Process: フィーチャのコピー (Copy Fea...
>>arcpy.CopyFeatures_management(layer1, output2, "", "0",...
>>print mkyori
except:
>print "error"
**NetworkAnalystのサービスエリア解析で得られた結果にIDを...
(特定の方向けに作ったので意味不明だと思いますが・・)~
やはりあまり美しくないですね・・
# Import arcpy module~
import arcpy
# Import glob module~
import glob
# Local variables:~
sectiondata = "D:\\temp\\section.shp"
# temporary workspace~
tempWorkspace = "D:\\temp\\temp"~
results = "D:\\temp\\results"~
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" + "...
output1 = tempWorkspace + "\\sec_" + str(x)[:-3] ...
output2 = results + "\\sec_" + str(x)[:-3] + "_wi...
bufoutput1 = tempWorkspace + "\\buf_" + str(x)[:-...
bufoutput2 = tempWorkspace + "\\buf_" + str(x)[:-...
buflayer = str(x)[:-3] + "BL"
buflayer2 = buflayer
buflayer3 = buflayer
buflayer4 = buflayer
buflayer5 = buflayer
parameter = "OBJECTID \"OBJECTID\" true true fals...
# Process: フィーチャ レイヤの作成 (Make Feature...
arcpy.MakeFeatureLayer_management(sectiondata, la...
# Process: フィーチャのコピー (Copy Features)
arcpy.CopyFeatures_management(layer1, output1, ""...
# Process: バッファ(Buffer)
arcpy.Buffer_analysis(layer1, bufoutput1, "0.1 Me...
# Process: マルチパート → シングルパート(Multipa...
arcpy.MultipartToSinglepart_management(bufoutput1...
# Process: フィーチャ レイヤの作成(Make Feature ...
arcpy.MakeFeatureLayer_management(bufoutput2, buf...
# Process: フィールドの追加(Add Field)
arcpy.AddField_management(buflayer, "dist_sec", "...
# Process: フィールドの追加(Add Field) その2
arcpy.AddField_management(buflayer2, "id_sec", "L...
# Process: フィールド演算(Calculate Field)
arcpy.CalculateField_management(buflayer3, "dist_...
# Process: フィールド演算(Calculate Field)その2
arcpy.CalculateField_management(buflayer4, "id_se...
# Process: 空間結合(Spatial Join)
arcpy.SpatialJoin_analysis(output1, bufoutput2, o...
print mkyori
except:
print "error"
# 出力ファイルの指定~
Moutput = results + "\\hokk_all_section.shp"~
Doutput = results + "\\hokk_all_section_dissolve.shp"~
# ワイルドカードを使用して入力データリストを指定~
filelist = results + "\\sec_*.shp"~
files = glob.glob(filelist)~
# Process: マージ (Merge)~
arcpy.Merge_management(files, Moutput)~
# Process: ディゾルブ(Dissolve)~
arcpy.Dissolve_management(Moutput, Doutput, "FacilityID;d...
print "finish"
終了行:
[[ArcGIS]]
*ArcPy(ArcGIS10)に関する覚書 [#x4f227e3]
**ワイルドカードを用いて複数ファイルを指定する [#n467ab7f]
マージなどの複数のデータを入力する処理を行う際に
ワイルドカードを用いてファイルを指定する手順~
>&color(red){'''# globモジュールをインポートする'''};
>import glob~
>&color(red){'''# 出力ファイルのパスと名前を指定'''};
>outputdata = "C:\\temp\\ps_merge_all.shp"~
>&color(red){'''# ワイルドカードを使用して入力データリス...
>files = glob.glob('C:\\temp\\*.shp')~
>&color(red){'''# Process: マージ (Merge)'''};
>arcpy.Merge_management(files, outputdata)~
**河口から流路延長1kmごとにポイントを発生させる処理 [#lb6...
あまり美しくないですが・・
あと大学じゃないと(=arcinfoがないと)できません
&color(red){'''# Set the necessary product code'''};~
&color(red){'''# import arcinfo'''};~
&color(red){'''# Import arcpy module'''};~
import arcpy~
&color(red){'''# 必要なエクステンションの指定'''};~
arcpy.CheckOutExtension("Network")~
&color(red){'''# 河口のポイントデータ(test_shisetsu)とネ...
&color(red){'''# Local variables:'''};~
test_shisetsu = "C:\\temp\\test.mdb\\test_shisetsu"~
test02_ND = "C\\temp\\test.mdb\\test02\\test02_ND"~
&color(red){'''# ワークスペースの指定'''};~
tempWorkspace = "C:\\temp\\temp"~
outputWorkspace = "C:\\temp\\fin"~
&color(red){'''#変数xを1000から100000まで1000間隔で繰り返...
try:
>for x in range(1000, 101000, 1000):
>>&color(red){'''#変数の宣言'''};
>>&color(red){'''#ネットワーク解析レイヤの名前'''};
>>fc = "reach" + str(x)[:-3]
>>&color(red){'''#河口からの距離の変数'''};
>>mkyori = str(x)
>>&color(red){'''#ネットワーク解析レイヤからラインデータ...
>>line_l = "reach" + str(x)[:-3] + "\\ライン"
>>&color(red){'''#ポイントデータのファイル名'''};
>>output1 = tempWorkspace + "\\p_" + str(x)[:-3] + ".shp"
>>&color(red){'''#ポイントデータをレイヤに変換する際の名...
>>layer1 = str(x)[:-3] + "L"
>>&color(red){'''#ポイントデータからデータを抽出する際の...
>>formula1 = "\"ToCumul_k\" =" + str(x)
>>&color(red){'''#最終的なポイントデータのファイル名'''};
>>output2 = outputWorkspace + "\\ps_" + str(x)[:-3] + ".s...
>>&color(red){'''# Process: 到達圏レイヤの作成 (Make Ser...
>>arcpy.MakeServiceAreaLayer_na(test02_ND, fc, "k", "TRAV...
>>&color(red){'''# Process: ロケーションの追加 (Add Loca...
>>arcpy.AddLocations_na(fc, "施設", test_shisetsu, "Name ...
>>&color(red){'''# Process: 解析の実行 (Solve)'''};
>>arcpy.Solve_na(fc, "SKIP", "TERMINATE")
>>&color(red){'''# Process: フィーチャの頂点 → ポイント ...
>>arcpy.FeatureVerticesToPoints_management(line_l, output...
>>&color(red){'''# Process: フィーチャ レイヤの作成 (Mak...
>>arcpy.MakeFeatureLayer_management(output1, layer1, form...
>>&color(red){'''# Process: フィーチャのコピー (Copy Fea...
>>arcpy.CopyFeatures_management(layer1, output2, "", "0",...
>>print mkyori
except:
>print "error"
**NetworkAnalystのサービスエリア解析で得られた結果にIDを...
(特定の方向けに作ったので意味不明だと思いますが・・)~
やはりあまり美しくないですね・・
# Import arcpy module~
import arcpy
# Import glob module~
import glob
# Local variables:~
sectiondata = "D:\\temp\\section.shp"
# temporary workspace~
tempWorkspace = "D:\\temp\\temp"~
results = "D:\\temp\\results"~
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" + "...
output1 = tempWorkspace + "\\sec_" + str(x)[:-3] ...
output2 = results + "\\sec_" + str(x)[:-3] + "_wi...
bufoutput1 = tempWorkspace + "\\buf_" + str(x)[:-...
bufoutput2 = tempWorkspace + "\\buf_" + str(x)[:-...
buflayer = str(x)[:-3] + "BL"
buflayer2 = buflayer
buflayer3 = buflayer
buflayer4 = buflayer
buflayer5 = buflayer
parameter = "OBJECTID \"OBJECTID\" true true fals...
# Process: フィーチャ レイヤの作成 (Make Feature...
arcpy.MakeFeatureLayer_management(sectiondata, la...
# Process: フィーチャのコピー (Copy Features)
arcpy.CopyFeatures_management(layer1, output1, ""...
# Process: バッファ(Buffer)
arcpy.Buffer_analysis(layer1, bufoutput1, "0.1 Me...
# Process: マルチパート → シングルパート(Multipa...
arcpy.MultipartToSinglepart_management(bufoutput1...
# Process: フィーチャ レイヤの作成(Make Feature ...
arcpy.MakeFeatureLayer_management(bufoutput2, buf...
# Process: フィールドの追加(Add Field)
arcpy.AddField_management(buflayer, "dist_sec", "...
# Process: フィールドの追加(Add Field) その2
arcpy.AddField_management(buflayer2, "id_sec", "L...
# Process: フィールド演算(Calculate Field)
arcpy.CalculateField_management(buflayer3, "dist_...
# Process: フィールド演算(Calculate Field)その2
arcpy.CalculateField_management(buflayer4, "id_se...
# Process: 空間結合(Spatial Join)
arcpy.SpatialJoin_analysis(output1, bufoutput2, o...
print mkyori
except:
print "error"
# 出力ファイルの指定~
Moutput = results + "\\hokk_all_section.shp"~
Doutput = results + "\\hokk_all_section_dissolve.shp"~
# ワイルドカードを使用して入力データリストを指定~
filelist = results + "\\sec_*.shp"~
files = glob.glob(filelist)~
# Process: マージ (Merge)~
arcpy.Merge_management(files, Moutput)~
# Process: ディゾルブ(Dissolve)~
arcpy.Dissolve_management(Moutput, Doutput, "FacilityID;d...
print "finish"
ページ名: