全部產品
Search
文件中心

PolarDB:ST_ImportOSGB

更新時間:May 31, 2025

將基於Object Storage Service的傾斜攝影專案(OSGB格式)匯入到資料庫中。

文法

boolean ST_ImportOSGB(cstring table_name, cstring url, cstring options default '{}');

參數

參數名稱

描述

table_name

osg表名及其瓦片表首碼。

url

基於Object Storage Service服務的路徑。

說明

為保證資料可訪問性,請確保叢集與OSS所在Region相同,並使用internal地址進行訪問。更多資訊,請參見Object Storage Service服務路徑

options

匯入選項:

  • schema:目標表schema,字串類型,預設為public。

  • parallel:並行度。提高並行度將會加速匯入,但可能消耗大量記憶體,可根據實際的資料或資料庫運行狀態選擇合適的值。建議小於16,小於1將被忽略。整數類型,預設為1。

  • batch_size:SQL執行的批大小。整數類型,取值範圍:1~2147483647,預設為10000。

  • project:專案名。將填充在每一條記錄的project_name欄位,字串類型。

  • srid:指定資料的SRID,整數類型。

  • gateway:是否以gateway模式匯入資料。若選擇gateway模式,資料將以引用的形式儲存在資料庫內,調用時即時從引用地址取得,可以大大減輕資料庫記憶體儲壓力,但可能會造成調用時更緩慢。布爾類型,預設為false。

  • tileset_prefix:產生的3D Tiles地址首碼,若指定可以方便自訂反向 Proxy。字串類型。

描述

將基於Object Storage Service的OSGB檔案匯入到資料庫中。

匯入限制說明:

  • 僅支援OSGB格式的檔案。

  • 指定目錄下需要存在一個名為metadata.xml的檔案,檔案可以位於根目錄或任意子目錄下。

  • 需要匯入完整的OSGB檔案,否則將丟失相關資訊。

  • 當資料量較大,且使用用戶端串連資料庫進行OSGB檔案匯入時,請適當調整用戶端逾時限制,避免因逾時終止而導致的資料匯入失敗。

匯入成功後會在資料庫內產生兩張表:

主表

表名格式:[table_name]

說明:儲存傾斜攝影專案的中繼資料資訊。

表結構:

欄位

類型

說明

project_id

uuid

專案ID,自動產生。

project_name

text

專案名稱。

若使用者不指定project_name,則該列值為空白。

常用於儲存多個子專案的表。

srid

integer

專案使用的空間參考。

預設從metadata.xmlModelMetadata/SRS節點讀取,若在options/srid中指定則會覆蓋讀取值。

ref_point

geometry

專案錨定的三維點位。

預設從metadata.xmlModelMetadata/SSRSOrigin節點讀取,類型為Point3DZ

extent

geometry

整個專案的大致範圍,為PolygonZ類型。

aux

text

中繼資料,值為metadata.xml檔案內容。

tiletable

varchar(64)

對應瓦片表表名。

瓦片表

表名格式:[table_name]_tile

說明:儲存該專案所有的瓦片資料。

表結構:

欄位

類型

說明

project_id

uuid

專案ID,與主表一致。

project_name

text

專案名稱,與主表一致。

uid

uuid

瓦片ID,自動產生。

lod

integer

瓦片LOD層級,通過檔案名稱推斷(形如Tile_L14_0.osgb),若無法推斷,則為0。

precision

float8

估算的瓦片精度,常用於匯出3DTiles。

parent

uuid

該瓦片的父瓦片ID。

若為根節點,則為空白。

children

uuid[]

該瓦片的全部子瓦片的ID。

若無子瓦片,則為空白。

aux

jsonb

該瓦片的中繼資料。

當前為瓦片的相對根目錄的檔案名稱,儲存在file_name節點下。

tile

scene

瓦片實體。

重要

如果並行度不為1,將不支援自動建表,需要您預先手動建立,建表語句如下

# 以在預設schema下建立一個名為test_osgb的表為例
# 建立主表
CREATE TABLE IF NOT EXISTS test_osgb(
    project_id uuid primary key,
    project_name text, 
    srid integer,
    ref_point geometry, 
    extent geometry,
    aux text, 
    tiletable varchar(64) NOT null
);

# 建立瓦片表
CREATE TABLE IF NOT EXISTS test_osgb_tile(
    project_id uuid NOT NULL,
        project_name text, 
        uid uuid NOT NULL,
        lod integer, 
     		precision float8,
        parent uuid, 
     		children uuid[],
        aux jsonb, 
     		tile scene NOT NULL,
        PRIMARY KEY(project_id, uid)
);

樣本

-- 常規匯入
SELECT ST_ImportOSGB('test_osgb', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_oblique_project/');

---------
t

-- 並行匯入
SELECT ST_ImportOSGB('test_osgb', 'OSS://<ak>:<ak_secret>@oss-cn-beijing-internal.aliyuncs.com/mybucket/path_to_oblique_project/', '{"parallel": 4}');

---------
t