このトピックでは、点群データの詳細と使用方法について説明します。 点群データは、3Dスキャナが物体を走査するときに生成される点を含む。 各点は、3D座標のセットを含む。 いくつかの点は、RGB情報または強度を含み得る。 点群データは、空間座標と、複雑な属性次元で提示される多数の点とを含む。
概要
GanosBase PointCloudはPostgreSQLのプラグインです。 点群データの圧縮、点群データの解凍、属性統計の収集などの機能を提供し、PostgreSQLが点群データを効率的かつ迅速に保存および管理できるようにします。 GanosBase PointCloudは、 点群データの空間解析を実行するGanosBaseジオメトリ。
点群データ型
点群データのタイプは、pcpointおよびpcpatchを含む。 pcpointデータ型の場合、各ポイントは行として格納されます。 点のディメンションは、点群スキーマで定義されます。 pcpatchデータ型の場合、多数のポイントがセットとして格納されます。 pcpatchデータ型の点群データは空間クエリをサポートし、ストレージ使用量を減らすために圧縮することができます。 点群スキーマの圧縮パラメータは、点群データを圧縮するために使用される方法を指定する。
点群スキーマ
pointcloud_formatsテーブルは、ポイントクラウドスキーマを格納します。 各スキーマには、点群オブジェクトの属性ディメンションと各ディメンションに関する情報が含まれています。 寸法情報は、サイズ、タイプ、名前、および説明を含む。
入門ガイド
GanosBase PointCloudを有効にします。
Create extension ganos_pointcloud with schema public cascade; Create extension ganos_pointcloud_geometry with schema public cascade;
点群スキーマを挿入します。
INSERT INTO pointcloud_formats (pcid, srid, schema) VALUES (1, 4326, '<?xml version="1.0" encoding="UTF-8"?> <pc:PointCloudSchema xmlns:pc="http://example.org/schemas/PC/1.1" xmlns:xsi="http://www.example.org/2001/XMLSchema-instance"> <pc:dimension> <pc:position>1</pc:position> <pc:size>4</pc:size> <pc:description>X coordinate as a long integer. You must use the scale and offset information of the header to determine the double value.</pc:description> <pc:name>X</pc:name> <pc:interpretation>int32_t</pc:interpretation> <pc:scale>0.01</pc:scale> </pc:dimension> <pc:dimension> <pc:position>2</pc:position> <pc:size>4</pc:size> <pc:description>Y coordinate as a long integer. You must use the scale and offset information of the header to determine the double value.</pc:description> <pc:name>Y</pc:name> <pc:interpretation>int32_t</pc:interpretation> <pc:scale>0.01</pc:scale> </pc:dimension> <pc:dimension> <pc:position>3</pc:position> <pc:size>4</pc:size> <pc:description>Z coordinate as a long integer. You must use the scale and offset information of the header to determine the double value.</pc:description> <pc:name>Z</pc:name> <pc:interpretation>int32_t</pc:interpretation> <pc:scale>0.01</pc:scale> </pc:dimension> <pc:dimension> <pc:position>4</pc:position> <pc:size>2</pc:size> <pc:description>The intensity value is the integer representation of the pulse return magnitude. This value is optional and system specific. However, it should always be included if available.</pc:description> <pc:name>Intensity</pc:name> <pc:interpretation>uint16_t</pc:interpretation> <pc:scale>1</pc:scale> </pc:dimension> <pc:metadata> <Metadata name="compression">dimensional</Metadata> </pc:metadata> </pc:PointCloudSchema>');
点群テーブルを作成します。
-- Use the pcpoint data type. CREATE TABLE points ( id SERIAL PRIMARY KEY, pt PCPOINT(1) ); -- Use the pcpatch data type. CREATE TABLE patches ( id SERIAL PRIMARY KEY, pa PCPATCH(1) );
pcpointデータ型のデータを挿入します。
INSERT INTO points (pt) SELECT ST_MakePoint(1, ARRAY[x,y,z,intensity]) FROM ( SELECT -127+a/100.0 AS x, 45+a/100.0 AS y, 1.0*a AS z, a/10 AS intensity FROM generate_series(1,100) AS a ) AS values; SELECT ST_MakePoint(1, ARRAY[-127, 45, 124.0, 4.0]); ------------------------- 010100000064CEFFFF94110000703000000400 SELECT ST_AsText('010100000064CEFFFF94110000703000000400'::pcpoint); ------------------------- null
pcpatchデータ型のデータを挿入します。
INSERT INTO patches (pa) SELECT ST_Patch(pt) FROM points GROUP BY id/10; SELECT ST_AsText(ST_MakePatch(1, ARRAY[-126.99,45.01,1,0, -126.98,45.02,2,0, -126.97,45.03,3,0])); ------------------------- {"pcid":1,"pts":[ [-126.99,45.01,1,0],[-126.98,45.02,2,0],[-126.97,45.03,3,0] ]}
pcpatchオブジェクト内のすべての属性寸法の平均値を計算します。
SELECT ST_AsText(ST_PatchAvg(pa)) FROM patches WHERE id = 7; ------------------------- null
Disable GanosBase PointCloud。
Drop extension ganos_pointcloud_geometry; Drop extension ganos_pointcloud cascade;
関連ドキュメント
詳細については、「点群 SQL リファレンス」をご参照ください。