Bu konu, nokta bulutu verilerinin ayrıntılarını ve kullanımını açıklar. Nokta bulutu verileri, bir 3B tarayıcı nesneyi taradığında oluşturulan noktalardan oluşur. Her nokta, bir dizi 3B koordinat içerir. Bazı noktalar RGB bilgisi veya yoğunluk içerebilir. Nokta bulutu verileri, karmaşık nitelik boyutlarında sunulan uzamsal koordinatlar ve çok sayıda nokta içerir.
Genel Bakış
GanosBase PointCloud, PostgreSQL için bir eklentidir. PostgreSQL'in nokta bulutu verilerini verimli ve hızlı bir şekilde depolamasına ve yönetmesine olanak tanıyan nokta bulutu verisi sıkıştırma, nokta bulutu verisi açma ve nitelik istatistiği toplama gibi özellikler sağlar. GanosBase PointCloud, nokta bulutu verileri üzerinde uzamsal analiz gerçekleştirmek için GanosBase Geometry ile birlikte çalışabilir.
Nokta bulutu veri türleri
Nokta bulutu veri türleri arasında pcpoint ve pcpatch bulunur. pcpoint veri türü için her nokta bir satır olarak depolanır. Bir noktanın boyutları, nokta bulutu şemasında tanımlanır. pcpatch veri türü için bir dizi nokta küme halinde depolanır. pcpatch veri türündeki nokta bulutu verileri uzamsal sorguları destekler ve depolama kullanımını azaltmak için sıkıştırılabilir. Nokta bulutu şemasındaki sıkıştırma parametresi, nokta bulutu verilerini sıkıştırmak için kullanılan yöntemi belirtir.
Nokta bulutu şemaları
pointcloud_formats tablosu nokta bulutu şemalarını depolar. Her şema, bir nokta bulutu nesnesinin nitelik boyutlarını ve her boyutla ilgili bilgileri içerir. Boyut bilgileri; boyutu, türü, adı ve açıklamayı kapsar.
Başlarken
-
GanosBase PointCloud'u etkinleştirin.
Create extension ganos_pointcloud with schema public cascade; Create extension ganos_pointcloud_geometry with schema public cascade; -
Bir nokta bulutu şeması ekleyin.
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>'); -
Bir nokta bulutu tablosu oluşturun.
-- 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 veri türünde veri ekleyin.
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 veri türünde veri ekleyin.
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] ]} -
Bir pcpatch nesnesindeki tüm nitelik boyutlarının ortalama değerlerini hesaplayın.
SELECT ST_AsText(ST_PatchAvg(pa)) FROM patches WHERE id = 7; ------------------------- null -
GanosBase PointCloud'u devre dışı bırakın.
Drop extension ganos_pointcloud_geometry; Drop extension ganos_pointcloud cascade;
İlgili Konular
Daha fazla bilgi için bkz. Nokta bulutu SQL referansı.