Fiona

菲奥娜读取和写入地理数据文件,从而帮助Python程序员将地理信息系统与其他计算机系统集成。菲奥娜包含连接地理空间数据抽象库(GDAL)的扩展模块。

https://travis-ci.org/Toblerity/Fiona.png?branch=master https://ci.appveyor.com/api/projects/status/github/Toblerity/Fiona?svg=true https://coveralls.io/repos/Toblerity/Fiona/badge.png

菲奥娜设计简单可靠。它专注于以标准Python IO样式读写数据,依赖于熟悉的Python类型和协议,如文件、字典、映射和迭代器,而不是GDAL的OpenGIS参考实现(OGR)特有的类。菲奥娜可以使用多层GIS格式读取和写入真实世界数据,并压缩虚拟文件系统,并容易与其他Python GIS包(如 pyproj, Rtree, 和 Shapely.

菲奥娜只支持Cpthon版本3.6 +。

为什么叫“菲奥娜”?因为菲奥娜是OGR为Python程序员提供的敏捷灵活的API。史莱克的话让我们笑了。

有关详细信息,请参阅:

使用

收藏

记录的读取和写入 fileCollection 从返回的对象 fiona.open() 功能。记录是基于geojson格式建模的映射。它们没有自己的空间方法,所以如果你想对它们做些有趣的事情,你可能需要形状或者类似的东西。下面是一个使用fiona从一个数据文件中读取一些记录、更改其几何属性并将其写入新数据文件的示例。

import fiona

# Open a file for reading. We'll call this the "source."

with fiona.open('tests/data/coutwildrnp.shp') as src:

    # The file we'll write to, the "destination", must be initialized
    # with a coordinate system, a format driver name, and
    # a record schema.  We can get initial values from the open
    # collection's ``meta`` property and then modify them as
    # desired.

    meta = src.meta
    meta['schema']['geometry'] = 'Point'

    # Open an output file, using the same format driver and
    # coordinate reference system as the source. The ``meta``
    # mapping fills in the keyword parameters of fiona.open().

    with fiona.open('test_write.shp', 'w', **meta) as dst:

        # Process only the records intersecting a box.
        for f in src.filter(bbox=(-107.0, 37.0, -105.0, 39.0)):

            # Get a point on the boundary of the record's
            # geometry.

            f['geometry'] = {
                'type': 'Point',
                'coordinates': f['geometry']['coordinates'][0][0]}

            # Write the record out.

            dst.write(f)

# The destination's contents are flushed to disk and the file is
# closed when its ``with`` block ends. This effectively
# executes ``dst.flush(); dst.close()``.

读取多层数据

还可以从多层文件或数据目录中的单层进行收集。目标层由文件或目录中的名称或其整数索引指定。这个 fiona.listlayers() 函数提供按索引排序的层名称列表。

for layername in fiona.listlayers('tests/data'):
    with fiona.open('tests/data', layer=layername) as src:
        print(layername, len(src))

# Output:
# ('coutwildrnp', 67)

层也可以通过索引指定。在这种情况下, layer=0layer='test_uk' 在数据文件或目录中指定相同的层。

for i, layername in enumerate(fiona.listlayers('tests/data')):
    with fiona.open('tests/data', layer=i) as src:
        print(i, layername, len(src))

# Output:
# (0, 'coutwildrnp', 67)

写入多层数据

多层数据也可以写入。写入时必须按名称指定层。

with open('tests/data/cowildrnp.shp') as src:
    meta = src.meta
    f = next(src)

with fiona.open('/tmp/foo', 'w', layer='bar', **meta) as dst:
    dst.write(f)

print(fiona.listlayers('/tmp/foo'))

with fiona.open('/tmp/foo', layer='bar') as src:
    print(len(src))
    f = next(src)
    print(f['geometry']['type'])
    print(f['properties'])

    # Output:
    # ['bar']
    # 1
    # Polygon
    # OrderedDict([('PERIMETER', 1.22107), ('FEATURE2', None), ('NAME', 'Mount Naomi Wilderness'), ('FEATURE1', 'Wilderness'), ('URL', 'http://www.wilderness.net/index.cfm?fuse=NWPS&sec=wildView&wname=Mount%20Naomi'), ('AGBUR', 'FS'), ('AREA', 0.0179264), ('STATE_FIPS', '49'), ('WILDRNP020', 332), ('STATE', 'UT')])

/tmp/foo目录的视图将确认新文件的创建。

$ ls /tmp/foo
bar.cpg bar.dbf bar.prj bar.shp bar.shx

从存档和虚拟文件系统收集

Zip和tar归档文件可以被视为虚拟文件系统,并且可以从其中的路径和层进行收集。换句话说,fiona允许您读取和写入压缩形状文件。

for i, layername in enumerate(
        fiona.listlayers('zip://tests/data/coutwildrnp.zip'):
    with fiona.open('zip://tests/data/coutwildrnp.zip', layer=i) as src:
        print(i, layername, len(src))

# Output:
# (0, 'coutwildrnp', 67)

Fiona还可以从更奇特的文件系统中读取。例如,可以像这样访问S3中的压缩形状文件:

with fiona.open('zip+s3://mapbox/rasterio/coutwildrnp.zip') as src:
    print(len(src))

# Output:
# 67

Fiona CLI

Fiona的命令行接口,名为“fio”,记录在 docs/cli.rst . 它的 fio info 漂亮的打印数据文件的信息。

$ fio info --indent 2 tests/data/coutwildrnp.shp
{
  "count": 67,
  "crs": "EPSG:4326",
  "driver": "ESRI Shapefile",
  "bounds": [
    -113.56424713134766,
    37.0689811706543,
    -104.97087097167969,
    41.99627685546875
  ],
  "schema": {
    "geometry": "Polygon",
    "properties": {
      "PERIMETER": "float:24.15",
      "FEATURE2": "str:80",
      "NAME": "str:80",
      "FEATURE1": "str:80",
      "URL": "str:101",
      "AGBUR": "str:80",
      "AREA": "float:24.15",
      "STATE_FIPS": "str:80",
      "WILDRNP020": "int:10",
      "STATE": "str:80"
    }
  }
}

安装

菲奥娜需要Python版本3.6 +和GDAL版本1.11-3.0。要从源代码发行版构建,您需要一个C编译器、GDAL和Python开发头和库(libgdal1dev用于Debian/Ubuntu,gdaldev用于CentOS/Fedora)。

要从存储库副本构建,您还需要Cython从项目的.pyx文件构建C源。有关指导,请参见项目的requirements-dev.txt文件。

这个 Kyngchaos GDAL frameworks 将满足对OS X的GDAL/OGR依赖性,就像自制的gdal公式一样( brew install gdal

Python要求

FIONA取决于模块 sixcligjmunch . PIP将为您获取这些要求,但是安装Windows安装程序的用户必须分别获取它们。

类Unix系统

假设您使用的是virtualenv(如果不是,请跳到第四个命令)和GDAL/OGR库、头文件和 gdal-config 程序通过系统的包管理器安装到系统上的已知位置。( brew install gdal 在OS X上使用自制),安装非常简单。

$ mkdir fiona_env
$ virtualenv fiona_env
$ source fiona_env/bin/activate
(fiona_env)$ pip install fiona

如果gdal config不可用,或者GDAL/OGR头文件和lib未安装到已知位置,则必须通过如下所示的setup.cfg文件或setup命令行设置include dirs、library dirs和libraries选项(使用 git )还必须在命令行上使用 --gdalversion 参数(见下面的示例)或 GDAL_VERSION 环境变量(例如 export GDAL_VERSION=2.1

(fiona_env)$ git clone git://github.com/Toblerity/Fiona.git
(fiona_env)$ cd Fiona
(fiona_env)$ python setup.py build_ext -I/path/to/gdal/include -L/path/to/gdal/lib -lgdal install --gdalversion 2.1

或者指定由特定的gdal配置程序提供构建选项和gdal api版本。

(fiona_env)$ GDAL_CONFIG=/path/to/gdal-config pip install fiona

Windows

二进制安装程序可在http://www.lfd.uci.edu/~gohlke/pythonlibs/fiona上找到,并最终进入pypi。

您可以从下载gdal的二进制发行版 here . 您还需要下载已编译的库和头文件(包括文件)。

在Windows上从源代码构建时,重要的是要知道setup.py不能依赖仅在UNIX系统上存在的gdal config来发现fiona编译其C扩展所需的头文件和库的位置。在Windows上,这些路径需要由用户提供。您需要找到gdal的include文件和库文件,并使用如下的setup.py。还必须在命令行上使用 --gdalversion 参数(见下面的示例)或 GDAL_VERSION 环境变量(例如 set GDAL_VERSION=2.1

$ python setup.py build_ext -I<path to gdal include files> -lgdal_i -L<path to gdal library> install --gdalversion 2.1
$ set GDAL_VERSION=3.0
$ pip install --install-option=build_ext --install-option="-I<drive letter>:\\<path to gdal include files>\\include" --install-option="-lgdal_i" --install-option="-L<drive letter>:\\<path to gdal lib files>\\libs" fiona

注意:gdal dll( gdal111.dll 或者类似的)和gdal数据目录需要在Windows路径中,否则fiona将无法工作。

这个 Appveyor CI build 使用gisinternals gdal二进制文件构建fiona。这将为想要尝试不稳定开发版本的用户生成一个成功构建的二进制轮子,其中包括gdal和其他依赖项。这个 Appveyor configuration file 对于用户在Windows上从源代码构建可能是一个有用的示例。

开发和测试

从源头上建造需要赛通。试验要求 pytest . 如果GDAL/OGR库、头和 gdal-config 程序安装到系统上的已知位置(通过系统的包管理器),可以执行以下操作:

(fiona_env)$ git clone git://github.com/Toblerity/Fiona.git
(fiona_env)$ cd Fiona
(fiona_env)$ pip install cython
(fiona_env)$ pip install -e .[test]
(fiona_env)$ py.test

或者你可以使用 pep-518-install 脚本::

(fiona_env)$ git clone git://github.com/Toblerity/Fiona.git
(fiona_env)$ cd Fiona
(fiona_env)$ ./pep-518-install

如果您有一个非标准环境,则需要在命令行上指定include和lib dirs以及gdal库::

(fiona_env)$ python setup.py build_ext -I/path/to/gdal/include -L/path/to/gdal/lib -lgdal --gdalversion 2 develop
(fiona_env)$ py.test

变化

所有问题编号都与https://github.com/toblerity/fiona/issues相关。

1.8.11(2019-11-07)

  • 修复Windows上的访问冲突(#826)。

1.8.10(2019-11-07)

Deprecations:

  • 在open或listlayers中使用vfs关键字参数以前被认为是不推荐使用的,但是现在会触发一个不推荐使用的警告。

错误修复:

  • 菲奥娜。打开()现在可以使用CRS URN创建新的数据集(#823)。

  • listlayers()现在接受文件和路径对象,如open()(#825)。

  • 使用新的set_proj_search_path()函数设置项目数据搜索路径。对于3.0之前的GDAL版本,这将设置PROJ_LIB环境变量。对于gdalversion3.0,它调用osrsetprojectsearchpaths(),它覆盖PROJ帴u LIB。

  • 卸下旧的和未使用的驱动程序扩展模块。

  • 检查标题dxf文件而不是电脑.csv当寻找已安装的GDAL数据时。后者与gdal3.0一起消失了,但前者仍然存在(#818)。

1.8.9.post2(2019-10-22)

  • 1.8.9.post1版本引入了一个错误,影响了使用gdal2.x的源发行版的包的构建。这个bug已经在commit960568d中修复了。

1.8.9.post1(2019-10-22)

  • 对包设置脚本进行了更改,以便在从源发行版构建包时使用gdal3的shim模块。包没有其他更改。

1.8.9(2019-10-21)

  • 为gdal3.0增加了一个垫片模块和支持。该包现在可以构建并与gdal3.0和proj6.1或6.2一起使用。请注意,我们将上载到PyPI的1.8.9控制盘将包含gdal2.4.2和proj4.9.3,如1.8.8控制盘所示。

1.8.8(2019-09-25)

  • 几何类型代码3000的GEOPACKAGE文件的模式不能用菲奥娜1.87.0来报告。此错误已修复。

1.8.7(2019-09-24)

错误修复:

  • 在处理下面1.8.5版本下的M值的多边形时,回归实际上并不是固定的(见新报告789),而是在版本1.8.7中修复的。

  • 包含“!”的Windows文件名现在解析正确,修复了问题#742。

即将发生的变化:

  • 在1.9.0版本中,迭代集合时生成的对象将是可变映射,但不再是Python dict的实例。版本1.9旨在向后兼容1.8,除非用户代码测试 isinstance(feature, dict) . 在版本2.0中,新的特性、几何图形和属性类将成为不可变的映射。看到了吗https://github.com/Toblerity/fiona-rfc/blob/master/rfc/0001-fiona-2-0-changes.md有关2.0版即将进行的更改的更多讨论。

1.8.6(2019年3月18日)

  • 1.8.5中的JSON驱动程序启用广告是错误的(176),但是在这个版本中,它们已经可以使用了。

1.8.5(2019年3月15日)

  • 如果尽可能早地设置gdal_数据,gdal似乎工作得最好。理想情况下,它是在导入fiona之前在构建库或环境中设置的,但是对于车轮,在导入fiona.env时,我们会将gdal_数据修补到os.environ中。这解决了731。

  • 已经修复了允许忽略.cpg文件的错误组合(726)。

  • 在输入集合上下文(collection.u enteruuuuu)时,如果需要并输入,将创建一个新的匿名gdal环境。这使得“with fiona.open(…)as collection:大致相当于”with fiona.open(…)as collection,env():。这有助于防止在创建集合并稍后在不同范围内使用时出现错误。

  • 缺少对topojson、geojsonseq和esrijson的gdal支持已启用(721)。

  • 处理具有m值(724)的多边形时的回归已固定。

  • 为了提高功能写入性能(718),已取消了ogrFeatureBuilder方法中的每个功能调试日志记录调用。

  • 增加了对谷歌云存储中由“GS”资源名称标识的数据集的本地支持(709)。

  • 已为三角形、多面体表面和锡几何类型添加了支持(679)。

  • 有关使用memoryfile和zipmemoryfile类的说明已添加到手册中(674)。

1.8.4(2018年12月10日)

  • 现在可以用指定的精度(523)转换三维几何图形。

  • 已修复为具有“时间”字段(692)的形状文件生成虚假DriverSupportError的错误。

  • GDAL_DATA数据环境变量的修补意外地留在1.8.3中,现在已被删除。

1.8.3(2018年11月30日)

  • 此项目从Rasterio中选取的Rasterio_env config环境标记已重命名为Fiona_env(665)。

  • 选项--gdal data和--proj data已经添加到fio env命令中,这样,Rasterio轮子的用户就可以获得设置gdal_data和proj_lib环境变量的路径。

  • 在集合的CRS和CRS的WKT属性中,使gdal和proj支持文件发现和配置自动失败的尝试已被还原。用户必须在“with env()”块内执行此类代码,或设置gdal所需的gdal_数据和proj_lib环境变量。

1.8.2(2018年11月19日)

错误修复:

  • 调用迭代器的“下一步”且发现会话丢失或处于非活动状态,而不是将空指针传递给ogr“l”getnextfeature(687)时引发fionavalueerror。

1.8.1(2018年11月15日)

错误修复:

  • 添加对osrgetauthorityname和osrgetauthoritycode调用的检查,这些调用将记录查找这些项时出现的问题。

  • 打开的数据源现在在我们在writingsession.start(676)中提出异常之前发布。这修复了Windows上锁定文件的问题。

  • 现在,当获取集合的CRS或CRS-WKT属性(673,690)时,我们确保存在env实例。否则,无法找到Fiona车轮中所需的gdal和proj数据文件。

  • 已经对gdal和proj数据搜索进行了重构,以提高可测试性(678)。

  • 在项目的cython代码中,void*指针已被适当的gdal类型(672)替换。

  • 关于编码创建选项(668)的普遍警告级别日志消息已被消除。

1.8.0(2018年10月31日)

这是最终的1.8.0版本。谢谢大家!

错误修复:

  • 我们cpdef session.stop,这样它就有了一个C版本,可以安全地从dealloc uuuuuu调用,修复Pypy问题(659,553)。

1.8RC1(2018年10月26日)

除了更多的测试标准化和引入临时测试收集模块来支持Travis CI上完全测试的python 2.7 Macosx车轮的构建之外,1.8rc1中没有任何变化。

1.8b2(2018年10月23日)

错误修复:

  • 使用凭据装饰器确保环境不再破坏外部环境的凭据。这修复了报告给Rasterio项目的一个bug,该bug也存在于Fiona中。

  • 已删除未使用的打包模块导入和依赖项(#653)。

  • Env类登录到“rasterio”层次结构,而不是“fiona”。这个错误已经纠正(646)。

  • 映射抽象基类将尽可能从collections.abc导入(647)。

重构:

  • Pytest功能和固定装置测试的标准化仍在继续,并接近完成(648、649、650、651、652)。

1.8b1(2018年10月15日)

Deprecations:

  • 集合切片已被弃用,在将来的版本中将被禁止。

错误修复:

  • 传递给转换模块方法的Rasterio CRS对象将根据需要转换为dict(590)。

  • 将曲线几何图形隐式转换为线性近似值,而不是失败(617)。

  • 将test_collection.py和test_layer.py中的UnitTest用例迁移到使用标准数据_dir和路径_coutilidrnp_shp fixtures(616)。

  • 根记录器配置已从所有测试脚本中删除(615)。

  • 只有当显式请求时,才会为cli上下文env创建一个AWS会话,与Rasterio的cli(635)的行为匹配。

  • 对ATTR的依赖是明确的。

  • 其他依赖关系被固定到需求文件中的已知良好版本。

  • 未使用的参数已从env构造函数(637)中删除。

重构:

  • 添加了一个with-context-env decorator,用于为cli命令设置gdal环境。命令函数本身现在简化了。

1.8A3(2018年10月1日)

Deprecations:

  • 这个 fiona.drivers() 上下文管理器被正式否决。所有用户应切换到 fiona.Env() 它以可逆的方式注册格式驱动程序并管理gdal配置。

错误修复:

  • Collection类现在将有关跳过字段的日志消息筛选为每个字段最多一条警告消息(627)。

  • 只有在需要时才导入boto3模块(507,629)。

  • 与Click 7.0兼容(633)。

  • 在debug()调用中使用%r而不是%s可防止unicodedecode错误(620)。

1.8A2(2018年7月24日)

新功能:

  • 64位整数现在是int类型字段的默认值(562,564)。

  • 现在支持数据集的“http”、“s3”、“zip+http”和“zip+s3”URI方案(425、426)。

  • 我们增加了一个 MemoryFile 类,它支持格式化的内存中功能集合(501)。

  • 增加了对gdal 2.x布尔字段子类型(531)的支持。

  • 一个新的 fio rm 命令可以清除多文件数据集(538)。

  • 特征集合中的几何图形类型更灵活。我们现在不仅可以指定一个几何类型,还可以指定一系列允许的类型,或者“任意”来允许任何几何类型(539)。

  • 已添加对gdal 2.2+空字段的支持(554)。

  • 新的 gdal_open_vector() 我们内部API的功能提供了大大改进的错误处理(557)。

错误修复:

  • 在python 2.7上涉及ordereddict导入的bug已经修复(533)。

  • AttributeError--bbox FIO CAT选项与多个已修复的输入文件一起使用(543,544)。

  • 已删除过时和废弃的fiona.tool模块。

  • 恢复0A2BC7C中的更改,该更改在报告集合架构时丢弃几何类型中的Z(541)。

  • 需要六个版本1.7或更高版本(550)。

  • 已经修复了与“zip+s3”uri相关的回归。

  • 现在,默认情况下会搜索Debian的gdal数据位置(583)。

1.8A1(2017年11月6日)

新功能:

  • 每次调用 writerecords() 涉及一个或多个事务,每个事务具有最多20000个功能。这提高了写入地理数据包文件时的性能,因为以前的事务大小只有200个功能(476,491)。

包:

  • Fiona的cython源文件已经被重构,因此不再有单独的gdal 1.x和gdal 2.x扩展模块。相反,有一个基于gdal 2.x的基本扩展模块和用于使用gdal 1.x安装的填充模块。

1.7.11.邮政1(2018-01-08)

  • 这个发布后的版本向包含的gdal库(仍然是2.2.2版)添加了缺少的expat(以及gpx格式)支持。

1.7.11(2017年12月14日)

  • 这个 encoding 的关键字参数 fiona.open() 它旨在允许调用者覆盖数据源自己的可能错误的编码,但尚未工作(510,512)。问题是,在打开数据源之前,我们并不总是设置gdal open或config选项。这个bug由maint-1.7分支中的多个提交解决,修复过程在tests/test_encoding.py中演示。

  • --encoding 选项已添加到FIO加载中,以允许创建带.cpg文件(499,517)的编码形状文件。

1.7.10.post1(2017年10月30日)

  • 已经发布了一个后版本来修复上传到pypi的macosx轮子的问题。

1.7.10(2017年10月26日)

错误修复:

  • rio cat --layers 验证程序已被删除(478)。

包:

  • 此版本的官方OS X和Manylinux1车轮(在PYPI上)将与shapely 1.6.2和Rasterio 1.0A10车轮兼容。

1.7.9.post1 (2017年08月21日)

此版本不引入fiona包中的任何更改。它将gdal从2.2.0升级到2.2.1,并将其发布到python包索引中。

1.7.9(2017年8月17日)

错误修复:

  • 获取gdal错误回调函数的gil,以防止用户代码释放gil时发生gdal错误时崩溃。

  • 关闭时同步和刷新层,即使功能数量不明确(467)。

1.7.8(2017年6月20日)

错误修复:

  • 提供基于cpleror的异常(456)所需的所有参数。

1.7.7(2017年6月5日)

错误修复:

  • 将logger`warn()`(已弃用)调用切换到'warning()`。

  • 将cython模块中的所有相对导入和cimports替换为绝对导入(450)。

  • 避免设置 PROJ_LIB 到不存在的目录(439)。

1.7.6(2017年4月26日)

错误修复:

  • 回落到 share/proj 项目库(440)。

  • 将对“osrdestoryspatialreference()”的每个调用都替换为“osrrelease()”,修复了441(443)中报告的gpkg驱动程序崩溃程序。

  • 添加 DriverIOError 来源 IOError 用于特定于驱动程序的错误,如geojson驱动程序拒绝覆盖现有文件。此外,我们现在还确保当此错误由 fiona.open() any created read or write session is deleted, this eliminates spurious exceptions on teardown of broken Collection 对象(437,444)。

1.7.5(2017年3月20日)

错误修复:

  • 以读取(默认)模式打开数据文件 fiona.open() using the the driverdrivers 关键字参数(用于指定某些格式驱动程序)有时会由于字符串列表(428)终止不当而导致Windows崩溃。fiona的bugy“string_list()”已被gdal的“csladdString()”替换。

1.7.4(2017年2月20日)

错误修复:

  • 当传递到的前6000字节数据中找不到某些键时,OGR的esrijson检测失败。 BytesCollection (α422)。json文件扩展名现在显式地提供给后面的内存文件。 BytesCollection 当给定'driver='geojson''关键字参数时(423)。

1.7.3(2017-02-14)

玫瑰是红色的。Tan是个傻瓜。软件回归是最令人尴尬的错误。

错误修复:

  • 对Windows上的gdal错误处理回调使用uustdcall,如在Rasterio中一样。

  • 打开对rio cat和rio info(421)中zip://urls的潜在支持。

  • 1.7.2版本中断了对具有绝对路径(418)的zip文件的支持。此回归已通过测试加以确定。

1.7.2(2017-01-27)

未来折旧:

  • ` collection.uuNext_uuuu()是错误的,因为它与'collection.filter()'或'collection.uuuIter_uuuu()'结合使用时会导致功能重复。它将在Fiona 2.0中移除。请使用'pythonwarning=“always:::fiona”-w“always:::fiona”`运行测试或程序,并从'next(collection)`切换到'next(iter(collection))`(301),以检查是否使用了此不推荐使用的功能。

错误修复:

  • 压缩的字节流可以通过 BytesCollection (α318)。

1.7.1.岗位1(2016-12-23)

  • 使用SGillies/FRS车轮版本1.2.0的新二进制车轮。请参阅https://github.com/sgillies/frs-wheel-builds/blob/master/changes.txt。

1.7.1(2016-11-16)

错误修复:

  • 防止fiona绊倒在gdal 2.1(384)中引入的“z”、“m”和“z m”几何类型上。fiona 1.7.1没有为这些类型添加显式支持,它们被强制为几何类型1-7(“点”、“线串”等)。

  • 养一个 UnsupportedGeometryTypeError 当新集合的架构或其他地方遇到伪造或不支持的几何类型时(340)。

  • 为fio cat(370)启用“--precision 0”。

  • 通过生成 None (385)

  • 将log.warn调用替换为log.warning调用(379)。

  • 如果运行时gdal config或“--gdal version”都不指示gdal C API版本,则打印错误消息 setup.py (α364)。

  • 让dict-like子类通过crs类型检查(367)。

1.7.0post2(2016-06-15)

打包:为“干净”和“配置”目标定义扩展模块(363)。

1.7.0post1(2016-06-15)

打包:没有为“干净”设置目标(361,362)复制任何文件。

1.7.0(2016年6月14日)

这个库中的C扩展模块现在可以构建并与gdal库的1.x或2.x版本一起使用。非常感谢任_布法特领导这项工作。

重构:

  • 这个 ogrext1.pyxogrext2.pyx 文件现在使用在中定义的单独C API ogrext1.pxdogrex2.pxd. 其他扩展模块已经被重构,以便它们不依赖于这些模块中的任何一个,并且使用与gdal 1.x和2.x兼容的GDAL/OGR API子集()。

包:

  • 源分发现在包含两个不同的源 ogrext 扩展模块。这个 ogrext1.c 文件将与gdal 1.x和 ogrext2.c 文件将与gdal 2.x一起使用。

1.7b2(2016年6月13日)

  • 新功能:增强fio cat和fio dump的“--layer”选项,允许选择一个或多个多层输入文件的单独层(349)。

1.7B1(2016-06-10)

  • 新功能:支持gdal版本2+(259)。

  • 新功能:新的fio calc cli命令(273)。

  • 新功能:FIO INFO(316)和FIO LOAD(299)的`--layer`选项。

  • 新特性:fio collect的一个`--no parse`选项,允许谨慎的用户避免额外的JSON序列化和反序列化(306)。

  • 错误修复:`+wktext`现在在将crs从wkt序列化到proj.4 dicts(352)时保留。

  • 错误修复:打开集合时发生的小内存泄漏已修复(337)。

  • 错误修复:内部Unicode错误现在导致日志消息和 UnicodeError 例外,不是 TypeError (α356)。

1.6.4(2016年5月6日)

  • 如果活动的gdal库版本大于等于2.0,则引发importerror,而不是意外失败(338,341)。对gdal>=2.0的支持将出现在Fiona 1.7中。

1.6.3.post1 (2016年3月27日)

  • 在这个发布后的版本中没有对库进行任何更改,但是pypi上的发行版发生了重大更改:为了帮助使fiona与OS X上的shapely更兼容,MacOSX(仅限)二进制车轮中包含的gdal共享库现在静态地链接了geos库。请参阅https://github.com/sgillies/frs-wheel-builds/issues/5。

1.6.3(2015年12月22日)

  • 北半球的白天一直在减少,但现在又恢复了原来的样子。

  • 在某些情况下,非UTF字符串被传递到ogr函数中,在Windows上,这有时会导致Python进程崩溃(303)。当字段名或字段值无法编码时,fiona现在会引发从unicodeerror派生的错误。

1.6.2(2015年9月22日)

  • 在数据集元属性中仅提供proj4表示导致在使用 fiona.open(..., **src.meta) as dst 图案(265)。通过将crs-wkt项添加到“meta属性”并扩展“fiona.open()”和集合构造函数来查找并区分此关键字参数的优先级,可以解决此错误。

1.6.1(2015年8月12日)

  • 错误修复:fiona现在反序列化由ogr geojson驱动程序(244,245,246)提供的json编码字符串属性。

  • 错误修复:由于输入错误(254),Proj4数据未正确复制到二进制分发中。

特别感谢WFMU DJ Liz Berg为我的发布冲刺加油的精彩播放列表。请访问http://wfmu.org/playlists/show/62083查看。你听不懂爱情棺材。

1.6.0(2015年7月21日)

  • 将Cython需求升级至0.22(214)。

  • 新的bytescollection类(215)。

  • 将gdal的openfilegdb驱动程序添加到已注册的驱动程序(221)。

  • 作为插件实现CLI命令(228)。

  • 提高click.abort而不是调用sys.exit,以防止suppling exits(236)。

1.5.1(2015年3月19日)

  • 通过修复manifest.in(216)将测试数据还原到sdist。

1.5.0(2015年2月2日)

  • 完成geojson功能序列选项(174)。

  • 修复读取不支持功能计数的数据集(190)。

  • 新的测试数据集(188)。

  • 修正编码错误(191)。

  • 删除混淆警告(195)。

  • 添加二进制车轮的数据文件(196)。

  • 添加对在读取数据集时启用的驱动程序的控制(203)。

  • 将cligj用于涉及geojson(204)的cli选项。

  • Fix fio info--bounds帮助(206)。

1.4.8(2014-11-02)

  • 添加缺少的crs_wkt属性,如Rasterio(182)中所示。

1.4.7(2014年10月28日)

  • 修复EPSG代码(149)中的CRS设置。

1.4.6(2014年10月21日)

  • 在bounds()178中处理三维坐标。

1.4.5(2014年10月18日)

  • 将--bbox选项添加到fio cat(163)。

  • 如果从SDIST(167)运行,则跳过地理包测试。

  • 添加fio边界和fio distrib。

  • 将FIO转储恢复到工作顺序。

1.4.4(2014年10月13日)

  • 修正1.4.3(164)中引入的gdal 1.11的意外要求。

1.4.3(2014年10月10日)

  • 添加对地理包格式(160)的支持。

  • 在cli(162)中为--driver添加-f和--format别名。

  • 向cli添加--version选项和env命令。

1.4.2(2014年10月3日)

  • --DST CRS和--SRC CRS选项用于FIO CAT和Collect(159)。

1.4.1(2014年9月30日)

  • 修复集合的getitem中的编码错误。

1.4.0(2014年9月22日)

  • 添加fio cat和fio collect命令(150)。

  • 返回python 2.6兼容性(148)。

  • 改进的CRS支持(149)。

1.3.0(2014年9月17日)

  • 将单个元数据项访问器添加到FIO INF(142)。

  • 将FIO移动到SETUPTOOLS入口点(142)。

  • 添加FIO转储和加载命令(143)。

  • 删除fio translate命令。

1.2.0(2014年9月2日)

  • 始终在架构中显示属性宽度和精度(123)。

  • 写入功能的日期时间属性(125)。

  • 重置filter()中的空间过滤(129)。

  • 接受datetime.date对象作为功能属性(130)。

  • 将切片添加到集合迭代器(132)。

  • 将几何对象遮罩添加到集合迭代器(136)。

  • 更改源布局以使其与栅格形状匹配(138)。

1.1.6(2014年7月23日)

  • 实现collection_uuGetItem_uu()(112)。

  • 将gdal终结留给dll的析构函数(113)。

  • 添加collection keys(),values(),items(),uu contains_uu()(114)。

  • CRS错误修复(116)。

  • 添加fio cli程序。

1.1.5(2014-05-21)

  • 添加了CPL-Errs上下文管理器(108)。

  • 使用“==”test而不是“is”(109)检查空值。

  • 在python 3(110)的安装程序中,使用encoding='utf-8'打开辅助文件。

1.1.4(2014年4月3日)

  • 将架构中的“long”转换为“int”(101)。

  • 小心地将python模式映射到可能被咀嚼的内部模式(105)。

  • 允许使用几何图形写入功能:无(71)。

1.1.3(2014年3月23日)

  • 在输入DriverManager上下文(80,92)时,始终注册所有gdal和ogr驱动程序。

  • 跳过带有警告(91)的不支持字段类型。

  • 允许将ogr配置选项传递给fiona.drivers()(90,93)。

  • 添加bounds()函数(100)。

  • 打开GPX驱动程序。

1.1.2(2014年2月14日)

  • 移除dumpgj(88)中左侧的收集切片。

1.1.1(2014年2月2日)

  • 添加一个类似于Rasterio中的交互文件检查器。

  • CRS到字符串错误修复(83)。

1.1(2014年1月22日)

  • 使用上下文管理器来管理驱动程序(78),这是一个向后兼容但变化很大的驱动程序。Fiona现在可以与Rasterio兼容,并且可以更好地与osgeo软件包配合使用。

1.0.3(2014-01-21)

  • 修复+init投影的序列化(69)。

1.0.2(2013年9月9日)

  • 更智能、更好的测试设置(65、66、67)。

  • 将type='feature'添加到从集合中读取的记录(68)。

  • 使用geojson驱动程序时跳过几何验证(61)。

  • Dumpgj文件描述将记录属性报告为列表(如dict.items()中),而不是dict。

1.0.1(2013年8月16日)

  • 允许在阅读时对书面字段进行排序并保留字段顺序(57)。

1.0(2013年7月30日)

  • 添加prop_type()函数。

  • 允许对python 2(51)使用UTF-8编码的路径。对于python 3,路径必须始终是str,而不是bytes。

  • 从collection.meta中删除编码,它只是一个文件创建选项。

  • 支持链接gdal框架(54)。

0.16.1(2013年7月2日)

  • 添加listlayers,open,prop_width to_uuu init_uu py:uuu all_uuuu。

  • 每当我们请求集合迭代器(49)时,重置OGR层的读取。

0.16(2013年6月24日)

  • 添加对将层写入多层文件的支持。

  • 添加测试以达到100%的python代码覆盖率。

0.15(2013年6月6日)

  • 获取并设置数字字段宽度(42)。

  • 添加对多层数据源的支持(17)。

  • 添加对zip和tar虚拟文件系统的支持(45)。

  • 添加listLayers()函数。

  • 将geojson添加到支持的格式列表中(47)。

  • 允许按索引或名称选择层。

0.14(2013年5月4日)

  • 添加选项以在dumpgj程序中添加JSON-LD。

  • 将值与集合构造函数中的six.string_类型进行比较。

  • 向Collection.meta添加编码。

  • 在自述文件中记录dumpgj。

0.13(2013年4月30日)

  • Python 2/3在单个包中的兼容性。现在支持2.6、2.7、3.3号 Python 。

0.12.1(2013年4月16日)

  • 修复SDIST (#39)中自述文件链接混乱的问题。

0.12(2013年4月15日)

  • 修复损坏的扩展模块安装 (#35)。

  • 在匹配的python日志级别记录cpl错误。

  • 在ogr中使用大写编码名称,在python中使用小写。

0.11(2013年4月14日)

  • Cythonize.pyx文件(#34).。

  • 使用或围绕OGR的记录数据内部重新编码 (#35)。

  • 修复int/float PROJ.4参数序列化中的错误。

0.10(2013年3月23日)

  • 添加函数以获取str类型属性的宽度。

  • 处理三维几何图形类型的验证和模式表示(#29)。

  • 对于空几何图形 (#31)就返回{'geometry': None} 。

0.9.1(2013年3月7日)

  • 使ogext.so中的记录器静音(可以被覆盖)。

  • 允许记录字段编码的用户规范(如自然地球形状文件的“windows-1252”)在OGR无法检测到时提供帮助。

0.9(2013年3月6日)

  • 访问从不检查的已关闭文件的文件元数据(CRS、架构、边界)将返回无异常。

  • 添加支持的驱动程序及其支持模式的dict。

  • 对不支持的驱动程序和模式引发ValueError。

  • 从ogext.pyx中删除断言。

  • 将validate_record方法添加到集合。

  • 向fiona.crs添加有用的坐标系函数。

  • 在fiona.collection上推广使用fiona.open。

  • 处理shapefile的linestring/polygon和multise的混合(18)。

  • 允许用户指定形状文件文本字段的宽度(20)。

0.8(2012年2月21日)

  • 已将.opened属性替换为.closed(collection()的产品始终打开)。还有一个将关闭集合但仍不依赖的uudel_uu()。

  • 添加了WriteRecords方法。

  • 添加了一个记录缓冲区并更好地计数集合中的记录。

  • 每个集合/会话管理一个迭代器。

  • 添加只读边界属性。

0.7(2012年1月29日)

  • 对日期、时间和日期时间字段的初始时区初始支持。如果可以避免这些字段类型,则不要使用它们。字符串字段中的RFC3339日期时间要好得多。

0.6.2(2012年1月10日)

  • 在读取模式下诊断并设置集合的驱动程序属性。

  • 如果收集路径不指向文件,则会失败。多收集工作区是一个(可能)待办事项。

0.6.1(2012年1月6日)

  • 处理磁盘集合的未定义crs的情况。

0.6(2012年1月5日)

  • 支持基于Proj4的采集坐标参考系统。

  • 将OGR警告和错误重定向到Fiona日志。

  • 坚持从ograpi函数返回的指针在使用前不是空的。

0.5(2011年12月19日)

  • 支持读写入任何几何类型的集合。

  • 用映射(dicts)来替换要素和几何类。

  • 删除工作区类。

0.2(2011年9月16日)

  • 将WorldMill重命名为Fiona。

0.1.1(2008年12月4日)

  • 支持没有几何图形的功能。

信用

写Fiona:

Geopandas项目(Joris van den Bossche等人)是1.8.0中新功能的主要驱动因素。

没有FrankWarmerdam和其他GDAL/OGR开发人员的出色工作,Fiona是不可能实现的。

这项工作的一些部分得到了美国国家人文基金会(http://www.neh.gov)的资助(用于Pleiades)。