Skip to main content

Crate oxigdal_server

Crate oxigdal_server 

Source
Expand description

OxiGDAL Tile Server

WMS/WMTS tile server for serving geospatial raster data over HTTP.

§Features

  • WMS 1.3.0: Full Web Map Service support with GetCapabilities, GetMap, GetFeatureInfo
  • WMTS 1.0.0: Web Map Tile Service with multiple tile matrix sets
  • XYZ Tiles: Simple tile serving compatible with Leaflet, MapLibre, etc.
  • Multi-layer: Serve multiple datasets simultaneously
  • Caching: Multi-level caching (memory + optional disk) with LRU eviction
  • Performance: Async/await with Tokio for high throughput
  • Pure Rust: No C/C++ dependencies, built on OxiGDAL

§Example Usage

use oxigdal_server::{Config, TileServer};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Load configuration
    let config = Config::from_file("config.toml")?;

    // Create and start server
    let server = TileServer::new(config)?;
    server.serve().await?;

    Ok(())
}

§Configuration

Create a config.toml file:

[server]
host = "0.0.0.0"
port = 8080
workers = 4

[cache]
memory_size_mb = 256
ttl_seconds = 3600

[[layers]]
name = "landsat"
path = "/data/landsat.tif"
formats = ["png", "jpeg"]
tile_size = 256

§Endpoints

§WMS

  • GetCapabilities: GET /wms?SERVICE=WMS&REQUEST=GetCapabilities
  • GetMap: GET /wms?SERVICE=WMS&REQUEST=GetMap&LAYERS=...&BBOX=...

§WMTS

  • GetCapabilities: GET /wmts?SERVICE=WMTS&REQUEST=GetCapabilities
  • GetTile (RESTful): GET /wmts/1.0.0/{layer}/{tileMatrixSet}/{z}/{x}/{y}.png

§XYZ Tiles

  • Tiles: GET /tiles/{layer}/{z}/{x}/{y}.png
  • TileJSON: GET /tiles/{layer}/tilejson

Re-exports§

pub use cache::CacheError;
pub use cache::CacheKey;
pub use cache::CacheStats;
pub use cache::TileCache;
pub use cache::TileCacheConfig;
pub use config::CacheConfig;
pub use config::Config;
pub use config::ConfigError;
pub use config::ImageFormat;
pub use config::LayerConfig;
pub use config::MetadataConfig;
pub use config::ServerConfig;
pub use config::StyleConfig;
pub use dataset_registry::DatasetMetadata;
pub use dataset_registry::DatasetRegistry;
pub use dataset_registry::LayerInfo;
pub use dataset_registry::RegistryError;
pub use server::ServerError;
pub use server::TileServer;

Modules§

cache
Tile caching system
config
Server configuration management
dataset_registry
Dataset registry for managing available layers
handlers
HTTP request handlers
server
HTTP server implementation