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