[OSGeoJapan-discuss] QGISのpythonコンソールで面積を計算してその結果を列に加える方法
Hiroo Imaki
hiroo @ angeli.org
2015年 5月 20日 (水) 18:45:40 PDT
飯島様、
お久しぶりです。Rでやっても良いのではないでしょうか?
http://www.inside-r.org/packages/cran/rgeos/docs/gArea
が参考になると思います。spパッケージを使ってオブジェクトを作る必要がありますが。
参考までに。
いまき
2015-05-20 19:48 GMT-04:00 Hayato IIJIMA <hayato.iijima @ gmail.com>:
> OSGeoメーリングリストの皆様
>
> 山梨県の飯島と申します。このたびはお世話になります。
>
>
> QGISのpythonコンソールで、SHPファイル(添付したようなファイル)のポリゴンごとの面積を計算する方法をご存知でしたら、ご教示いただければと思います。
>
>
> ファイルが1つであればSHPファイルを開き、「属性テーブルを開く」→「フィールド計算機」で新しい列を作りその値として計算した面積を入れればいい話です。しかし、このようなファイルが多数ある場合、GUIによる作業は時間がかかるため、pythonで一気に処理できないかと思っています。
>
>
> ネット上でQGISのpythonでの処理方法をいろいろ調べてみて、面積を計算して単に表示するとか、新しい列を作るといったことはできるのですが、面積を計算してその結果を新しい列に加えるということがどうしてもできないのです。
>
> from PyQt4.QtCore import *
> from qgis.analysis import *
> input_dir="C:/..." #作業するSHPファイルまでのパス
> import os
> import glob
> import processing
> files = glob.glob(os.path.join(input_dir, r'*.shp'))
>
> #面積を「表示」
> for i in range(0, len(files)):
> vlayer = QgsVectorLayer(files[i], "temp", "ogr")
> #Gmail上でタブによる字下げがうまくいきませんが、実際にはタブで行頭を字下げしています(以下同様)。
> for f in vlayer.getFeatures():
> print f.geometry().area()
>
> #新しい列を加える
> #カラムを加える(試行錯誤)
> for i in range(0, len(files)):
> vlayer = QgsVectorLayer(files[i], "temp", "ogr")
> #Gmail上でタブによる字下げがうまくいきませんが、実際にはタブで行頭を字下げしています(以下同様)。
> caps = vlayer.dataProvider().capabilities()
> if caps & QgsVectorDataProvider.AddFeatures:
> res = vlayer.dataProvider().addAttributes([QgsField("AREA",
> QVariant.Double)])
>
> これらを合わせるとうまくいきそうな気もしますが、今のところできていません。
> ちなみに、作業環境は以下のようです。
>
> OS: Win7 64 bit
> QGIS: 2.8
>
> 調査に出ているためご教示いただいた後の返事が遅くなるかもしれませんが、よろしくお願い致します。
>
>
> --
> **********************************************************
> 山梨県森林総合研究所 森林研究部 森林保護科
>
> 研究員 飯島 勇人(いいじま はやと)
>
> 〒400-0502
> 山梨県南巨摩郡富士川町最勝寺2290-1
> TEL:0556-22-8005(直)8001(代)
> HP: http://www.pref.yamanashi.jp/shinsouken/
> E-mail: hayato.iijima @ gmail.com
> **********************************************************
>
> **********************************************************
> Hayato Iijima (Ph.D.)
>
> Yamanashi Forest Research Institute
>
> 2290-1, Saishoji, Fujikawa, Yamanashi 400-0502, Japan
> TEL:0556-22-8001
> HP: http://www.pref.yamanashi.jp/shinsouken/
> E-mail: hayato.iijima @ gmail.com
> **********************************************************
>
> _______________________________________________
> OSGeoJapan-discuss mailing list
> OSGeoJapan-discuss @ lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss
>
--
Hiroo Imaki
Pacific Spatial Solutions, LLC
1523 Chatham Colony Ct.
Reston, VA 20190
hiroo.imaki @ pacificspatial.com
http://www.pacificspatial.com
http://www.geopacific.org (GIS info site)
hiroo @ angeli.org (private)
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://lists.osgeo.org/pipermail/osgeojapan-discuss/attachments/20150520/319ec8eb/attachment-0001.html>
OSGeoJapan-discuss メーリングリストの案内