ListDomains
ListFieldConflictFilters
ListReplicas
ListSubtypes
ListVersions
<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>
Walk
- ディレクトリ構造をたどってArcGIS のデータタイプを返す
- 3つのタプルを返す: path, path names, and filenames
walk <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>Walk<SPAN class="punctuation token">(</SPAN>workspace<SPAN class="punctuation token">,</SPAN> datatype<SPAN class="operator token">=</SPAN>datatypes<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">for</SPAN> path<SPAN class="punctuation token">,</SPAN> path_names<SPAN class="punctuation token">,</SPAN> data_names <SPAN class="keyword token">in</SPAN> walk<SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> data_name <SPAN class="keyword token">in</SPAN> data_names<SPAN class="punctuation token">:</SPAN>
do_something<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>
Demo:Iterating over data
GitHub 上の「demo_3_list.py」のコードはこちら
Numpy
- Numpy は科学計算用のサード パーティ製 Pythonライブラリ
- arcpy.daは、テーブルやフィーチャクラスと numpy arrays への相互変換をサポート
- FeatureClassToNumPyArray, TableToNumPyArray
- raster と numpy.arrays も相互に変換可能
- RasterToNumPyArray, NumPyArrayToRaster
NumPy functions
- arcpy.da はその他にもテーブルやフィーチャクラスへの変換をサポート
FeuatureClassToNumPyArray
TableToNumPyArray
NumPyArrayToFeatureClass
NumPyArrayToTable
ExtendTable<SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Export to NumPy
- さらに分析するために、テーブルやフィーチャ クラスから numpy arrays へ変換可能
<SPAN class="keyword token">import</SPAN> arcpy
<SPAN class="keyword token">import</SPAN> numpy
in_fc <SPAN class="operator token">=</SPAN> <SPAN class="string token">"c:/data/usa.gdb/USA/counties"</SPAN>
field1 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"INCOME"</SPAN>
field2 <SPAN class="operator token">=</SPAN> <SPAN class="string token">"EDUCATION"</SPAN>
array1 <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>FeatureClassToNumPyArray<SPAN class="punctuation token">(</SPAN>in_fc<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN>field1<SPAN class="punctuation token">,</SPAN> field2<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token"># Print correlation coefficients for comparison of 2 fields</SPAN>
<SPAN class="keyword token">print</SPAN> numpy<SPAN class="punctuation token">.</SPAN>corrcoef<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">(</SPAN>array1<SPAN class="punctuation token">[</SPAN>field1<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> array1<SPAN class="punctuation token">[</SPAN>field2<SPAN class="punctuation token">]</SPAN><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>
Import from NumPy
- numpy での成果を、エクスポートしてArcGIS に戻す
point:
array1 <SPAN class="operator token">=</SPAN> numpy<SPAN class="punctuation token">.</SPAN>array<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN> <SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">)</SPAN><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="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> numpy<SPAN class="punctuation token">.</SPAN>dtype<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">[</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'idfield'</SPAN><SPAN class="punctuation token">,</SPAN> numpy<SPAN class="punctuation token">.</SPAN>int32<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">(</SPAN><SPAN class="string token">'XY'</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">'<f8'</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="punctuation token">)</SPAN>
sr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN>wkid<SPAN class="punctuation token">)</SPAN>
arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>NumPyArrayToFeatureClass<SPAN class="punctuation token">(</SPAN>array1<SPAN class="punctuation token">,</SPAN> outFC<SPAN class="punctuation token">,</SPAN> <SPAN class="punctuation token">[</SPAN><SPAN class="string token">'XY'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN> sr<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
- polygons, lines, multipoints は別のところ
pandas
- pandas は次のような特徴の3rd パーティライブラリ
- ハイパフォーマンス
- 使いやすいデータ構造と
- 解析ツール
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">features_to_pandas</SPAN><SPAN class="punctuation token">(</SPAN>in_features<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
in_arr <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>FeatureClassToNumPyArray<SPAN class="punctuation token">(</SPAN>in_features<SPAN class="punctuation token">,</SPAN> fields<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> pandas<SPAN class="punctuation token">,</SPAN>DataFrame<SPAN class="punctuation token">(</SPAN>in_arr<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">def</SPAN> <SPAN class="token function">pandas_to_features</SPAN><SPAN class="punctuation token">(</SPAN>dataframe<SPAN class="punctuation token">,</SPAN> output<SPAN class="punctuation token">,</SPAN> geometry_columns<SPAN class="punctuation token">,</SPAN> wkid<SPAN class="operator token">=</SPAN>None<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN>
in_arr <SPAN class="operator token">=</SPAN> dataframe<SPAN class="punctuation token">.</SPAN>to_records<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN>
spatial_ref <SPAN class="operator token">=</SPAN> <SPAN class="string token">''</SPAN> <SPAN class="keyword token">if</SPAN> <SPAN class="operator token">not</SPAN> wkid <SPAN class="keyword token">else</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SpatialReference<SPAN class="punctuation token">(</SPAN>wkid<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">return</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>NumPyArrayToFeatureClass<SPAN class="punctuation token">(</SPAN>in_arr<SPAN class="punctuation token">,</SPAN> output<SPAN class="punctuation token">,</SPAN> geometry_columns<SPAN class="punctuation token">,</SPAN> spatial_reference<SPAN class="operator token">=</SPAN>spatial_ref<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>
Demo: arcpy, numpy and pandas
- GitHub 上の「demo_4_numpy.py」のコードはこちら
関連: