[][src]Crate flatgeobuf

FlatGeobuf is a performant binary encoding for geographic data based on flatbuffers that can hold a collection of Simple Features including circular interpolations as defined by SQL-MM Part 3.

Installation

[dependencies]
flatgeobuf = "0.3"

Reading a FlatGeobuf file

use flatgeobuf::*;

let mut file = BufReader::new(File::open("countries.fgb")?);
let hreader = HeaderReader::read(&mut file)?;
let header = hreader.header();

let mut freader = FeatureReader::select_bbox(&mut file, &header, 8.8, 47.2, 9.5, 55.3)?;
while let Ok(feature) = freader.next(&mut file) {
    let props = feature.properties_map(&header);
    println!("{}", props["name"]);
}

Zero-copy feature access

let _ = feature.iter_properties(&header, |i, n, v| {
    println!("columnidx: {} name: {} value: {:?}", i, n, v);
    false // don't abort
});

Zero-copy geometry reader

Geometries can be accessed by implementing the GeomReader trait.

struct CoordPrinter;

impl GeomReader for CoordPrinter {
    fn pointxy(&mut self, x: f64, y: f64, _idx: usize) {
        println!("({} {})", x, y);
    }
}

let mut coord_printer = CoordPrinter {};
let geometry = feature.geometry().unwrap();
geometry.parse(&mut coord_printer, header.geometry_type());

Reading FlatGeobuf via HTTP

use flatgeobuf::*;

let mut client = BufferedHttpClient::new("https://pkg.sourcepole.ch/countries.fgb");
let hreader = HttpHeaderReader::read(&mut client).await.unwrap();
let header = hreader.header();

let mut freader = HttpFeatureReader::select_bbox(
    &mut client,
    &header,
    hreader.header_len(),
    8.8,
    47.2,
    9.5,
    55.3,
)
.await?;
while let Ok(feature) = freader.next(&mut client).await {
    let props = feature.properties_map(&header);
    println!("{}", props["name"]);
}

Structs

BufferedHttpClient
Column
ColumnArgs
ColumnBuilder
ColumnMeta
Crs
CrsArgs
CrsBuilder
DebugReader
Dimensions
Feature
FeatureArgs
FeatureBuilder
FeatureReader

FlatGeobuf feature reader

Geometry
GeometryArgs
GeometryBuilder
Header
HeaderArgs
HeaderBuilder
HeaderReader

FlatGeobuf header reader

HttpFeatureReader

FlatGeobuf feature reader

HttpHeaderReader
NodeItem

R-Tree node

PackedRTree

Packed Hilbert R-Tree

SearchResultItem

Bbox filter search result

Enums

ColumnOffset
ColumnType
ColumnValue
CrsOffset
FeatureOffset
GeometryOffset
GeometryType
HeaderOffset

Constants

ENUM_MAX_COLUMN_TYPE
ENUM_MAX_GEOMETRY_TYPE
ENUM_MIN_COLUMN_TYPE
ENUM_MIN_GEOMETRY_TYPE
ENUM_NAMES_COLUMN_TYPE
ENUM_NAMES_GEOMETRY_TYPE
ENUM_VALUES_COLUMN_TYPE
ENUM_VALUES_GEOMETRY_TYPE
MAGIC_BYTES
VERSION

Traits

GeomReader

Functions

calc_extent
enum_name_column_type
enum_name_geometry_type
finish_feature_buffer
finish_header_buffer
finish_size_prefixed_feature_buffer
finish_size_prefixed_header_buffer
get_root_as_feature
get_root_as_header
get_size_prefixed_root_as_feature
get_size_prefixed_root_as_header
hilbert_sort
is_collection
read_geometry