2

fiona 1.5.0 で (なぜさまざまなファイル (.dbf や .gdb など) が私の "Not a Shapefile!" (ファイルが .shp でないことをいつでも望んでいる) 警告を出力しないのか混乱しています)終了する前に。

import fiona
import sys

   def process_file(self, in_file, repair_file):
        with fiona.open(in_file, 'r', encoding='utf-8') as input:
            # check that the file type is a shapefile
            if input.driver == 'ESRI Shapefile':
                print "in_file is a Shapefile!"
            else:
                print "NOT a Shapefile!"
                exit()
            with fiona.open(repair_file, 'r') as repair:
                # check that the file type is a shapefile
                if repair.driver == 'ESRI Shapefile':
                    print "Verified that repair_file is a Shapefile!"
                else:
                    print "NOT a Shapefile!"
                    exit()

gdbの場合、フィオナがドライバーをサポートしていないというエラーが表示されます(ogrが私を驚かせたため)-およびprintステートメントはありません:

>> fiona.errors.DriverError: unsupported driver: u'OpenFileGDB'

.dbf の場合、実際にこれを取得します。

>> Verified that in_file is a Shapefile!
>> Verified that repair_file is a Shapefile!
4

2 に答える 2

0

fiona が ogr のラッパーであっても、サポートされているドライバーの数は、ogr によってサポートされているドライバーの数よりもはるかに少なくなっています。

ESRI シェープファイル ファイルは、同じディレクトリに保存された共通のファイル名プレフィックスを持つファイルのコレクションで構成されているため、誤解を招く可能性があります。3つの必須ファイルがあります

  • .shp — 形状フォーマット; フィーチャ ジオメトリ自体
  • .shx — シェイプ インデックス形式。すばやく前後にシークできるようにするフィーチャ ジオメトリの位置インデックス
  • .dbf — 属性フォーマット; dBase IV 形式の各形状の列属性

したがって、dbf は ESRI シェープファイルです。

要件は .shp ファイルである必要があるため、最初にファイルの拡張子が .shp であることをテストし、その後 fiona を使用してそれが「ESRI シェープファイル」であるかどうかをテストできます。

于 2015-04-28T21:09:14.153 に答える