命令行界面?

Fiona的新命令行界面是一個名為“fio”的程序。

Usage: fio [OPTIONS] COMMAND [ARGS]...

  Fiona command line interface.

Options:
  -v, --verbose     Increase verbosity.
  -q, --quiet       Decrease verbosity.
  --version         Show the version and exit.
  --gdal-version    Show the version and exit.
  --python-version  Show the version and exit.
  --help            Show this message and exit.

Commands:
  bounds   Print the extent of GeoJSON objects
  calc     Calculate GeoJSON property by Python expression
  cat      Concatenate and print the features of datasets
  collect  Collect a sequence of features.
  distrib  Distribute features from a collection.
  dump     Dump a dataset to GeoJSON.
  env      Print information about the fio environment.
  filter   Filter GeoJSON features by python expression.
  info     Print information about a dataset.
  insp     Open a dataset and start an interpreter.
  load     Load GeoJSON to a dataset in another format.
  ls       List layers in a datasource.
  rm       Remove a datasource or an individual layer.

它是用 click 開發得而且在1.1.6版中是新的功能。

界限?

1.4.5版中的新功能。

Fio-bounds從stdin讀取LF或RS分隔的geojson文本(特性或集合),并將其邊界(有或無其他數據)打印到stdout。

沒有選擇,它的工作方式如下:

$ fio cat docs/data/test_uk.shp | head -n 1 \
> | fio bounds
[0.735, 51.357216, 0.947778, 51.444717]

使用 --with-id 給你

$ fio cat docs/data/test_uk.shp | head -n 1 \
> | fio bounds --with-id
{"id": "0", "bbox": [0.735, 51.357216, 0.947778, 51.444717]}

calc?

在1.7b1版中是新的功能

此calc命令使用指定的表達式在GeoJSON特性上創建一個新屬性。

在受限命名空間中計算的表達式在包含4個函數( ` sum ` , ` pow ` , ` min ` , ` max ` ) , math 模塊,勻稱的 shape 函數,類型轉換(bool, int, str, len, float)和一個表示要評價特性對象 f 。這個 f 對象允許以javascript樣式的點標記進行訪問,以方便使用。

將為每個特性計算表達式,并將其返回值作為指定的屬性名稱添加到屬性中。默認情況下不會覆蓋現有屬性( 引發異常 )。

$ fio cat data.shp | fio calc sumAB  "f.properties.A + f.properties.B"

cat?

此cat命令連接一個或多個數據集的特性,并將它們打印為 JSON文本系列 of features. In other words: GeoJSON feature objects, possibly pretty printed, optionally separated by ASCII RS (x1e) chars using --rs.

fio cat 的輸出可以用管道輸送到 fio load 來創建新的連接數據集。

$ fio cat docs/data/test_uk.shp docs/data/test_uk.shp \
> | fio load /tmp/double.shp --driver Shapefile
$ fio info /tmp/double.shp --count
96
$ fio info docs/data/test_uk.shp --count
48

在1.4.0版中的新功能。

cat命令提供了過濾數據的可選方法,這與 fio filter tool. A bounding box --bbox w,s,e,n tests for a spatial intersection with the geometries. An attribute filter --where TEXT can use an SQL WHERE clause . 如果將多個數據集傳遞給 fio cat ,WHERE子句中使用的屬性必須對每個數據集有效。

收集?

此collect命令采用GeoJSON特性對象的JSON文本序列,例如 fio cat 的輸出并寫入GeoJSON特性集合。

$ fio cat docs/data/test_uk.shp docs/data/test_uk.shp \
> | fio collect > /tmp/collected.json
$ fio info /tmp/collected.json --count
96

在1.4.0版中的新功能。

分布區?

與fio collect相反,fio distrib采用GeoJSON特性集合,并編寫GeoJSON特性對象的JSON文本序列。

$ fio info --count tests/data/coutwildrnp.shp
67
$ fio cat tests/data/coutwildrnp.shp | fio collect | fio distrib | wc -l
67

在1.4.0版中的新功能。

dump?

此dump命令讀取向量數據集,并將GeoJSON特性集合寫入stdout。它的輸出可以通過管道傳輸到 fio load (見下文)。

