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取決于模塊 six , cligjmunch . 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中,新的特性、幾何圖形和屬性類將成為不可變的映射??吹搅藛醜ttps://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)。

  • 將曲線幾何圖形隱式轉換為線性近似值,而不是失?。?17)。

  • 將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日)?

錯誤修復:

  • 以讀?。J)模式打開數據文件 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,而不是意外失?。?38,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在單個包中的兼容性?,F在支持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)。