QGISで複数のファイルを同時にエクスポートしますか?


8

QGISで多くの.TABファイルを開いています。それらを.SHPに保存して、ArcMapで操作できるようにしたいと考えています。

これらすべてのファイルを同時に保存/エクスポートする方法はありますか、それとも本当にすべてのファイルに対して個別に「名前を付けて保存」する必要がありますか?


OGR2OGRを探します
CARTOS

QGISに組み込まれていると思いましたか?多分私は間違っています。
Frida

QGISで使用する代わりにogr2ogrをテキストツールとして使用することもできます。これにより、QGISを開かずに変換する可能性が開かれます。また、一連のそのような命令を実行して、一連のファイルを次々に変換する機能があります。これは、ファイル名のリストを取得する簡単な方法(シーケンスのようなもの)がある場合にうまく機能します。5層または6層を見ている場合、QGISを使用して1つずつ行うのは同じくらい簡単ですが、さらに多くの層/ファイルについて話す場合は、努力する価値があります。Windowsでbatファイルをチェックして、一連のテキストコマンドを保存してください。
ロストラニミン2015年

回答:


21

このフリーダを試してください:

  1. そこにシェープファイルを保存するフォルダーを作成します(たとえば、私はフォルダーを作成しました。GNU /tmp/data// Linuxを使用しています)。

  2. QGISで、QGIS Pythonコンソールを開きます。

  3. 次の行を記述し、右側を編集してフォルダーへの完全パスに一致させます(末尾のスラッシュ/バックスラッシュを必ず含めてください)。

    myDir = '/tmp/data/'

  4. Enterキーを押します。

  5. 次の行をQGIS Pythonコンソールにコピーします。

    for vLayer in iface.mapCanvas().layers():
        QgsVectorFileWriter.writeAsVectorFormat( vLayer, 
            myDir + vLayer.name() + ".shp", "utf-8", 
            vLayer.crs(), "ESRI Shapefile" )
  6. Enterキーを数回押します。

これで、手順1で作成したフォルダー内にShapefilesが含まれているはずです。

問題が発生した場合は、OSとフォルダへのフルパスをお知らせください。


1
@gcarrillo、あなたがすべきです!これは非常に便利で、多くの面倒を省きます。
ジョセフ

プラグインは良い考えのようです!ラスタ用の同様のスクリプトも役立ちます。QGISでラスターを開いて.tif(GeoTIFF)ファイルとして保存することで、MapInfo用のラスターの空間位置を「保存」するようにしか思えません。これを行わないと、ArcMapがラスターの空間情報にアクセスできないようです。
Frida

8
from qgis.core import *

suffix = "_foo"
pathToFile = "/path/to/wherever/"

layers = iface.legendInterface().layers()
for layer in layers:
    newName = layer.name() + suffix + ".shp"
    ret = QgsVectorFileWriter.writeAsVectorFormat(layer, pathToFile + newName, "utf-8", None, "ESRI Shapefile")
    if ret == QgsVectorFileWriter.NoError:
        print newName + " saved to " + pathToFile + "!"

ラスターレイヤーにはQgsRasterFileWriterを使用します

€:クックブックに詳細な例があります。


GUIを通してこれを行う方法は本当にありませんか?
chrismarx 2016

@chrismarx「名前を付けて保存」?恐れていません(または少なくとも-私が認識していることではありません)。
ymirsson 2016

2

ほんの少し追加:エクスポートされたファイルのCRSも変更し、さらにプレフィックスとサフィックスを追加したい場合は、次のようにスクリプトを変更できます。

from qgis.core import *
import os
pathToFile = "S:\\pathway\\"
trs = QgsCoordinateReferenceSystem()
trs.createFromId(31370)
suffix = "_Lambert1972_Versie2016-01-04"
prefix = "Transect_Vuursalamander_"
layers = iface.legendInterface().layers()
for layer in layers:
    newName = prefix + layer.name() + suffix + ".shp"
    ret = QgsVectorFileWriter.writeAsVectorFormat(layer,pathToFile + newName,'utf-8',trs,'ESRI Shapefile')
    if ret == QgsVectorFileWriter.NoError:
        print newName + " saved to " + pathToFile + "!"

31370は、エクスポートしたファイルを入れたいCRSのEPSGで置き換えることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.