また、最終的に各市区町村に分かれている「フィーチャクラス」のマージをシングルプロセスで実行するコードや、マージ後に不要となった「各市区町村ファイル ジオデータベース」の削除も書いています。
<SPAN class="comment token">#coding:utf-8</SPAN>
<SPAN class="comment token">#---------------------------------------------------------------------</SPAN>
<SPAN class="comment token"># Name: Multiprocess_Forge_ShapefileToFeatureClass_uft8.py</SPAN>
<SPAN class="comment token"># Purpose: 農地の筆界をマルチプロセスでフィーチャクラスに変換</SPAN>
<SPAN class="comment token"># 自治体コードや自治体名をフィールドに入れる</SPAN>
<SPAN class="comment token"># フォルダ内のフィーチャクラスをマージしたフィーチャクラスを作成</SPAN>
<SPAN class="comment token"># Author: Kataya @ ESRI Japan</SPAN>
<SPAN class="comment token"># Created: xyz/10/2019</SPAN>
<SPAN class="comment token"># Copyright: (c) ESRI Japan Corporation</SPAN>
<SPAN class="comment token"># ArcGIS Version: 10.x</SPAN>
<SPAN class="comment token"># Python Version: 2.7</SPAN>
<SPAN class="comment token">#---------------------------------------------------------------------</SPAN>
<SPAN class="keyword token">import</SPAN> arcpy<SPAN class="punctuation token">,</SPAN>os
<SPAN class="keyword token">import</SPAN> sys
<SPAN class="keyword token">import</SPAN> multiprocessing
<SPAN class="keyword token">import</SPAN> datetime
<SPAN class="keyword token">import</SPAN> traceback
reload<SPAN class="punctuation token">(</SPAN>sys<SPAN class="punctuation token">)</SPAN>
sys<SPAN class="punctuation token">.</SPAN>setdefaultencoding<SPAN class="punctuation token">(</SPAN><SPAN class="string token">'cp932'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">split_citycode_cityname</SPAN><SPAN class="punctuation token">(</SPAN>wsname<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">'''
農地筆の自治体コードと自治体名からそれぞれ抽出して返す
フォルダ名の例) 02201青森市2019
02202弘前市2019
'''</SPAN>
l <SPAN class="operator token">=</SPAN> len<SPAN class="punctuation token">(</SPAN>wsname<SPAN class="punctuation token">)</SPAN>
citycode <SPAN class="operator token">=</SPAN> <SPAN class="string token">"'{0}'"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>wsname<SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">:</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#自治体コードだけを抽出</SPAN>
cityname <SPAN class="operator token">=</SPAN> <SPAN class="string token">'"'</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">"{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>wsname<SPAN class="punctuation token">[</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">:</SPAN>l<SPAN class="number token">-4</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">+</SPAN> <SPAN class="string token">'"'</SPAN> <SPAN class="comment token">#自治体名だけを抽出</SPAN>
<SPAN class="keyword token">return</SPAN> citycode<SPAN class="punctuation token">,</SPAN> cityname
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">multi_run_batch_convert</SPAN><SPAN class="punctuation token">(</SPAN>args<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">'''
batch_convertのwrapper:
複数の引数を実行処理に渡すために必要なラッパー
'''</SPAN>
<SPAN class="keyword token">return</SPAN> batch_convert<SPAN class="punctuation token">(</SPAN><SPAN class="operator token">*</SPAN>args<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">batch_convert</SPAN><SPAN class="punctuation token">(</SPAN>inws<SPAN class="punctuation token">,</SPAN> outws<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">'''
1プロセスで実行する処理:
1) FGDBへの書込みは仕様で複数プロセスで書込みできないため
1市区町村フォルダ下のシェープファイルを
1市区町村のFGDB下のフィーチャクラスに変換
2) すべてのフィーチャクラスを統合したとき識別しやすいように
フォルダ名から市区町村コードと、自治体名を作成しフィールドに値を格納
'''</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">"Convert: {0} ⇒ {1}\n"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>inws<SPAN class="punctuation token">,</SPAN>outws<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
outfolder <SPAN class="operator token">=</SPAN> u<SPAN class="string token">"{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>dirname<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
foldername<SPAN class="operator token">=</SPAN> u<SPAN class="string token">"{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CreateFileGDB_management<SPAN class="punctuation token">(</SPAN>outfolder<SPAN class="punctuation token">,</SPAN> foldername<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CURRENT"</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> inws
fieldname1 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"CITYCODE"</SPAN>
fieldname2 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"CITYNAME"</SPAN>
fcs <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> fc <SPAN class="keyword token">in</SPAN> fcs<SPAN class="punctuation token">:</SPAN>
infc<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>splitext<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN>
newfc <SPAN class="operator token">=</SPAN> u<SPAN class="string token">"c_{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>infc<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#シェープファイル名が数値ではじまり、FGDBへそのまま変換できないので接頭にc_を入れる</SPAN>
wsname <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>inws<SPAN class="punctuation token">)</SPAN>
citycode<SPAN class="punctuation token">,</SPAN> cityname <SPAN class="operator token">=</SPAN> split_citycode_cityname<SPAN class="punctuation token">(</SPAN>wsname<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token">#フォルダ名から自治体コードと自治体名を抽出</SPAN>
<SPAN class="comment token">## 座標系はそのまま変換</SPAN>
<SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">,</SPAN>newfc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
outfc<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">,</SPAN>newfc<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Append_management<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">,</SPAN>outfc<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FeatureClassToFeatureClass_conversion<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">,</SPAN>outws<SPAN class="punctuation token">,</SPAN>newfc<SPAN class="punctuation token">)</SPAN>
outfc<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">,</SPAN>newfc<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>outfc<SPAN class="punctuation token">,</SPAN>fieldname1<SPAN class="punctuation token">,</SPAN><SPAN class="string token">"TEXT"</SPAN><SPAN class="punctuation token">,</SPAN>field_length<SPAN class="operator token">=</SPAN><SPAN class="number token">5</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>AddField_management<SPAN class="punctuation token">(</SPAN>outfc<SPAN class="punctuation token">,</SPAN>fieldname2<SPAN class="punctuation token">,</SPAN><SPAN class="string token">"TEXT"</SPAN><SPAN class="punctuation token">,</SPAN>field_length<SPAN class="operator token">=</SPAN><SPAN class="number token">30</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># citycode, cityname をフィールド値にいれる</SPAN>
calfc <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">,</SPAN>newfc<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>calfc<SPAN class="punctuation token">,</SPAN> fieldname1<SPAN class="punctuation token">,</SPAN> citycode<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PYTHON_9.3"</SPAN><SPAN class="punctuation token">,</SPAN> "<SPAN class="comment token">#")</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CalculateField_management<SPAN class="punctuation token">(</SPAN>calfc<SPAN class="punctuation token">,</SPAN> fieldname2<SPAN class="punctuation token">,</SPAN> cityname<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"PYTHON_9.3"</SPAN><SPAN class="punctuation token">,</SPAN> "<SPAN class="comment token">#")</SPAN>
<SPAN class="keyword token">del</SPAN> fcs
<SPAN class="keyword token">return</SPAN> u<SPAN class="string token">" 変換済:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>outws<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">exec_batch_convert</SPAN><SPAN class="punctuation token">(</SPAN>infolder<SPAN class="punctuation token">,</SPAN>outfolder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">'''
マルチプロセスでの処理:
'''</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
start<SPAN class="operator token">=</SPAN>datetime<SPAN class="punctuation token">.</SPAN>datetime<SPAN class="punctuation token">.</SPAN>now<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">"-- Strat: Multiprocess_Forge_ShapefileToFeatureClass --:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>start<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
cpu_cnt<SPAN class="operator token">=</SPAN>multiprocessing<SPAN class="punctuation token">.</SPAN>cpu_count<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> infolder
inwss <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListWorkspaces<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"*"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"Folder"</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># 各プロセスに渡すパラメータをリスト化</SPAN>
params<SPAN class="operator token">=</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="keyword token">for</SPAN> inws <SPAN class="keyword token">in</SPAN> inwss<SPAN class="punctuation token">:</SPAN>
param1<SPAN class="operator token">=</SPAN>inws <SPAN class="comment token"># 市区町村フォルダ(シェープファイルが入っている)</SPAN>
gdbname<SPAN class="operator token">=</SPAN>u<SPAN class="string token">"{0}.gdb"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>inws<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
param2<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>outfolder<SPAN class="punctuation token">,</SPAN>gdbname<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># 市区町村ファイルジオデータベース</SPAN>
params<SPAN class="punctuation token">.</SPAN>append<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>param1<SPAN class="punctuation token">,</SPAN>param2<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> len<SPAN class="punctuation token">(</SPAN>inwss<SPAN class="punctuation token">)</SPAN> <SPAN class="operator token"><</SPAN> cpu_cnt<SPAN class="punctuation token">:</SPAN> <SPAN class="comment token"># 処理フォルダ数CPUコアより少ない場合無駄なプロセスを起動不要</SPAN>
cpu_cnt<SPAN class="operator token">=</SPAN>len<SPAN class="punctuation token">(</SPAN>inwss<SPAN class="punctuation token">)</SPAN>
pool <SPAN class="operator token">=</SPAN> multiprocessing<SPAN class="punctuation token">.</SPAN>Pool<SPAN class="punctuation token">(</SPAN>cpu_cnt<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># cpu数分プロセス作成</SPAN>
results<SPAN class="operator token">=</SPAN>pool<SPAN class="punctuation token">.</SPAN>map<SPAN class="punctuation token">(</SPAN>multi_run_batch_convert<SPAN class="punctuation token">,</SPAN>params<SPAN class="punctuation token">)</SPAN> <SPAN class="comment token"># 割り当てプロセスで順次実行される</SPAN>
pool<SPAN class="punctuation token">.</SPAN>close<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
pool<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># 各プロセスでの処理結果を出力</SPAN>
<SPAN class="keyword token">for</SPAN> r <SPAN class="keyword token">in</SPAN> results<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">"{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>r<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># 各プロセスからのマージ版を作成</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> outfolder
outwss <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListWorkspaces<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"*"</SPAN><SPAN class="punctuation token">,</SPAN><SPAN class="string token">"FileGDB"</SPAN><SPAN class="punctuation token">)</SPAN>
foldername<SPAN class="operator token">=</SPAN><SPAN class="string token">"{0}.gdb"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>basename<SPAN class="punctuation token">(</SPAN>outfolder<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
forgefc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"forge"</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">" Mearge to FeatureClass:{1} in FGDB:{0} "</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>foldername<SPAN class="punctuation token">,</SPAN> forgefc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>CreateFileGDB_management<SPAN class="punctuation token">(</SPAN>outfolder<SPAN class="punctuation token">,</SPAN>foldername<SPAN class="punctuation token">,</SPAN><SPAN class="string token">"CURRENT"</SPAN><SPAN class="punctuation token">)</SPAN>
forgews <SPAN class="operator token">=</SPAN> os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>outfolder<SPAN class="punctuation token">,</SPAN> foldername<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> outws <SPAN class="keyword token">in</SPAN> outwss<SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>env<SPAN class="punctuation token">.</SPAN>workspace <SPAN class="operator token">=</SPAN> outws
fc <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>ListFeatureClasses<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="comment token">#農地筆は1ファイルしかないので固定</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">" merge: {0} ⇒ {1}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">,</SPAN>forgefc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>Exists<SPAN class="punctuation token">(</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>forgews<SPAN class="punctuation token">,</SPAN> forgefc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
outfc<SPAN class="operator token">=</SPAN>os<SPAN class="punctuation token">.</SPAN>path<SPAN class="punctuation token">.</SPAN>join<SPAN class="punctuation token">(</SPAN>forgews<SPAN class="punctuation token">,</SPAN>forgefc<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>Append_management<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">,</SPAN>outfc<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">else</SPAN><SPAN class="punctuation token">:</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>FeatureClassToFeatureClass_conversion<SPAN class="punctuation token">(</SPAN>fc<SPAN class="punctuation token">,</SPAN>forgews<SPAN class="punctuation token">,</SPAN>forgefc<SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># マージが終わったので後片付け 各市区町村のFGDBを削除 - 必要に応じてコメントアウトを外す</SPAN>
<SPAN class="comment token">#for outws in outwss:</SPAN>
<SPAN class="comment token"># arcpy.Delete_management(outws)</SPAN>
fin<SPAN class="operator token">=</SPAN>datetime<SPAN class="punctuation token">.</SPAN>datetime<SPAN class="punctuation token">.</SPAN>now<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">"-- Finish: Multiprocess_Forge_ShapefileToFeatureClass --:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fin<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">" Elapsed time:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>fin<SPAN class="operator token">-</SPAN>start<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN>u<SPAN class="string token">"Exception:{0}"</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>sys<SPAN class="punctuation token">.</SPAN>exc_info<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="number token">2</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">setup_batch_convert</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="string token">''</SPAN>'
コマンドプロンプトからの実行パラメータを設定の場合:
市区町村別のシェープファイルが入った都道府県フォルダ <SPAN class="punctuation token">:</SPAN>infolder
例)
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02</SPAN>青森県<SPAN class="number token">2019</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02201</SPAN>青森市<SPAN class="number token">2019</SPAN>
<SPAN class="operator token">|</SPAN> <SPAN class="number token">02201</SPAN>青森市2019_5<SPAN class="punctuation token">.</SPAN>shp
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02202</SPAN>弘前市<SPAN class="number token">2019</SPAN>
<SPAN class="operator token">|</SPAN> <SPAN class="number token">02202</SPAN>弘前市2019_5<SPAN class="punctuation token">.</SPAN>shp
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02203</SPAN>八戸市<SPAN class="number token">2019</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02204</SPAN>黒石市<SPAN class="number token">2019</SPAN>
・・・・・
市区町村別のファイル ジオデータベースの作成先フォルダ <SPAN class="punctuation token">:</SPAN>outfolder
例<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02</SPAN>青森県2019_filegdb
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02201</SPAN>青森市<SPAN class="number token">2019.</SPAN>gdb
<SPAN class="operator token">|</SPAN> c_02201青森市2019_5
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02202</SPAN>弘前市<SPAN class="number token">2019.</SPAN>gdb
<SPAN class="operator token">|</SPAN> c_02202弘前市2019_5
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02203</SPAN>八戸市<SPAN class="number token">2019</SPAN>
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02204</SPAN>黒石市<SPAN class="number token">2019</SPAN>
・・・・・
<SPAN class="operator token">|</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">02</SPAN>青森県2019_filegdb<SPAN class="punctuation token">.</SPAN>gdb <SPAN class="comment token"># 市区町村別のフィーチャクラスをマージしたフィーチャクラスを格納するファイル ジオデータベース</SPAN>
<SPAN class="operator token">|</SPAN> forge
<SPAN class="string token">''</SPAN>'
infolder<SPAN class="operator token">=</SPAN>ur<SPAN class="string token">"F:\Temp\農地の筆ポリゴン\02青森県2019"</SPAN> <SPAN class="comment token">#市区町村別のシェープファイルが入った都道府県フォルダ(平面直角座標系ごと)</SPAN>
outfolder<SPAN class="operator token">=</SPAN>ur<SPAN class="string token">"F:\Temp\農地の筆ポリゴン\02青森県2019_filegdb"</SPAN> <SPAN class="comment token">#市区町村別のファイル ジオデータベースの作成先フォルダ</SPAN>
exec_batch_convert<SPAN class="punctuation token">(</SPAN>infolder<SPAN class="punctuation token">,</SPAN>outfolder<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> __name__ <SPAN class="operator token">==</SPAN> <SPAN class="string token">'__main__'</SPAN><SPAN class="punctuation token">:</SPAN>
setup_batch_convert<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>