AR1/docs/import/raster.md

214 lines
4.5 KiB
Markdown

# 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)