AR1/docs/api/datasets.md

310 lines
4.8 KiB
Markdown

# Datasets API
Endpoints for managing and querying spatial datasets.
## List Datasets
**Endpoint**: `GET /api/datasets/list.php`
List all datasets accessible to the current user.
### Parameters
- `has_geometry` (optional): Filter datasets with geometry (0 or 1)
### Response
```json
{
"success": true,
"data": [
{
"id": 123,
"name": "Sample Dataset",
"original_name": "sample.geojson",
"file_type": "geojson",
"metadata": { ... }
}
]
}
```
### Example
```bash
curl -X GET "https://example.com/api/datasets/list.php?has_geometry=1" \
-H "Cookie: PHPSESSID=..."
```
## Get Dataset
**Endpoint**: `GET /api/datasets/get.php`
Get detailed information about a specific dataset.
### Parameters
- `id` (required): Dataset ID
### Response
```json
{
"success": true,
"data": {
"id": 123,
"name": "Sample Dataset",
"original_name": "sample.geojson",
"file_type": "geojson",
"file_size": 1024000,
"description": "Dataset description",
"metadata": {
"feature_count": 1000,
"geometry_type": "Point",
"bbox": [-180, -90, 180, 90]
},
"uploaded_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-01T00:00:00Z"
}
}
```
### Example
```bash
curl -X GET "https://example.com/api/datasets/get.php?id=123" \
-H "Cookie: PHPSESSID=..."
```
## Query Dataset
**Endpoint**: `GET /api/basic/index.php/datasets/{id}/query`
Query features from a dataset with filtering and pagination.
### Parameters
- `page` (optional): Page number (default: 1)
- `limit` (optional): Items per page (default: 100, max: 1000)
- `bbox` (optional): Bounding box filter (minX,minY,maxX,maxY)
- `properties` (optional): Property filters (JSON object)
- `geometry_type` (optional): Filter by geometry type
### Response
```json
{
"success": true,
"data": {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": 1,
"properties": { ... },
"geometry": { ... }
}
],
"pagination": {
"page": 1,
"limit": 100,
"total": 1000,
"pages": 10
}
}
}
```
### Example
```bash
curl -X GET "https://example.com/api/basic/index.php/datasets/123/query?page=1&limit=50&bbox=-180,-90,180,90" \
-H "Cookie: PHPSESSID=..."
```
## Get Dataset Properties
**Endpoint**: `GET /api/datasets/get_properties.php`
Get all unique property keys from a dataset.
### Parameters
- `id` (required): Dataset ID
### Response
```json
{
"success": true,
"data": ["property1", "property2", "property3"]
}
```
## Get Property Values
**Endpoint**: `GET /api/datasets/get_property_values.php`
Get unique values for a specific property.
### Parameters
- `id` (required): Dataset ID
- `property` (required): Property name
### Response
```json
{
"success": true,
"data": ["value1", "value2", "value3"]
}
```
## Dataset Filters
**Endpoint**: `GET /api/datasets/filters.php`
Get saved filters for a dataset.
### Parameters
- `id` (required): Dataset ID
### Response
```json
{
"success": true,
"data": {
"filters": [
{
"id": 1,
"name": "Filter Name",
"conditions": { ... }
}
]
}
}
```
## Save Dataset Filters
**Endpoint**: `POST /api/datasets/save_filters.php`
Save filter configuration for a dataset.
### Request Body
```json
{
"id": 123,
"filters": [
{
"name": "Filter Name",
"conditions": {
"property": "value",
"operator": "equals"
}
}
]
}
```
### Response
```json
{
"success": true,
"message": "Filters saved successfully"
}
```
## Dataset Legend
**Endpoint**: `GET /api/datasets/legend.php`
Get legend configuration for a dataset.
### Parameters
- `id` (required): Dataset ID
### Response
```json
{
"success": true,
"data": {
"type": "graduated",
"property": "value",
"stops": [
{ "value": 0, "color": "#0000ff" },
{ "value": 100, "color": "#ff0000" }
]
}
}
```
## Save Dataset Legend
**Endpoint**: `POST /api/datasets/save_legend.php`
Save legend configuration for a dataset.
### Request Body
```json
{
"id": 123,
"legend": {
"type": "graduated",
"property": "value",
"stops": [ ... ]
}
}
```
### Response
```json
{
"success": true,
"message": "Legend saved successfully"
}
```
## Update Dataset Name
**Endpoint**: `POST /api/update_dataset_name.php`
Update the display name of a dataset.
### Request Body
```json
{
"id": 123,
"name": "New Dataset Name"
}
```
### Response
```json
{
"success": true,
"message": "Dataset name updated"
}
```
## Background Jobs
Dataset operations that may take time (imports, analysis) are processed as background jobs. See [Jobs API](jobs.md) for job management.
## Related Documentation
- [Analysis Tools](../analysis-tools/index.md)
- [Architecture Overview](../architecture.md)