# Raster Data Import Import raster data from files, URLs, or cloud storage. ## Overview Raster data import supports multiple formats and import methods for grid-based spatial data. ## Supported Formats ### GeoTIFF - **Extension**: `.tif`, `.tiff`, `.gtif` - **Description**: Georeferenced TIFF format - **Features**: Full support for multi-band rasters, overviews, compression ### Cloud Optimized GeoTIFF (COG) - **Extension**: `.tif`, `.tiff` - **Description**: Cloud-optimized GeoTIFF format - **Features**: Optimized for cloud storage and streaming - **Benefits**: Efficient access to large rasters ### Other Formats - **JPEG2000**: `.jp2`, `.j2k` - **PNG**: `.png` (with world file) - **NetCDF**: `.nc`, `.nc4` - **HDF**: `.hdf`, `.h5` ## Import Methods ### File Upload Upload raster files directly: 1. Navigate to raster upload page 2. Select file or drag and drop 3. Add optional description 4. Configure import options 5. Click "Upload" **File Size Limit**: Configurable (default: 100MB+) ### URL Import Import from web-accessible URLs: 1. Navigate to URL import page 2. Enter raster URL 3. Configure import options 4. Optionally schedule import 5. Click "Import" ### S3 Bucket Import Import from AWS S3 buckets: 1. Navigate to S3 import page 2. Configure AWS credentials 3. Select bucket and file 4. Configure import mode 5. Click "Import" **Import Modes**: - **Serve COG**: Register as remote COG (no download) - **Download PostGIS**: Download and import to PostGIS ### GeoServer Import Import from GeoServer WCS: 1. Navigate to GeoServer import page 2. Select workspace and layer 3. Configure import options 4. Click "Import" ## Import Process ### Step 1: File Validation Raster file is validated: - Format detection - GDAL availability check - File integrity verification - Metadata extraction ### Step 2: Metadata Extraction Metadata extracted using GDAL: - Spatial reference system (SRID) - Bounding box - Pixel size - Band count - Data type - NoData values ### Step 3: PostGIS Import Raster imported into PostGIS using `raster2pgsql`: ```bash raster2pgsql -s {srid} -t {tile_size} {file} {schema}.{table} | psql ``` **Options**: - **Tile Size**: Default 256x256 pixels - **Schema**: Default 'public' - **Table Name**: Auto-generated or specified - **SRID**: Detected from file or specified ### Step 4: Registration Raster registered in system: - Metadata stored in `aurora_raster_layers` table - Layer name assigned - Access permissions set - Preview generation ## Configuration Options ### Tile Size Configure raster tiling: - **256x256**: Default, good for most cases - **512x512**: Larger tiles, fewer database rows - **128x128**: Smaller tiles, more database rows ### Import Mode For S3/URL imports: - **Serve COG**: Register remote COG, no local storage - **Download PostGIS**: Download and import to PostGIS ### Compression Configure raster compression: - **None**: No compression - **JPEG**: Lossy compression - **LZW**: Lossless compression - **Deflate**: Lossless compression ## Example: GeoTIFF Upload ```bash # Via API curl -X POST "https://example.com/raster_upload.php" \ -F "raster_file=@elevation.tif" \ -F "description=Digital elevation model" \ -F "tile_size=256x256" ``` ## Example: S3 Import ```bash # Via API curl -X POST "https://example.com/raster_bucket_import_api.php" \ -d "url=s3://bucket/path/to/raster.tif" \ -d "mode=download_postgis" \ -d "aws_access_key_id=..." \ -d "aws_secret_access_key=..." ``` ## Cloud Optimized GeoTIFF (COG) COG format provides: - **Efficient Streaming**: Access specific regions without full download - **Cloud Storage**: Optimized for S3, Azure, GCS - **Performance**: Fast access to large rasters - **Cost Effective**: Reduced bandwidth usage ### Creating COGs Use GDAL to create COG: ```bash gdal_translate input.tif output.tif \ -of COG \ -co COMPRESS=LZW \ -co TILED=YES ``` ## Troubleshooting ### Common Issues **GDAL not available** - Install GDAL: `apt-get install gdal-bin` (Ubuntu) - Verify: `gdalinfo --version` - Check PATH configuration **Large file timeout** - Increase PHP execution time - Use background import - Consider chunked upload **SRID not detected** - Check raster metadata - Specify SRID manually - Verify projection information **Memory issues** - Increase PHP memory limit - Use tile-based processing - Consider resampling large rasters ## Related Documentation - [Vector Import](vector.md) - [PostGIS Import](postgis.md) - [ESRI Import](esri.md) - [Raster Analysis Tools](../analysis-tools/raster-histogram.md)