日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

功能同ST_AsMVT,但是相較于ST_AsMVT,基于不同矢量要素之間的關(guān)系,過濾對顯示效果影響較小的矢量要素,從而減小MVT大小,提升可視化效率。過濾的效果由新增參數(shù)scale_factor控制。新增參數(shù) mvt_size_limit,限制一個MVT可以包含的矢量要素上限。

語法

bytea ST_AsMVTEx(anyelement row);
bytea ST_AsMVTEx(anyelement row, int4 scale_factor);
bytea ST_AsMVTEx(anyelement row, int4 scale_factor, int4 mvt_size_limit);
bytea ST_AsMVTEx(anyelement row, int4 scale_factor, int4 mvt_size_limit, text name);
bytea ST_AsMVTEx(anyelement row, int4 scale_factor, int4 mvt_size_limit, text name, int4 extent);
bytea ST_AsMVTEx(anyelement row, int4 scale_factor, int4 mvt_size_limit, text name, int4 extent, text geom_name);
bytea ST_AsMVTEx(anyelement row, int4 scale_factor, int4 mvt_size_limit, text name, int4 extent, text geom_name, text feature_id_name);

返回值

返回一個表示圖層瓦片的二進(jìn)制MVT數(shù)據(jù),瓦片的內(nèi)容是由row集合確定。

參數(shù)

參數(shù)名稱

描述

row

至少包含一個幾何列的行數(shù)據(jù)。

scale_factor

控制過濾效果的參數(shù),參數(shù)值越大,則有越多矢量要素被過濾,生成的MVT越小。

取值范圍:1~extent-1,默認(rèn)值為1。

mvt_size_limit

生成的MVT包含的矢量要素數(shù)目上限。超出上限的矢量要素則會被丟棄。

默認(rèn)值為INTEGER最大值,即2147483647。

name

圖層名稱。默認(rèn)為字符串default

extent

規(guī)范定義的屏幕空間中的切片范圍。默認(rèn)值為4096。

geom_name

行數(shù)據(jù)中幾何列的名稱。默認(rèn)為第一個幾何列。

feature_id_name

行數(shù)據(jù)中功能ID列的名稱。如果為NULL或負(fù)數(shù),則不設(shè)置功能ID。匹配名稱和有效類型(smallint、integer、bigint)的第一列將用作功能ID,任何后續(xù)列將添加為屬性。不支持JSON屬性。

描述

  • 功能同ST_AsMVT,但是通過過濾對顯示效果影響較小的矢量要素來減小MVT的大小,可提升可視化效率,過濾效果由參數(shù)scale_factor決定,scale_factor的取值范圍為1~extent-1,值越大,過濾效果越明顯。

  • 參數(shù)mvt_size_limit限制MVT包含的矢量要素上限。若經(jīng)過上述過濾后,矢量要素的數(shù)目大于mvt_size_limit,則會隨機(jī)選取多余的矢量要素丟棄。

  • 若參數(shù)extent的值非常大,對性能會有影響。

  • 不適合面積普遍很大的面數(shù)據(jù)集。

示例

-- 創(chuàng)建矢量數(shù)據(jù)表,并插入一個面數(shù)據(jù)、一個線數(shù)據(jù)、9998個點(diǎn)數(shù)據(jù)
CREATE TABLE example_table(id integer, geom Geometry);
INSERT INTO example_table(id, geom) VALUES
  (1, ST_MakeEnvelope(150, 75, 170, 80, 4326));
INSERT INTO example_table(id, geom) VALUES
  (2, ST_GeomFromText('LINESTRING(-160 -70, 160 -70)', 4326));
INSERT INTO example_table(id, geom)
SELECT i,
  ST_SetSRID(ST_MakePoint((random() * 20) + 150, (random() * 10) + 70), 4326)
FROM generate_series(3, 10000) i;

-- 使用scale_factor=1
WITH mvtgeom AS
(
      SELECT ST_AsMVTGeom(geom, ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)) FROM example_table
      WHERE geom && ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)
)
SELECT length(ST_AsMVTEx(mvtgeom.*, 1)) FROM mvtgeom;

length
-------
  54237
(1 row)

-- 使用scale_factor=4
WITH mvtgeom AS
(
      SELECT ST_AsMVTGeom(geom, ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)) FROM example_table
      WHERE geom && ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)
)
SELECT length(ST_AsMVTEx(mvtgeom.*, 4)) FROM mvtgeom;

length
-------
  39211
(1 row)

-- 使用scale_factor=4, 限制MVT包含的矢量數(shù)據(jù)數(shù)目上限為100
WITH mvtgeom AS
(
      SELECT ST_AsMVTGeom(geom, ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)) FROM example_table
      WHERE geom && ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)
)
SELECT length(ST_AsMVTEx(mvtgeom.*, 4, 100)) FROM mvtgeom;

length
-------
  1117
(1 row)

-- 使用scale_factor=4, 限制MVT包含的矢量數(shù)據(jù)數(shù)目上限為100,設(shè)置瓦片分辨率為10000*10000,定義圖層名為'layer_name'
WITH mvtgeom AS
(
      SELECT ST_AsMVTGeom(geom, ST_Transform(ST_TileEnvelope(1, 1, 0), 4326), 10000) FROM example_table
      WHERE geom && ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)
)
SELECT length(ST_AsMVTEx(mvtgeom.*, 4, 100, 'layer_name', 10000)) FROM mvtgeom;

length
-------
  1220
(1 row)

-- 使用scale_factor=4, 限制MVT包含的矢量數(shù)據(jù)數(shù)目上限為100,設(shè)置瓦片分辨率為10000*10000,定義圖層名為'layer_name'
-- 手動給出幾何列和ID列的列名分別為'geom_field'和'id_field'
WITH mvtgeom AS
(
      SELECT ST_AsMVTGeom(geom, ST_Transform(ST_TileEnvelope(1, 1, 0), 4326), 10000) AS geom_field, id AS id_field FROM example_table
      WHERE geom && ST_Transform(ST_TileEnvelope(1, 1, 0), 4326)
)
SELECT length(ST_AsMVTEx(mvtgeom.*, 4, 100, 'layer_name', 10000, 'geom_field', 'id_field')) FROM mvtgeom;

length
-------
  1520
(1 row)