Initial GeoIntel V1 foundation
This commit is contained in:
@@ -0,0 +1,109 @@
|
||||
import { apiGet, apiMultipart, apiPost } from './client'
|
||||
import type {
|
||||
DatasetCreateResponse,
|
||||
DatasetListResponse,
|
||||
RasterMetadataResponse,
|
||||
RasterInspectResponse,
|
||||
RasterStatsResponse,
|
||||
RasterPreviewResponse,
|
||||
JobRead,
|
||||
VectorBBoxResponse,
|
||||
VectorStatsResponse,
|
||||
VectorSummary,
|
||||
RasterNdviRequest,
|
||||
RasterNdwiRequest,
|
||||
RasterNdbiRequest,
|
||||
} from '../../types'
|
||||
|
||||
export const datasetsApi = {
|
||||
list: (projectId: string): Promise<DatasetListResponse> =>
|
||||
apiGet<DatasetListResponse>(`/api/v1/projects/${projectId}/datasets`),
|
||||
upload: (
|
||||
projectId: string,
|
||||
payload: {
|
||||
file: File
|
||||
datasetType: string
|
||||
source: string
|
||||
datasetRole: string
|
||||
sourceName?: string
|
||||
referenceLayerName?: string
|
||||
sourceMetadataJson?: string
|
||||
provenanceMetadataJson?: string
|
||||
areaId?: string
|
||||
},
|
||||
): Promise<DatasetCreateResponse> => {
|
||||
const form = new FormData()
|
||||
form.append('file', payload.file)
|
||||
form.append('dataset_type', payload.datasetType)
|
||||
form.append('source', payload.source)
|
||||
form.append('dataset_role', payload.datasetRole)
|
||||
if (payload.sourceName) {
|
||||
form.append('source_name', payload.sourceName)
|
||||
}
|
||||
if (payload.referenceLayerName) {
|
||||
form.append('reference_layer_name', payload.referenceLayerName)
|
||||
}
|
||||
if (payload.sourceMetadataJson) {
|
||||
form.append('source_metadata_json', payload.sourceMetadataJson)
|
||||
}
|
||||
if (payload.provenanceMetadataJson) {
|
||||
form.append('provenance_metadata_json', payload.provenanceMetadataJson)
|
||||
}
|
||||
if (payload.areaId) {
|
||||
form.append('area_id', payload.areaId)
|
||||
}
|
||||
return apiMultipart<DatasetCreateResponse>(`/api/v1/projects/${projectId}/datasets/upload`, form)
|
||||
},
|
||||
refreshMetadata: (projectId: string, datasetId: string): Promise<DatasetCreateResponse> =>
|
||||
apiPost<DatasetCreateResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/metadata/refresh`, {}),
|
||||
inspectRaster: (projectId: string, datasetId: string): Promise<RasterInspectResponse> =>
|
||||
apiGet<RasterInspectResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/inspect`),
|
||||
rasterStats: (projectId: string, datasetId: string): Promise<RasterStatsResponse> =>
|
||||
apiGet<RasterStatsResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/stats`),
|
||||
inspectVector: (projectId: string, datasetId: string): Promise<{ dataset: DatasetCreateResponse; summary: VectorSummary | null; metadata: unknown }> =>
|
||||
apiGet<{ dataset: DatasetCreateResponse; summary: VectorSummary | null; metadata: unknown }>(
|
||||
`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/inspect`,
|
||||
),
|
||||
vectorBbox: (projectId: string, datasetId: string): Promise<VectorBBoxResponse> =>
|
||||
apiGet<VectorBBoxResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/bbox`),
|
||||
vectorSummary: (projectId: string, datasetId: string): Promise<VectorSummary> =>
|
||||
apiGet<VectorSummary>(`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/summary`),
|
||||
vectorStats: (projectId: string, datasetId: string): Promise<VectorStatsResponse> =>
|
||||
apiGet<VectorStatsResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/stats`),
|
||||
vectorClip: (projectId: string, datasetId: string, payload: { area_id: string; output_name?: string }) =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/clip`, payload),
|
||||
vectorBuffer: (projectId: string, datasetId: string, payload: { distance_m: number; dissolve?: boolean; output_name?: string }) =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/buffer`, payload),
|
||||
vectorIntersect: (projectId: string, datasetId: string, payload: { other_dataset_id: string; output_name?: string }) =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/vector/intersect`, payload),
|
||||
rasterMetadata: (projectId: string, datasetId: string): Promise<RasterMetadataResponse> =>
|
||||
apiGet<RasterMetadataResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/metadata`),
|
||||
rasterInspect: (projectId: string, datasetId: string): Promise<RasterInspectResponse> =>
|
||||
apiGet<RasterInspectResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/inspect`),
|
||||
rasterTile: (
|
||||
projectId: string,
|
||||
datasetId: string,
|
||||
payload: { tile_size?: number; overlap?: number; output_name?: string } = {},
|
||||
): Promise<JobRead> =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/tile`, payload),
|
||||
rasterReproject: (
|
||||
projectId: string,
|
||||
datasetId: string,
|
||||
payload: { target_crs: string; resampling?: string; output_name?: string },
|
||||
): Promise<JobRead> => apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/reproject`, payload),
|
||||
rasterNdvi: (projectId: string, datasetId: string, payload: RasterNdviRequest): Promise<JobRead> =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/indices/ndvi`, payload),
|
||||
rasterNdwi: (projectId: string, datasetId: string, payload: RasterNdwiRequest): Promise<JobRead> =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/indices/ndwi`, payload),
|
||||
rasterNdbi: (projectId: string, datasetId: string, payload: RasterNdbiRequest): Promise<JobRead> =>
|
||||
apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/indices/ndbi`, payload),
|
||||
rasterPreview: (projectId: string, datasetId: string): Promise<RasterPreviewResponse> =>
|
||||
apiGet<RasterPreviewResponse>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/preview`),
|
||||
rasterClip: (
|
||||
projectId: string,
|
||||
datasetId: string,
|
||||
payload: { area_id: string; output_name?: string },
|
||||
): Promise<JobRead> => apiPost<JobRead>(`/api/v1/projects/${projectId}/datasets/${datasetId}/raster/clip`, payload),
|
||||
getContent: (projectId: string, datasetId: string): Promise<GeoJSON.FeatureCollection> =>
|
||||
apiGet<GeoJSON.FeatureCollection>(`/api/v1/projects/${projectId}/datasets/${datasetId}/content`),
|
||||
}
|
||||
Reference in New Issue
Block a user