@cereusdb/标准
标准 CereusDB 浏览器包. 里面的东西 @cereusdb/minimal,加上PROJ支持 ST_Transform 和CRS-意识再预测支持.
此软件包包括用于远程 Parquet 读取的浏览器对象商店和S3/GCS/Azure/HTTP提供商.
安装
npm install @cereusdb/standard
公园支持
用 Snappy, Gzip, Brotli, LZ4 或 ZSTD 压缩的 Parquet 文件可以注册.
SQL 函数可用性
当前运行时间表面 :
151运行时间ST_*名称0运行时间RS_*名称
包含函数家族 :
- 一切从
@cereusdb/minimal: 核心SedonaDB函数,geo函数、对地观测分布式上游/操作、关系连接、距离连接,以及ST_KNN。 。 。 . - PROJ 支持的 CRS 转换
ST_Transform。 。 。 .
现有功能的例子:
- 核心预算和
geo数字 :ST_Point, (中文(简体) ),ST_GeomFromWKT, (中文(简体) ),ST_AsText, (中文(简体) ),ST_SRID, (中文(简体) ),ST_Buffer, (中文(简体) ),ST_Distance, (中文(简体) ),ST_DWithin, (中文(简体) ),ST_AsGeoJSON - 乔治:
ST_Contains, (中文(简体) ),ST_Within, (中文(简体) ),ST_Crosses, (中文(简体) ),ST_Touches, (中文(简体) ),ST_Union, (中文(简体) ),ST_Difference, (中文(简体) ),ST_MakeValid, (中文(简体) ),ST_Polygonize - 普罗杰:
ST_Transform
本套件中没有包含 :
- S2 地理内核
- 鼠标
RS_*函数
对象存储支持
浏览器对象存储包含在 @cereusdb/standard启用 registerObjectStores() 要配置 http, (中文(简体) ), s3, (中文(简体) ), gcs,或 azure 提供商,那么 registerParquetTable() 以注册精确的 Parquet 对象或提供者支持的前缀.
持久性数据库(OPFS)
表格通常生活在记忆中。 持久性数据库被存储在浏览器的"起源"(Origin Private File System)中并活下来的页面重载:
const db = await CereusDB.create({ attach: ['opfs://mydb'] }); // opens or creates mydb
await db.sqlJSON(`CREATE TABLE mydb.public.cities AS SELECT 1 AS id, 'Berlin' AS name, ST_Point(13.4, 52.5) AS geom`);
await db.sqlJSON(`INSERT INTO mydb.public.cities VALUES (2, 'Paris', ST_Point(2.35, 48.86))`);
await db.sqlJSON(`USE mydb`); // `cities` now resolves to mydb.public.cities
SQL : (英语) CREATE DATABASE 'opfs://mydb', (中文(简体) ), ATTACH 'opfs://mydb' [AS name], (中文(简体) ), DETACH name, (中文(简体) ), DROP DATABASE name, (中文(简体) ), USE name, (中文(简体) ), ALTER TABLE ... RENAME TO | ADD COLUMN | DROP COLUMN | RENAME COLUMN,以及 SELECT * FROM cereusdb_databases()数据库作为目录出现在 information_schema 财务报告和审定财务报表 db.catalog()。表格中的数据在首次使用时被载入。 见 持久性数据库指南。 。 。 .
GeoParquet 导出
const bytes = await db.exportGeoParquet('mydb.public.cities'); // Uint8Array
await db.downloadGeoParquet('mydb.public.cities'); // downloads cities.parquet
await db.sqlJSON(`COPY (SELECT * FROM cities WHERE id > 1) TO 'some.parquet'`);
见 GeoParquet 导出指南。 。 。 .
装入 WASM 模块
本来是二进制的船作为单独的档案, dist/wasm/cereusdb_bg.wasm。默认条目自动查找,捆绑者将其作为资产放出.
如果你主机是你自己,或者你的捆绑者 将资产注入大 data:application/wasm;base64,... 字符串,使用 external 输入。 它没有内置的 参考和需要 wasmUrl 或者说 wasmSource数字 :
import { CereusDB } from '@cereusdb/standard/external';
const db = await CereusDB.create({ wasmUrl: '/wasm/cereusdb_bg.wasm' });
复制 node_modules/@cereusdb/standard/dist/wasm/cereusdb_bg.wasm 到您的静态资产,或用 Vite 导入其 URL : import wasmUrl from '@cereusdb/standard/wasm?url'见 WASM 装载指南 详细情况.
JS/TS API 联合材料
输出 :
CereusDBCereusDBOptionsObjectStoreRegistryConfigObjectStoreConfigObjectStoreProviderRegisterParquetTableOptionsRasterFormatQueryResultMemoryStorageBackend, (中文(简体) ),OPFSStorageBackend, (中文(简体) ),StorageBackend, (中文(简体) ),StorageOptionsCreateDatabaseOptions, (中文(简体) ),AttachDatabaseOptions, (中文(简体) ),DatabaseListingCatalogDatabase, (中文(简体) ),CatalogSchema, (中文(简体) ),CatalogTable, (中文(简体) ),CatalogColumnCreateTableDefinition, (中文(简体) ),CreateTableOptions, (中文(简体) ),AlterTableOperationGeoParquetExportOptions, (中文(简体) ),DownloadGeoParquetOptions, (中文(简体) ),ExportHandlerdownloadFile, (中文(简体) ),PARQUET_MIME_TYPE
主要类型 :
interface StorageOptions {
opfs?: StorageBackend | false; // default: OPFSStorageBackend when the browser has OPFS
[scheme: string]: StorageBackend | false | undefined;
}
interface StorageBackend {
readFile(path: string): Promise<Uint8Array | null>;
writeFile(path: string, data: Uint8Array): Promise<void>;
remove(path: string): Promise<void>;
list(path: string): Promise<string[]>;
lock?(name: string): Promise<void>;
unlock?(name: string): Promise<void>;
}
type ExportHandler = (filename: string, data: Uint8Array, mimeType: string) => void | Promise<void>;
type CreateTableDefinition = { columns: Record<string, string> } | { as: string };
type AlterTableOperation =
| { renameTo: string }
| { addColumn: { name: string; type: string; notNull?: boolean; default?: string }; ifNotExists?: boolean }
| { dropColumn: string | string[]; ifExists?: boolean }
| { renameColumn: { from: string; to: string } };
interface GeoParquetExportOptions {
compression?: 'zstd' | 'snappy' | 'lz4' | 'gzip' | 'brotli' | 'uncompressed';
rowGroupSize?: number;
}
interface DownloadGeoParquetOptions extends GeoParquetExportOptions {
filename?: string;
}
type RasterFormat = 'geotiff' | 'tiff';
type ObjectStoreProvider = 'http' | 's3' | 'gcs' | 'azure';
interface CereusDBOptions {
wasmUrl?: string;
wasmSource?:
| RequestInfo
| URL
| Response
| BufferSource
| WebAssembly.Module
| Promise<Response>;
objectStores?: ObjectStoreRegistryConfig;
storage?: StorageOptions;
attach?: string[];
onExport?: ExportHandler | false;
}
interface ObjectStoreRegistryConfig {
maxConcurrency?: number;
stores: ObjectStoreConfig[];
}
interface ObjectStoreConfig {
name?: string;
provider: ObjectStoreProvider;
url: string;
options?: Record<string, string | number | boolean>;
}
interface RegisterParquetTableOptions {
fileExtension?: string;
targetPartitions?: number;
}
主 API :
class CereusDB {
static create(options?: CereusDBOptions): Promise<CereusDB>;
sql(query: string): Promise<Uint8Array>;
sqlJSON(query: string): Promise<Record<string, unknown>[]>;
registerRemoteParquet(name: string, url: string): Promise<void>;
registerObjectStores(config: ObjectStoreRegistryConfig): void;
registerParquetTable(
name: string,
url: string,
options?: RegisterParquetTableOptions,
): Promise<void>;
registerFile(name: string, file: File): Promise<void>;
registerGeoJSON(name: string, geojson: string | object): void;
registerRaster(name: string, data: BufferSource, format: RasterFormat): void;
registerGeoTIFF(name: string, data: BufferSource): void;
dropTable(name: string): Promise<void>;
catalog(): Promise<CatalogDatabase[]>;
createDatabase(location: string, options?: CreateDatabaseOptions): Promise<string>;
attachDatabase(location: string, options?: AttachDatabaseOptions): Promise<string>;
detachDatabase(name: string, options?: { ifExists?: boolean }): Promise<void>;
dropDatabase(nameOrLocation: string, options?: { ifExists?: boolean }): Promise<void>;
useDatabase(database: string, schema?: string): Promise<void>;
listDatabases(): Promise<DatabaseListing[]>;
createTable(name: string, definition: CreateTableDefinition, options?: CreateTableOptions): Promise<void>;
alterTable(name: string, operation: AlterTableOperation): Promise<void>;
insertArrow(table: string, data: BufferSource): Promise<number>;
compactDatabase(name: string): Promise<void>;
flush(): Promise<void>;
exportGeoParquet(queryOrTable: string, options?: GeoParquetExportOptions): Promise<Uint8Array>;
downloadGeoParquet(queryOrTable: string, options?: DownloadGeoParquetOptions): Promise<string>;
tables(options?: { qualified?: boolean }): string[];
version(): string;
}
API 注释 :
sql()返回箭头 IPC 字节为Uint8Array。 。 。 .sqlJSON()返回已解析的 JSON 行.registerFile()支持.parquet, (中文(简体) ),.geoparquet, (中文(简体) ),.geojson,以及.json本包中.registerObjectStores()财务报告和审定财务报表registerParquetTable()支持浏览器后置范围 Parquet 读取http, (中文(简体) ),s3, (中文(简体) ),gcs,以及azure供养者.- S3 临时全权证书的使用
access_key_id, (中文(简体) ),secret_access_key,以及token时token是STS吗SessionToken。 。 。 . - S3相容端点可以配置为
endpoint; 使用allow_http: true用于本地的 HTTP 端点,例如 MinIO 或 LocalStack . registerRaster()财务报告和审定财务报表registerGeoTIFF()属于共享包装,但光栅注册要求@cereusdb/full。 。 。 .- 持续数据库
createDatabase()和相关的方法),ALTER TABLE, (中文(简体) ),insertArrow(), (中文(简体) ),catalog()和 GeoParquet 导出于每个软件包. downloadGeoParquet()财务报告和审定财务报表COPY ... TO将文件传递到onExport处理器:主线程默认的浏览器下载;在Web Workers或Node.js中通过自己的处理器.
示例
import { CereusDB } from '@cereusdb/standard';
const db = await CereusDB.create();
const rows = await db.sqlJSON(`
SELECT ST_AsText(
ST_Transform(
ST_GeomFromWKT('POINT(13.4 52.5)'),
'EPSG:4326',
'EPSG:3857'
)
) AS geom
`);
console.log(rows);