2020年12月22日火曜日

shpfile in ZIP

先日、防災科研さんの地すべり地形分布図をプロットしようとして、ちょっとした問題に引っかかりました。

1.ZIP ファイルに5つの SHP ファイルが納められている。
2.ZIP ファイルは150個。
3.ZIP ファイルから、目的の SHP のみを解凍せずに取り出したい。
4.取り出した SHP を結合し、1つの SHP として保存したい。

QGIS で試みるも、複数の SHP からその一部を機械的に取り出せません。
ArcGIS Pro 2.5 では ZIP を扱えません。技があるのかとサポートに問い合わせましたが、やはり標準では対応しておらず、開発&有償になるとのこと(余談ですが、サポートさんのレスが以前に比べずいぶん遅くなりました)。

それほど大仰なモノでもないでしょう。
ということで、簡素にできたのがコチラ。

  1. import os
  2. import glob
  3. import pandas as pd
  4. import geopandas as gpd
  5.  
  6. path = './input/*.zip' #folder 'input'
  7. zfiles = glob.glob(path) #zip files in the folder
  8. gdf_300=gpd.GeoDataFrame()
  9.  
  10. for zfile in zfiles:
  11. fname=os.path.splitext(os.path.basename(zfile))[0]
  12. gdf_temp=gpd.read_file('zip://'+str(zfile)+'!ls300_'+fname+'.shp')
  13. gdf_300=pd.concat([gdf_300, gdf_temp])
  14.  
  15. gdf_300=gdf_300.reset_index(drop=True)
  16. gdf_300.to_file('./output/300.shp', encoding='utf-8')
  17.  

GIS のカジュアルユーザーだからでしょうか、Python との併用が合理的に感じます。 


0 件のコメント:

コメントを投稿