$ fio dump docs/data/test_uk.shp --indent 2 --precision 2 | head
{
  "features": [
    {
      "geometry": {
        "coordinates": [
          [
            [
              0.9,
              51.36
            ],

您可以選擇使用 --x-json-seq 轉儲JSON文本序列. 從1.4.0版開始, fio cat 是生成序列的更佳工具。

$ fio dump docs/data/test_uk.shp --precision 2 --x-json-seq | head -n 2
{"geometry": {"coordinates": [[[0.9, 51.36], [0.89, 51.36], [0.79, 51.37], [0.78, 51.37], [0.77, 51.38], [0.76, 51.38], [0.75, 51.39], [0.74, 51.4], [0.73, 51.41], [0.74, 51.43], [0.75, 51.44], [0.76, 51.44], [0.79, 51.44], [0.89, 51.42], [0.9, 51.42], [0.91, 51.42], [0.93, 51.4], [0.94, 51.39], [0.94, 51.38], [0.95, 51.38], [0.95, 51.37], [0.95, 51.37], [0.94, 51.37], [0.9, 51.36], [0.9, 51.36]]], "type": "Polygon"}, "id": "0", "properties": {"AREA": 244820.0, "CAT": 232.0, "CNTRY_NAME": "United Kingdom", "FIPS_CNTRY": "UK", "POP_CNTRY": 60270708.0}, "type": "Feature"}
{"geometry": {"coordinates": [[[-4.66, 51.16], [-4.67, 51.16], [-4.67, 51.16], [-4.67, 51.17], [-4.67, 51.19], [-4.67, 51.19], [-4.67, 51.2], [-4.66, 51.2], [-4.66, 51.19], [-4.65, 51.16], [-4.65, 51.16], [-4.65, 51.16], [-4.66, 51.16]]], "type": "Polygon"}, "id": "1", "properties": {"AREA": 244820.0, "CAT": 232.0, "CNTRY_NAME": "United Kingdom", "FIPS_CNTRY": "UK", "POP_CNTRY": 60270708.0}, "type": "Feature"}

信息?

此info命令將有關數據集的信息作為JSON對象打印。

$ fio info docs/data/test_uk.shp --indent 2
{
  "count": 48,
  "crs": "+datum=WGS84 +no_defs +proj=longlat",
  "driver": "ESRI Shapefile",
  "bounds": [
    -8.621389,
    49.911659,
    1.749444,
    60.844444
  ],
  "schema": {
    "geometry": "Polygon",
    "properties": {
      "CAT": "float:16",
      "FIPS_CNTRY": "str:80",
      "CNTRY_NAME": "str:80",
      "AREA": "float:15.2",
      "POP_CNTRY": "float:15.2"
    }
  }
}

您可以這樣處理JSON,例如, underscore-cli.

$ fio info docs/data/test_uk.shp | underscore extract count
48

您還可以選擇獲取單個信息項作為純文本(而不是JSON)字符串

$ fio info docs/data/test_uk.shp --count
48
$ fio info docs/data/test_uk.shp --bounds
-8.621389 49.911659 1.749444 60.844444

load?

此load命令從stdin中讀取GeoJSON特性,并使用其他格式將其寫入向量數據集。

$ fio dump docs/data/test_uk.shp \
> | fio load /tmp/test.shp --driver Shapefile

此命令還支持GeoJSON文本序列。將檢測RS分離序列。如果要加載LF分隔序列,必須指定 --x-json-seq .

$ fio cat docs/data/test_uk.shp | fio load /tmp/foo.shp --driver Shapefile
$ fio info /tmp/foo.shp --indent 2
{
  "count": 48,
  "crs": "+datum=WGS84 +no_defs +proj=longlat",
  "driver": "ESRI Shapefile",
  "bounds": [
    -8.621389,
    49.911659,
    1.749444,
    60.844444
  ],
  "schema": {
    "geometry": "Polygon",
    "properties": {
      "AREA": "float:24.15",
      "CNTRY_NAME": "str:80",
      "POP_CNTRY": "float:24.15",
      "FIPS_CNTRY": "str:80",
      "CAT": "float:24.15"
    }
  }
}

下劃線cli process命令是將GeoJSON特性集合轉換為功能序列的另一種方法。

$ fio dump docs/data/test_uk.shp \
> | underscore process \
> 'each(data.features,function(o){console.log(JSON.stringify(o))})' \
> | fio load /tmp/test-seq.shp --x-json-seq --driver Shapefile

過濾器?

此filter命令從stdin讀取GeoJSON特性并將該特性寫入stdout if 中,該特性的表達式值將 True 。

在受限制的命名空間中計算的python表達式包含3個函數(sum, min, max) , math 模塊,勻稱的 shape 函數和表示評價特性的對象 f 。這個 f 對象允許以javascript樣式的點標記進行訪問,以方便使用。

如果表達式求值為“truthy”值,則將逐字打印該特性。否則,此特性將從輸出中排除。

$ fio cat data.shp \
> | fio filter "f.properties.area > 1000.0" \
> | fio collect > large_polygons.geojson

將創建一個geojson文件,其中只包含來自 data.shp 區域超過給定閾值的那些特性。

注意此工具與 fio cat --where TEXT ... ,它提供特性屬性的SQL WHERE子句篩選。

rm?

這個 fio rm 命令刪除整個數據源或多層數據源中的單個層。如果數據源由多個文件(例如ESRI shapefile)組成,則將刪除所有文件都。

$ fio rm countries.shp
$ fio rm --layer forests land_cover.gpkg

1.8.0版中的新功能。

坐標參考系轉換?

此``fio cat`` 命令可以選擇將特征幾何轉換為用 --dst_crs 指定的新坐標參考系. 這個 fio collect 命令可以選擇從 --src_crs 指定的坐標參考系轉換默認的WGS84 GeoJSON CRS。像collect一樣, fio load 可以接受非WGS84特性,但由于它可以以GeoJSON以外的格式寫入文件,因此可以選擇指定 --dst_crs . 例如,WGS84特性從docs/data/test_uk.shp讀取,

$ fio cat docs/data/test_uk.shp --dst_crs EPSG:3857 \
> | fio collect --src_crs EPSG:3857 > /tmp/foo.json

通過epsg:3857(網絡墨卡托)繞道,并由fio cat轉換回wgs84。下列,

$ fio cat docs/data/test_uk.shp --dst_crs EPSG:3857 \
> | fio load --src_crs EPSG:3857 --dst_crs EPSG:4326 --driver Shapefile \
> /tmp/foo.shp

執行相同的操作,但用于esri shapefile輸出。

1.4.2版中的新功能。