deploy: 473701fb056a040a3cf07c95c01a89e16c61b4ab

This commit is contained in:
pblottiere 2025-07-19 21:15:45 +00:00
parent b346b1b64c
commit 4ab20ad995
20 changed files with 1347 additions and 720 deletions

View File

@ -9,7 +9,7 @@ data volumes, PostgreSQL Pointcloud allows schemas to declare their preferred
compression method in the ``<pc:metadata>`` block of the schema document. In
the example schema, we declared our compression as follows:
.. code-block:: sql
.. code-block:: xml
<pc:metadata>
<Metadata name="compression">dimensional</Metadata>
@ -35,7 +35,7 @@ Dimensional compression first flips the patch representation from a list of N
points containing M dimension values to a list of M dimensions each containing
N values.
.. code-block:: sql
.. code-block:: json
{"pcid":1,"pts":[
[-126.99,45.01,1,0],[-126.98,45.02,2,0],[-126.97,45.03,3,0],
@ -44,7 +44,7 @@ N values.
Becomes, notionally:
.. code-block:: sql
.. code-block:: json
{"pcid":1,"dims":[
[-126.99,-126.98,-126.97,-126.96,-126.95,-126.94],

View File

@ -7,7 +7,9 @@ Functions
.. toctree::
:maxdepth: 2
schema
points
patchs
wkb
postgis
utils

View File

@ -4,72 +4,13 @@
PcPatch
********************************************************************************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Patch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Patch(pts pcpoint[]) returns pcpatch:
Aggregate function that collects a result set of pcpoint values into a pcpatch.
.. code-block::
INSERT INTO patches (pa)
SELECT PC_Patch(pt) FROM points GROUP BY id/10;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_MakePatch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_MakePatch(pcid integer, vals float8[]) returns pcpatch:
Given a valid pcid schema number and an array of doubles that matches the
schema, construct a new pcpatch. Array size must be a multiple of the number of
dimensions.
.. code-block::
SELECT PC_AsText(PC_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]
]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_NumPoints
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_NumPoints(p pcpatch) returns integer:
Return the number of points in this patch.
.. code-block::
SELECT PC_NumPoints(pa) FROM patches LIMIT 1;
9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PCId
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PCId(p pcpatch) returns integer:
Return the pcid schema number of points in this patch.
.. code-block::
SELECT PC_PCId(pa) FROM patches LIMIT 1;
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_AsText
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_AsText(p pcpatch) returns text:
Return a JSON version of the data in that patch.
Returns a JSON version of the data in that patch.
.. code-block::
@ -82,72 +23,23 @@ Return a JSON version of the data in that patch.
]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Summary
PC_Compress
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Summary(p pcpatch) returns text (from 1.1.0):
:PC_Compress(p pcpatch,global_compression_scheme text,compression_config text) returns pcpatch:
Return a JSON formatted summary of the data in that point.
Compress a patch with a manually specified scheme. The compression_config
semantic depends on the global compression scheme. Allowed global compression
schemes are:
.. code-block::
- auto: determined by pcid
- laz: no compression config supported
- dimensional: configuration is a comma-separated list of per-dimension compressions from this list
SELECT PC_Summary(pa) FROM patches LIMIT 1;
{"pcid":1, "npts":9, "srid":4326, "compr":"dimensional","dims":[{"pos":0,"name":"X","size":4,"type":"int32_t","compr":"sigbits","stats":{"min":-126.99,"max":-126.91,"avg":-126.95}},{"pos":1,"name":"Y","size":4,"type":"int32_t","compr":"sigbits","stats":{"min":45.01,"max":45.09,"avg":45.05}},{"pos":2,"name":"Z","size":4,"type":"int32_t","compr":"sigbits","stats":{"min":1,"max":9,"avg":5}},{"pos":3,"name":"Intensity","size":2,"type":"uint16_t","compr":"rle","stats":{"min":0,"max":0,"avg":0}}]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Uncompress
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Uncompress(p pcpatch) returns pcpatch:
Returns an uncompressed version of the patch (compression type ``none``). In
order to return an uncompressed patch on the wire, this must be the outer
function with return type pcpatch in your SQL query. All other functions that
return pcpatch will compress output to the schema-specified compression before
returning.
.. code-block::
SELECT PC_Uncompress(pa) FROM patches
WHERE PC_NumPoints(pa) = 1;
01010000000000000001000000C8CEFFFFF8110000102700000A00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Union
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Union(p pcpatch[]) returns pcpatch:
Aggregate function merges a result set of pcpatch entries into a single pcpatch.
.. code-block::
-- Compare npoints(sum(patches)) to sum(npoints(patches))
SELECT PC_NumPoints(PC_Union(pa)) FROM patches;
SELECT Sum(PC_NumPoints(pa)) FROM patches;
100
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Intersects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Intersects(p1 pcpatch, p2 pcpatch) returns boolean:
Returns true if the bounds of p1 intersect the bounds of p2.
.. code-block::
-- Patch should intersect itself
SELECT PC_Intersects(
'01010000000000000001000000C8CEFFFFF8110000102700000A00'::pcpatch,
'01010000000000000001000000C8CEFFFFF8110000102700000A00'::pcpatch);
t
- auto: determined automatically from values stats
- zlib: deflate compression
- sigbits: significant bits removal
- rle: run-length encoding
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Explode
@ -176,33 +68,148 @@ each point in the patch.
{"pcid":1,"pt":[-126.42,45.58,58,5]} | 7
{"pcid":1,"pt":[-126.41,45.59,59,5]} | 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PatchMin
PC_FilterBetween
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PatchMin(p pcpatch, dimname text) returns numeric:
:PC_FilterBetween(p pcpatch, dimname text, float8 value1, float8 value2) returns pcpatch:
Reads the values of the requested dimension for all points in the patch and
returns the minimum of those values. Dimension name must exist in the schema.
Returns a patch with only points whose values are between (excluding) the
supplied values for the requested dimension.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterEquals
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_FilterEquals(p pcpatch, dimname text, float8 value) returns pcpatch:
Returns a patch with only points whose values are the same as the supplied
values for the requested dimension.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterGreaterThan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_FilterGreaterThan(p pcpatch, dimname text, float8 value) returns pcpatch:
Returns a patch with only points whose values are greater than the supplied
value for the requested dimension.
.. code-block::
SELECT PC_PatchMin(pa, 'y')
SELECT PC_AsText(PC_FilterGreaterThan(pa, 'y', 45.57))
FROM patches WHERE id = 7;
45.5
{"pcid":1,"pts":[[-126.42,45.58,58,5],[-126.41,45.59,59,5]]}
:PC_PatchMin(p pcpatch) returns pcpoint:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterLessThan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Returns a PcPoint with the minimum values of each dimension in the patch.
:PC_FilterLessThan(p pcpatch, dimname text, float8 value) returns pcpatch:
Returns a patch with only points whose values are less than the supplied value
for the requested dimension.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Intersects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Intersects(p1 pcpatch, p2 pcpatch) returns boolean:
Returns true if the bounds of p1 intersect the bounds of p2.
.. code-block::
SELECT PC_PatchMin(pa)
FROM patches WHERE id = 7;
-- Patch should intersect itself
SELECT PC_Intersects(
'01010000000000000001000000C8CEFFFFF8110000102700000A00'::pcpatch,
'01010000000000000001000000C8CEFFFFF8110000102700000A00'::pcpatch);
{"pcid":1,"pt":[-126.5,45.5,50,5]}
t
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_IsSorted
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_IsSorted(p pcpatch, dimnames text[], strict boolean default true) returns boolean:
Checks whether a pcpatch is sorted lexicographically along the given
dimensions. The ``strict`` option further checks that the ordering is strict
(no duplicates).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_MakePatch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_MakePatch(pcid integer, vals float8[]) returns pcpatch:
Given a valid pcid schema number and an array of doubles that matches the
schema, construct a new pcpatch. Array size must be a multiple of the number of
dimensions.
.. code-block::
SELECT PC_AsText(PC_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]
]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_MemSize
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_MemSize(p pcpatch) returns int4:
Returns the memory size of a pcpatch.
.. code-block::
SELECT PC_MemSize(PC_Patch(PC_MakePoint(1, ARRAY[-127, 45, 124.0, 4.0])));
161
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_NumPoints
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_NumPoints(p pcpatch) returns integer:
Returns the number of points in this patch.
.. code-block::
SELECT PC_NumPoints(pa) FROM patches LIMIT 1;
9
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PCId
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PCId(p pcpatch) returns integer:
Returns the pcid schema number of points in this patch.
.. code-block::
SELECT PC_PCId(pa) FROM patches LIMIT 1;
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Patch
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Patch(pts pcpoint[]) returns pcpatch:
Aggregate function that collects a result set of pcpoint values into a pcpatch.
.. code-block::
INSERT INTO patches (pa)
SELECT PC_Patch(pt) FROM points GROUP BY id/10;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PatchAvg
@ -259,66 +266,31 @@ Returns a PcPoint with the maximum values of each dimension in the patch.
{"pcid":1,"pt":[-126.41,45.59,59,5]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterGreaterThan
PC_PatchMin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_FilterGreaterThan(p pcpatch, dimname text, float8 value) returns pcpatch:
:PC_PatchMin(p pcpatch, dimname text) returns numeric:
Returns a patch with only points whose values are greater than the supplied
value for the requested dimension.
Reads the values of the requested dimension for all points in the patch and
returns the minimum of those values. Dimension name must exist in the schema.
.. code-block::
SELECT PC_AsText(PC_FilterGreaterThan(pa, 'y', 45.57))
SELECT PC_PatchMin(pa, 'y')
FROM patches WHERE id = 7;
{"pcid":1,"pts":[[-126.42,45.58,58,5],[-126.41,45.59,59,5]]}
45.5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterLessThan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PatchMin(p pcpatch) returns pcpoint:
:PC_FilterLessThan(p pcpatch, dimname text, float8 value) returns pcpatch:
Returns a PcPoint with the minimum values of each dimension in the patch.
Returns a patch with only points whose values are less than the supplied value
for the requested dimension.
.. code-block::
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterBetween
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SELECT PC_PatchMin(pa)
FROM patches WHERE id = 7;
:PC_FilterBetween(p pcpatch, dimname text, float8 value1, float8 value2) returns pcpatch:
Returns a patch with only points whose values are between (excluding) the
supplied values for the requested dimension.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterEquals
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_FilterEquals(p pcpatch, dimname text, float8 value) returns pcpatch:
Returns a patch with only points whose values are the same as the supplied
values for the requested dimension.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Compress
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Compress(p pcpatch,global_compression_scheme text,compression_config text) returns pcpatch:
Compress a patch with a manually specified scheme. The compression_config
semantic depends on the global compression scheme. Allowed global compression
schemes are:
- auto: determined by pcid
- laz: no compression config supported
- dimensional: configuration is a comma-separated list of per-dimension compressions from this list
- auto: determined automatically from values stats
- zlib: deflate compression
- sigbits: significant bits removal
- rle: run-length encoding
{"pcid":1,"pt":[-126.5,45.5,50,5]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PointN
@ -329,25 +301,6 @@ PC_PointN
Returns the n-th point of the patch with 1-based indexing. Negative n counts
point from the end.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_IsSorted
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_IsSorted(p pcpatch, dimnames text[], strict boolean default true) returns boolean:
Checks whether a pcpatch is sorted lexicographically along the given
dimensions. The ``strict`` option further checks that the ordering is strict
(no duplicates).
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Sort
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Sort(p pcpatch, dimnames text[]) returns pcpatch:
Returns a copy of the input patch lexicographically sorted along the given
dimensions.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Range
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -369,6 +322,29 @@ For dimensions that are in the "new" schema but not in the "old" schema the
value ``def`` is set in the points of the output patch. ``def`` is optional,
its default value is ``0.0``.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Sort
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Sort(p pcpatch, dimnames text[]) returns pcpatch:
Returns a copy of the input patch lexicographically sorted along the given
dimensions.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Summary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Summary(p pcpatch) returns text (from 1.1.0):
Returns a JSON formatted summary of the data in that point.
.. code-block::
SELECT PC_Summary(pa) FROM patches LIMIT 1;
{"pcid":1, "npts":9, "srid":4326, "compr":"dimensional","dims":[{"pos":0,"name":"X","size":4,"type":"int32_t","compr":"sigbits","stats":{"min":-126.99,"max":-126.91,"avg":-126.95}},{"pos":1,"name":"Y","size":4,"type":"int32_t","compr":"sigbits","stats":{"min":45.01,"max":45.09,"avg":45.05}},{"pos":2,"name":"Z","size":4,"type":"int32_t","compr":"sigbits","stats":{"min":1,"max":9,"avg":5}},{"pos":3,"name":"Intensity","size":2,"type":"uint16_t","compr":"rle","stats":{"min":0,"max":0,"avg":0}}]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Transform
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -387,15 +363,37 @@ data if dimension interpretations, scales or offsets are different in the new
schema.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_MemSize
PC_Uncompress
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_MemSize(p pcpatch) returns int4:
:PC_Uncompress(p pcpatch) returns pcpatch:
Return the memory size of a pcpatch.
Returns an uncompressed version of the patch (compression type ``none``). In
order to return an uncompressed patch on the wire, this must be the outer
function with return type pcpatch in your SQL query. All other functions that
return pcpatch will compress output to the schema-specified compression before
returning.
.. code-block::
SELECT PC_MemSize(PC_Patch(PC_MakePoint(1, ARRAY[-127, 45, 124.0, 4.0])));
SELECT PC_Uncompress(pa) FROM patches
WHERE PC_NumPoints(pa) = 1;
161
01010000000000000001000000C8CEFFFFF8110000102700000A00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Union
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Union(p pcpatch[]) returns pcpatch:
Aggregate function merges a result set of pcpatch entries into a single pcpatch.
.. code-block::
-- Compare npoints(sum(patches)) to sum(npoints(patches))
SELECT PC_NumPoints(PC_Union(pa)) FROM patches;
SELECT Sum(PC_NumPoints(pa)) FROM patches;
100

View File

@ -4,6 +4,45 @@
PcPoint
********************************************************************************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_AsText
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_AsText(p pcpoint) returns text:
Returns a JSON version of the data in that point.
.. code-block::
SELECT PC_AsText('010100000064CEFFFF94110000703000000400'::pcpoint);
{"pcid":1,"pt":[-127,45,124,4]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Get
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Get(pt pcpoint) returns float8[]:
Returns values of all dimensions in an array.
.. code-block::
SELECT PC_Get('010100000064CEFFFF94110000703000000400'::pcpoint);
{-127,45,124,4}
:PC_Get(pt pcpoint, dimname text) returns numeric:
Returns the numeric value of the named dimension. The dimension name must exist
in the schema.
.. code-block::
SELECT PC_Get('010100000064CEFFFF94110000703000000400'::pcpoint, 'Intensity');
4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_MakePoint
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -35,19 +74,18 @@ Insert some test values into the points table:
) AS values;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_AsText
PC_MemSize
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_AsText(p pcpoint) returns text:
:PC_MemSize(pt pcpoint) returns int4:
Return a JSON version of the data in that point.
Returns the memory size of a pcpoint.
.. code-block::
SELECT PC_AsText('010100000064CEFFFF94110000703000000400'::pcpoint);
{"pcid":1,"pt":[-127,45,124,4]}
SELECT PC_MemSize(PC_MakePoint(1, ARRAY[-127, 45, 124.0, 4.0]));
25
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PCId
@ -55,49 +93,10 @@ PC_PCId
:PC_PCId(p pcpoint) returns integer (from 1.1.0):
Return the pcid schema number of this point.
Returns the pcid schema number of this point.
.. code-block::
SELECT PC_PCId('010100000064CEFFFF94110000703000000400'::pcpoint);
1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Get
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Get(pt pcpoint) returns float8[]:
Return values of all dimensions in an array.
.. code-block::
SELECT PC_Get('010100000064CEFFFF94110000703000000400'::pcpoint);
{-127,45,124,4}
:PC_Get(pt pcpoint, dimname text) returns numeric:
Return the numeric value of the named dimension. The dimension name must exist
in the schema.
.. code-block::
SELECT PC_Get('010100000064CEFFFF94110000703000000400'::pcpoint, 'Intensity');
4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_MemSize
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_MemSize(pt pcpoint) returns int4:
Return the memory size of a pcpoint.
.. code-block::
SELECT PC_MemSize(PC_MakePoint(1, ARRAY[-127, 45, 124.0, 4.0]));
25

View File

@ -1,4 +1,4 @@
.. _points:
.. _postgis:
********************************************************************************
PostGIS
@ -16,46 +16,6 @@ Geometry and doing spatial filtering on point cloud data. The
CREATE EXTENSION pointcloud;
CREATE EXTENSION pointcloud_postgis;
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Intersects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Intersects(p pcpatch, g geometry) returns boolean:
:PC_Intersects(g geometry, p pcpatch) returns boolean:
Returns true if the bounds of the patch intersect the geometry.
.. code-block::
SELECT PC_Intersects('SRID=4326;POINT(-126.451 45.552)'::geometry, pa)
FROM patches WHERE id = 7;
t
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Intersection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Intersection(pcpatch, geometry) returns pcpatch:
Returns a PcPatch which only contains points that intersected the geometry.
.. code-block::
SELECT PC_AsText(PC_Explode(PC_Intersection(
pa,
'SRID=4326;POLYGON((-126.451 45.552, -126.42 47.55, -126.40 45.552, -126.451 45.552))'::geometry
)))
FROM patches WHERE id = 7;
pc_astext
--------------------------------------
{"pcid":1,"pt":[-126.44,45.56,56,5]}
{"pcid":1,"pt":[-126.43,45.57,57,5]}
{"pcid":1,"pt":[-126.42,45.58,58,5]}
{"pcid":1,"pt":[-126.41,45.59,59,5]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Geometry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -73,28 +33,6 @@ Casts ``PcPoint`` to the PostGIS geometry equivalent, placing the x/y/z/m of the
POINT Z (-127 45 124)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_EnvelopeGeometry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_EnvelopeGeometry(pcpatch) returns geometry:
Returns the 2D bounds of the patch as a PostGIS Polygon 2D. Useful for
performing 2D intersection tests with PostGIS geometries.
.. code-block::
SELECT ST_AsText(PC_EnvelopeGeometry(pa)) FROM patches LIMIT 1;
POLYGON((-126.99 45.01,-126.99 45.09,-126.91 45.09,-126.91 45.01,-126.99 45.01))
For example, this is how one may want to create an index:
.. code-block::
CREATE INDEX ON patches USING GIST(PC_EnvelopeGeometry(patch));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_BoundingDiagonalGeometry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -128,3 +66,64 @@ For example, this is how one may want to create an index:
.. code-block::
CREATE INDEX ON patches USING GIST(PC_BoundingDiagonalGeometry(patch) gist_geometry_ops_nd);
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_EnvelopeGeometry
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_EnvelopeGeometry(pcpatch) returns geometry:
Returns the 2D bounds of the patch as a PostGIS Polygon 2D. Useful for
performing 2D intersection tests with PostGIS geometries.
.. code-block::
SELECT ST_AsText(PC_EnvelopeGeometry(pa)) FROM patches LIMIT 1;
POLYGON((-126.99 45.01,-126.99 45.09,-126.91 45.09,-126.91 45.01,-126.99 45.01))
For example, this is how one may want to create an index:
.. code-block::
CREATE INDEX ON patches USING GIST(PC_EnvelopeGeometry(patch));
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Intersection
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Intersection(pcpatch, geometry) returns pcpatch:
Returns a PcPatch which only contains points that intersected the geometry.
.. code-block::
SELECT PC_AsText(PC_Explode(PC_Intersection(
pa,
'SRID=4326;POLYGON((-126.451 45.552, -126.42 47.55, -126.40 45.552, -126.451 45.552))'::geometry
)))
FROM patches WHERE id = 7;
pc_astext
--------------------------------------
{"pcid":1,"pt":[-126.44,45.56,56,5]}
{"pcid":1,"pt":[-126.43,45.57,57,5]}
{"pcid":1,"pt":[-126.42,45.58,58,5]}
{"pcid":1,"pt":[-126.41,45.59,59,5]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Intersects
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Intersects(p pcpatch, g geometry) returns boolean:
:PC_Intersects(g geometry, p pcpatch) returns boolean:
Returns true if the bounds of the patch intersect the geometry.
.. code-block::
SELECT PC_Intersects('SRID=4326;POINT(-126.451 45.552)'::geometry, pa)
FROM patches WHERE id = 7;
t

View File

@ -0,0 +1,33 @@
.. _schema:
********************************************************************************
Schema
********************************************************************************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_SchemaGetNDims
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_SchemaGetNDims(pcid integer) returns integer:
Return the number of dimensions in the corresponding schema.
.. code-block::
SELECT PC_SchemaGetNDims(1);
18
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_SchemaIsValid
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_SchemaIsValid(xml text) returns boolean:
Return `true` if the pointcloud schema is valid.
.. code-block::
SELECT PC_SchemaIsValid(schema) FROM pointcloud_formats LIMIT 1;
t

View File

@ -0,0 +1,120 @@
.. _utils:
********************************************************************************
Utils
********************************************************************************
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Full_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Full_Version() returns text:
Return a composite version string summarizing pointcloud system components.
Includes library, SQL, libxml2, PostgreSQL interface versions, and LAZperf
support flag. Useful for debugging or verifying runtime compatibility of the
pointcloud extension.
.. code-block::
SELECT PC_Full_Version();
POINTCLOUD="1.2.5 2346cc2" PGSQL="170" LIBXML2="2.14.3 LAZPERF enabled=false
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Lazperf_Enabled
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Lazperf_Enabled() returns boolean:
Return `true` if the pointcloud extension includes LAZperf compression support.
.. code-block::
SELECT PC_Lazperf_Enabled();
t
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_LibXML2_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_LibXML2_Version() returns text:
Return the `libxml2` version number.
.. code-block::
SELECT PC_LibXML2_Version();
2.14.3
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Lib_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Lib_Version() returns text:
Return the library version number.
.. code-block::
SELECT PC_Lib_Version();
1.2.5 2346cc2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PGSQL_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PGSQL_Version() returns text:
Return the `pgsql` version number.
.. code-block::
SELECT PC_PGSQL_Version();
170
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PostGIS_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PostGIS_Version() returns text:
Return the PostGIS extension version number.
.. code-block::
SELECT PC_PostGIS_Version();
1.2.5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Script_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Script_Version() returns text:
Return the script version number.
.. code-block::
SELECT PC_Script_Version();
1.2.5
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_Version
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_Version() returns text:
Return the extension version number.
.. code-block::
SELECT PC_Version();
1.2.5

View File

@ -1,4 +1,4 @@
.. _points:
.. _wkb:
********************************************************************************
WKB
@ -18,6 +18,20 @@ Return the OGC "well-known binary" format for the point.
\x01010000800000000000c05fc000000000008046400000000000005f40
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_BoundingDiagonalAsBinary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_BoundingDiagonalAsBinary(p pcpatch) returns bytea:
Return the OGC "well-known binary" format for the bounding diagonal of the
patch.
.. code-block::
SELECT PC_BoundingDiagonalAsBinary( PC_Patch(ARRAY[ PC_MakePoint(1, ARRAY[0.,0.,0.,10.]), PC_MakePoint(1, ARRAY[1.,1.,1.,10.]), PC_MakePoint(1, ARRAY[10.,10.,10.,10.])]));
\x01020000a0e610000002000000000000000000000000000000000000000000000000000000000000000000244000000000000024400000000000002440
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_EnvelopeAsBinary
@ -40,18 +54,3 @@ Useful for performing 2D intersection tests with geometries.
``PC_Envelope`` is an alias to ``PC_EnvelopeAsBinary``. But ``PC_Envelope`` is
deprecated and will be removed in a future version (2.0) of the extension.
``PC_EnvelopeAsBinary`` is to be used instead.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_BoundingDiagonalAsBinary
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_BoundingDiagonalAsBinary(p pcpatch) returns bytea:
Return the OGC "well-known binary" format for the bounding diagonal of the
patch.
.. code-block::
SELECT PC_BoundingDiagonalAsBinary( PC_Patch(ARRAY[ PC_MakePoint(1, ARRAY[0.,0.,0.,10.]), PC_MakePoint(1, ARRAY[1.,1.,1.,10.]), PC_MakePoint(1, ARRAY[10.,10.,10.,10.])]));
\x01020000a0e610000002000000000000000000000000000000000000000000000000000000000000000000244000000000000024400000000000002440

View File

@ -111,9 +111,9 @@
data volumes, PostgreSQL Pointcloud allows schemas to declare their preferred
compression method in the <code class="docutils literal notranslate"><span class="pre">&lt;pc:metadata&gt;</span></code> block of the schema document. In
the example schema, we declared our compression as follows:</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="o">&lt;</span><span class="n">pc</span><span class="p">:</span><span class="n">metadata</span><span class="o">&gt;</span>
<span class="w"> </span><span class="o">&lt;</span><span class="n">Metadata</span><span class="w"> </span><span class="n">name</span><span class="o">=</span><span class="ss">&quot;compression&quot;</span><span class="o">&gt;</span><span class="n">dimensional</span><span class="o">&lt;/</span><span class="n">Metadata</span><span class="o">&gt;</span>
<span class="o">&lt;/</span><span class="n">pc</span><span class="p">:</span><span class="n">metadata</span><span class="o">&gt;</span>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="nt">&lt;pc:metadata&gt;</span>
<span class="w"> </span><span class="nt">&lt;Metadata</span><span class="w"> </span><span class="na">name=</span><span class="s">&quot;compression&quot;</span><span class="nt">&gt;</span>dimensional<span class="nt">&lt;/Metadata&gt;</span>
<span class="nt">&lt;/pc:metadata&gt;</span>
</pre></div>
</div>
<p>There are currently three supported compressions:</p>
@ -133,19 +133,19 @@ use of the LAZ compression. If no compression is declared in
<p>Dimensional compression first flips the patch representation from a list of N
points containing M dimension values to a list of M dimensions each containing
N values.</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="err">{</span><span class="ss">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;pts&quot;</span><span class="p">:[</span>
<span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">99</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">01</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">98</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">02</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">97</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">03</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span>
<span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">96</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">04</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">95</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">05</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">94</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">06</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="w"> </span><span class="p">]</span><span class="err">}</span>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="nt">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="nt">&quot;pts&quot;</span><span class="p">:[</span>
<span class="w"> </span><span class="p">[</span><span class="mf">-126.99</span><span class="p">,</span><span class="mf">45.01</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mf">-126.98</span><span class="p">,</span><span class="mf">45.02</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mf">-126.97</span><span class="p">,</span><span class="mf">45.03</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">],</span>
<span class="w"> </span><span class="p">[</span><span class="mf">-126.96</span><span class="p">,</span><span class="mf">45.04</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mf">-126.95</span><span class="p">,</span><span class="mf">45.05</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="mf">-126.94</span><span class="p">,</span><span class="mf">45.06</span><span class="p">,</span><span class="mi">6</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="w"> </span><span class="p">]}</span>
</pre></div>
</div>
<p>Becomes, notionally:</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="err">{</span><span class="ss">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot;dims&quot;</span><span class="p">:[</span>
<span class="w"> </span><span class="p">[</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">99</span><span class="p">,</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">98</span><span class="p">,</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">97</span><span class="p">,</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">96</span><span class="p">,</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">95</span><span class="p">,</span><span class="o">-</span><span class="mi">126</span><span class="p">.</span><span class="mi">94</span><span class="p">],</span>
<span class="w"> </span><span class="p">[</span><span class="mi">45</span><span class="p">.</span><span class="mi">01</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">02</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">03</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">04</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">05</span><span class="p">,</span><span class="mi">45</span><span class="p">.</span><span class="mi">06</span><span class="p">],</span>
<div class="highlight-json notranslate"><div class="highlight"><pre><span></span><span class="p">{</span><span class="nt">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="nt">&quot;dims&quot;</span><span class="p">:[</span>
<span class="w"> </span><span class="p">[</span><span class="mf">-126.99</span><span class="p">,</span><span class="mf">-126.98</span><span class="p">,</span><span class="mf">-126.97</span><span class="p">,</span><span class="mf">-126.96</span><span class="p">,</span><span class="mf">-126.95</span><span class="p">,</span><span class="mf">-126.94</span><span class="p">],</span>
<span class="w"> </span><span class="p">[</span><span class="mf">45.01</span><span class="p">,</span><span class="mf">45.02</span><span class="p">,</span><span class="mf">45.03</span><span class="p">,</span><span class="mf">45.04</span><span class="p">,</span><span class="mf">45.05</span><span class="p">,</span><span class="mf">45.06</span><span class="p">],</span>
<span class="w"> </span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">4</span><span class="p">,</span><span class="mi">5</span><span class="p">,</span><span class="mi">6</span><span class="p">],</span>
<span class="w"> </span><span class="p">[</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="w"> </span><span class="p">]</span><span class="err">}</span>
<span class="w"> </span><span class="p">]}</span>
</pre></div>
</div>
<p>The potential benefit for compression is that each dimension has quite

View File

@ -21,7 +21,7 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="PcPoint" href="points.html" />
<link rel="next" title="Schema" href="schema.html" />
<link rel="prev" title="Getting Started" href="../quickstart.html" />
</head>
@ -55,10 +55,12 @@
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="schema.html">Schema</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html">PcPoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html">PcPatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html">WKB</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html">PostGIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
</ul>
</li>
</ul>
@ -104,54 +106,70 @@
<span id="id1"></span><h1>Functions<a class="headerlink" href="#functions" title="Link to this heading"></a></h1>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="schema.html">Schema</a><ul>
<li class="toctree-l2"><a class="reference internal" href="schema.html#pc-schemagetndims">PC_SchemaGetNDims</a></li>
<li class="toctree-l2"><a class="reference internal" href="schema.html#pc-schemaisvalid">PC_SchemaIsValid</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="points.html">PcPoint</a><ul>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-makepoint">PC_MakePoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-astext">PC_AsText</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-pcid">PC_PCId</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-get">PC_Get</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-makepoint">PC_MakePoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-memsize">PC_MemSize</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html#pc-pcid">PC_PCId</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="patchs.html">PcPatch</a><ul>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patch">PC_Patch</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-makepatch">PC_MakePatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-numpoints">PC_NumPoints</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-pcid">PC_PCId</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-astext">PC_AsText</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-summary">PC_Summary</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-uncompress">PC_Uncompress</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-union">PC_Union</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-intersects">PC_Intersects</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-compress">PC_Compress</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-explode">PC_Explode</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patchmin">PC_PatchMin</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patchavg">PC_PatchAvg</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patchmax">PC_PatchMax</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-filtergreaterthan">PC_FilterGreaterThan</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-filterlessthan">PC_FilterLessThan</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-filterbetween">PC_FilterBetween</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-filterequals">PC_FilterEquals</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-compress">PC_Compress</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-pointn">PC_PointN</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-filtergreaterthan">PC_FilterGreaterThan</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-filterlessthan">PC_FilterLessThan</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-intersects">PC_Intersects</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-issorted">PC_IsSorted</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-sort">PC_Sort</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-makepatch">PC_MakePatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-memsize">PC_MemSize</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-numpoints">PC_NumPoints</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-pcid">PC_PCId</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patch">PC_Patch</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patchavg">PC_PatchAvg</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patchmax">PC_PatchMax</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-patchmin">PC_PatchMin</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-pointn">PC_PointN</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-range">PC_Range</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-setpcid">PC_SetPCId</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-sort">PC_Sort</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-summary">PC_Summary</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-transform">PC_Transform</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-memsize">PC_MemSize</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-uncompress">PC_Uncompress</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#pc-union">PC_Union</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="wkb.html">WKB</a><ul>
<li class="toctree-l2"><a class="reference internal" href="wkb.html#pc-asbinary">PC_AsBinary</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html#pc-envelopeasbinary">PC_EnvelopeAsBinary</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html#pc-boundingdiagonalasbinary">PC_BoundingDiagonalAsBinary</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html#pc-envelopeasbinary">PC_EnvelopeAsBinary</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="postgis.html">PostGIS</a><ul>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-intersects">PC_Intersects</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-intersection">PC_Intersection</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#geometry">Geometry</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-envelopegeometry">PC_EnvelopeGeometry</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-boundingdiagonalgeometry">PC_BoundingDiagonalGeometry</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-envelopegeometry">PC_EnvelopeGeometry</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-intersection">PC_Intersection</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html#pc-intersects">PC_Intersects</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="utils.html">Utils</a><ul>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-full-version">PC_Full_Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-lazperf-enabled">PC_Lazperf_Enabled</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-libxml2-version">PC_LibXML2_Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-lib-version">PC_Lib_Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-pgsql-version">PC_PGSQL_Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-postgis-version">PC_PostGIS_Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-script-version">PC_Script_Version</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html#pc-version">PC_Version</a></li>
</ul>
</li>
</ul>
@ -163,7 +181,7 @@
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="../quickstart.html" class="btn btn-neutral float-left" title="Getting Started" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="points.html" class="btn btn-neutral float-right" title="PcPoint" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="schema.html" class="btn btn-neutral float-right" title="Schema" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>

View File

@ -55,37 +55,39 @@
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Functions</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="schema.html">Schema</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html">PcPoint</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">PcPatch</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pc-patch">PC_Patch</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-makepatch">PC_MakePatch</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-numpoints">PC_NumPoints</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pcid">PC_PCId</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-astext">PC_AsText</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-summary">PC_Summary</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-uncompress">PC_Uncompress</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-union">PC_Union</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-intersects">PC_Intersects</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-compress">PC_Compress</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-explode">PC_Explode</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patchmin">PC_PatchMin</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patchavg">PC_PatchAvg</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patchmax">PC_PatchMax</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-filtergreaterthan">PC_FilterGreaterThan</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-filterlessthan">PC_FilterLessThan</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-filterbetween">PC_FilterBetween</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-filterequals">PC_FilterEquals</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-compress">PC_Compress</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pointn">PC_PointN</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-filtergreaterthan">PC_FilterGreaterThan</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-filterlessthan">PC_FilterLessThan</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-intersects">PC_Intersects</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-issorted">PC_IsSorted</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-sort">PC_Sort</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-makepatch">PC_MakePatch</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-memsize">PC_MemSize</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-numpoints">PC_NumPoints</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pcid">PC_PCId</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patch">PC_Patch</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patchavg">PC_PatchAvg</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patchmax">PC_PatchMax</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-patchmin">PC_PatchMin</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pointn">PC_PointN</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-range">PC_Range</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-setpcid">PC_SetPCId</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-sort">PC_Sort</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-summary">PC_Summary</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-transform">PC_Transform</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-memsize">PC_MemSize</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-uncompress">PC_Uncompress</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-union">PC_Union</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html">WKB</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html">PostGIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
</ul>
</li>
</ul>
@ -130,68 +132,13 @@
<section id="pcpatch">
<span id="patchs"></span><h1>PcPatch<a class="headerlink" href="#pcpatch" title="Link to this heading"></a></h1>
<section id="pc-patch">
<h2>PC_Patch<a class="headerlink" href="#pc-patch" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Patch(pts pcpoint[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Aggregate function that collects a result set of pcpoint values into a pcpatch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">patches</span> <span class="p">(</span><span class="n">pa</span><span class="p">)</span>
<span class="n">SELECT</span> <span class="n">PC_Patch</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">points</span> <span class="n">GROUP</span> <span class="n">BY</span> <span class="nb">id</span><span class="o">/</span><span class="mi">10</span><span class="p">;</span>
</pre></div>
</div>
</section>
<section id="pc-makepatch">
<h2>PC_MakePatch<a class="headerlink" href="#pc-makepatch" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_MakePatch(pcid integer, vals float8[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Given a valid pcid schema number and an array of doubles that matches the
schema, construct a new pcpatch. Array size must be a multiple of the number of
dimensions.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">PC_MakePatch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="o">-</span><span class="mf">126.99</span><span class="p">,</span><span class="mf">45.01</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mf">126.98</span><span class="p">,</span><span class="mf">45.02</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mf">126.97</span><span class="p">,</span><span class="mf">45.03</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">]));</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pts&quot;</span><span class="p">:[</span>
<span class="p">[</span><span class="o">-</span><span class="mf">126.99</span><span class="p">,</span><span class="mf">45.01</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mf">126.98</span><span class="p">,</span><span class="mf">45.02</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mf">126.97</span><span class="p">,</span><span class="mf">45.03</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="p">]}</span>
</pre></div>
</div>
</section>
<section id="pc-numpoints">
<h2>PC_NumPoints<a class="headerlink" href="#pc-numpoints" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_NumPoints(p pcpatch) returns integer<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the number of points in this patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="mi">9</span>
</pre></div>
</div>
</section>
<section id="pc-pcid">
<h2>PC_PCId<a class="headerlink" href="#pc-pcid" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PCId(p pcpatch) returns integer<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the pcid schema number of points in this patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PCId</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="mi">1</span>
</pre></div>
</div>
</section>
<section id="pc-astext">
<h2>PC_AsText<a class="headerlink" href="#pc-astext" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_AsText(p pcpatch) returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return a JSON version of the data in that patch.</p>
<p>Returns a JSON version of the data in that patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pts&quot;</span><span class="p">:[</span>
@ -202,67 +149,29 @@ dimensions.</p>
</pre></div>
</div>
</section>
<section id="pc-summary">
<h2>PC_Summary<a class="headerlink" href="#pc-summary" title="Link to this heading"></a></h2>
<section id="pc-compress">
<h2>PC_Compress<a class="headerlink" href="#pc-compress" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Summary(p pcpatch) returns text (from 1.1.0)<span class="colon">:</span></dt>
<dt class="field-odd">PC_Compress(p pcpatch,global_compression_scheme text,compression_config text) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return a JSON formatted summary of the data in that point.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Summary</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;npts&quot;</span><span class="p">:</span><span class="mi">9</span><span class="p">,</span> <span class="s2">&quot;srid&quot;</span><span class="p">:</span><span class="mi">4326</span><span class="p">,</span> <span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;dimensional&quot;</span><span class="p">,</span><span class="s2">&quot;dims&quot;</span><span class="p">:[{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;X&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;int32_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;sigbits&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="o">-</span><span class="mf">126.99</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="o">-</span><span class="mf">126.91</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="o">-</span><span class="mf">126.95</span><span class="p">}},{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;Y&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;int32_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;sigbits&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="mf">45.01</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="mf">45.09</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="mf">45.05</span><span class="p">}},{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;Z&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;int32_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;sigbits&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="mi">5</span><span class="p">}},{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">3</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;Intensity&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;uint16_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;rle&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">}}]}</span>
</pre></div>
</div>
</section>
<section id="pc-uncompress">
<h2>PC_Uncompress<a class="headerlink" href="#pc-uncompress" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Uncompress(p pcpatch) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns an uncompressed version of the patch (compression type <code class="docutils literal notranslate"><span class="pre">none</span></code>). In
order to return an uncompressed patch on the wire, this must be the outer
function with return type pcpatch in your SQL query. All other functions that
return pcpatch will compress output to the schema-specified compression before
returning.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Uncompress</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span>
<span class="n">WHERE</span> <span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="mi">01010000000000000001000000</span><span class="n">C8CEFFFFF8110000102700000A00</span>
</pre></div>
</div>
</section>
<section id="pc-union">
<h2>PC_Union<a class="headerlink" href="#pc-union" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Union(p pcpatch[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Aggregate function merges a result set of pcpatch entries into a single pcpatch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">--</span> <span class="n">Compare</span> <span class="n">npoints</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">patches</span><span class="p">))</span> <span class="n">to</span> <span class="nb">sum</span><span class="p">(</span><span class="n">npoints</span><span class="p">(</span><span class="n">patches</span><span class="p">))</span>
<span class="n">SELECT</span> <span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">PC_Union</span><span class="p">(</span><span class="n">pa</span><span class="p">))</span> <span class="n">FROM</span> <span class="n">patches</span><span class="p">;</span>
<span class="n">SELECT</span> <span class="n">Sum</span><span class="p">(</span><span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">pa</span><span class="p">))</span> <span class="n">FROM</span> <span class="n">patches</span><span class="p">;</span>
<span class="mi">100</span>
</pre></div>
</div>
</section>
<section id="pc-intersects">
<h2>PC_Intersects<a class="headerlink" href="#pc-intersects" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Intersects(p1 pcpatch, p2 pcpatch) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns true if the bounds of p1 intersect the bounds of p2.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">--</span> <span class="n">Patch</span> <span class="n">should</span> <span class="n">intersect</span> <span class="n">itself</span>
<span class="n">SELECT</span> <span class="n">PC_Intersects</span><span class="p">(</span>
<span class="s1">&#39;01010000000000000001000000C8CEFFFFF8110000102700000A00&#39;</span><span class="p">::</span><span class="n">pcpatch</span><span class="p">,</span>
<span class="s1">&#39;01010000000000000001000000C8CEFFFFF8110000102700000A00&#39;</span><span class="p">::</span><span class="n">pcpatch</span><span class="p">);</span>
<span class="n">t</span>
</pre></div>
</div>
<p>Compress a patch with a manually specified scheme. The compression_config
semantic depends on the global compression scheme. Allowed global compression
schemes are:</p>
<ul>
<li><p>auto: determined by pcid</p></li>
<li><p>laz: no compression config supported</p></li>
<li><p>dimensional: configuration is a comma-separated list of per-dimension compressions from this list</p>
<blockquote>
<div><ul class="simple">
<li><p>auto: determined automatically from values stats</p></li>
<li><p>zlib: deflate compression</p></li>
<li><p>sigbits: significant bits removal</p></li>
<li><p>rle: run-length encoding</p></li>
</ul>
</div></blockquote>
</li>
</ul>
</section>
<section id="pc-explode">
<h2>PC_Explode<a class="headerlink" href="#pc-explode" title="Link to this heading"></a></h2>
@ -290,29 +199,139 @@ each point in the patch.</p>
</pre></div>
</div>
</section>
<section id="pc-patchmin">
<h2>PC_PatchMin<a class="headerlink" href="#pc-patchmin" title="Link to this heading"></a></h2>
<section id="pc-filterbetween">
<h2>PC_FilterBetween<a class="headerlink" href="#pc-filterbetween" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchMin(p pcpatch, dimname text) returns numeric<span class="colon">:</span></dt>
<dt class="field-odd">PC_FilterBetween(p pcpatch, dimname text, float8 value1, float8 value2) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Reads the values of the requested dimension for all points in the patch and
returns the minimum of those values. Dimension name must exist in the schema.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PatchMin</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;y&#39;</span><span class="p">)</span>
<p>Returns a patch with only points whose values are between (excluding) the
supplied values for the requested dimension.</p>
</section>
<section id="pc-filterequals">
<h2>PC_FilterEquals<a class="headerlink" href="#pc-filterequals" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_FilterEquals(p pcpatch, dimname text, float8 value) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a patch with only points whose values are the same as the supplied
values for the requested dimension.</p>
</section>
<section id="pc-filtergreaterthan">
<h2>PC_FilterGreaterThan<a class="headerlink" href="#pc-filtergreaterthan" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_FilterGreaterThan(p pcpatch, dimname text, float8 value) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a patch with only points whose values are greater than the supplied
value for the requested dimension.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">PC_FilterGreaterThan</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;y&#39;</span><span class="p">,</span> <span class="mf">45.57</span><span class="p">))</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="mf">45.5</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pts&quot;</span><span class="p">:[[</span><span class="o">-</span><span class="mf">126.42</span><span class="p">,</span><span class="mf">45.58</span><span class="p">,</span><span class="mi">58</span><span class="p">,</span><span class="mi">5</span><span class="p">],[</span><span class="o">-</span><span class="mf">126.41</span><span class="p">,</span><span class="mf">45.59</span><span class="p">,</span><span class="mi">59</span><span class="p">,</span><span class="mi">5</span><span class="p">]]}</span>
</pre></div>
</div>
</section>
<section id="pc-filterlessthan">
<h2>PC_FilterLessThan<a class="headerlink" href="#pc-filterlessthan" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchMin(p pcpatch) returns pcpoint<span class="colon">:</span></dt>
<dt class="field-odd">PC_FilterLessThan(p pcpatch, dimname text, float8 value) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a PcPoint with the minimum values of each dimension in the patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PatchMin</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<p>Returns a patch with only points whose values are less than the supplied value
for the requested dimension.</p>
</section>
<section id="pc-intersects">
<h2>PC_Intersects<a class="headerlink" href="#pc-intersects" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Intersects(p1 pcpatch, p2 pcpatch) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns true if the bounds of p1 intersect the bounds of p2.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">--</span> <span class="n">Patch</span> <span class="n">should</span> <span class="n">intersect</span> <span class="n">itself</span>
<span class="n">SELECT</span> <span class="n">PC_Intersects</span><span class="p">(</span>
<span class="s1">&#39;01010000000000000001000000C8CEFFFFF8110000102700000A00&#39;</span><span class="p">::</span><span class="n">pcpatch</span><span class="p">,</span>
<span class="s1">&#39;01010000000000000001000000C8CEFFFFF8110000102700000A00&#39;</span><span class="p">::</span><span class="n">pcpatch</span><span class="p">);</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.5</span><span class="p">,</span><span class="mf">45.5</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="n">t</span>
</pre></div>
</div>
</section>
<section id="pc-issorted">
<h2>PC_IsSorted<a class="headerlink" href="#pc-issorted" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_IsSorted(p pcpatch, dimnames text[], strict boolean default true) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Checks whether a pcpatch is sorted lexicographically along the given
dimensions. The <code class="docutils literal notranslate"><span class="pre">strict</span></code> option further checks that the ordering is strict
(no duplicates).</p>
</section>
<section id="pc-makepatch">
<h2>PC_MakePatch<a class="headerlink" href="#pc-makepatch" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_MakePatch(pcid integer, vals float8[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Given a valid pcid schema number and an array of doubles that matches the
schema, construct a new pcpatch. Array size must be a multiple of the number of
dimensions.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">PC_MakePatch</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="o">-</span><span class="mf">126.99</span><span class="p">,</span><span class="mf">45.01</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mf">126.98</span><span class="p">,</span><span class="mf">45.02</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mf">126.97</span><span class="p">,</span><span class="mf">45.03</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">]));</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pts&quot;</span><span class="p">:[</span>
<span class="p">[</span><span class="o">-</span><span class="mf">126.99</span><span class="p">,</span><span class="mf">45.01</span><span class="p">,</span><span class="mi">1</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mf">126.98</span><span class="p">,</span><span class="mf">45.02</span><span class="p">,</span><span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">],[</span><span class="o">-</span><span class="mf">126.97</span><span class="p">,</span><span class="mf">45.03</span><span class="p">,</span><span class="mi">3</span><span class="p">,</span><span class="mi">0</span><span class="p">]</span>
<span class="p">]}</span>
</pre></div>
</div>
</section>
<section id="pc-memsize">
<h2>PC_MemSize<a class="headerlink" href="#pc-memsize" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_MemSize(p pcpatch) returns int4<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns the memory size of a pcpatch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_MemSize</span><span class="p">(</span><span class="n">PC_Patch</span><span class="p">(</span><span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mf">124.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">])));</span>
<span class="mi">161</span>
</pre></div>
</div>
</section>
<section id="pc-numpoints">
<h2>PC_NumPoints<a class="headerlink" href="#pc-numpoints" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_NumPoints(p pcpatch) returns integer<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns the number of points in this patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="mi">9</span>
</pre></div>
</div>
</section>
<section id="pc-pcid">
<h2>PC_PCId<a class="headerlink" href="#pc-pcid" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PCId(p pcpatch) returns integer<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns the pcid schema number of points in this patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PCId</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="mi">1</span>
</pre></div>
</div>
</section>
<section id="pc-patch">
<h2>PC_Patch<a class="headerlink" href="#pc-patch" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Patch(pts pcpoint[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Aggregate function that collects a result set of pcpoint values into a pcpatch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">INSERT</span> <span class="n">INTO</span> <span class="n">patches</span> <span class="p">(</span><span class="n">pa</span><span class="p">)</span>
<span class="n">SELECT</span> <span class="n">PC_Patch</span><span class="p">(</span><span class="n">pt</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">points</span> <span class="n">GROUP</span> <span class="n">BY</span> <span class="nb">id</span><span class="o">/</span><span class="mi">10</span><span class="p">;</span>
</pre></div>
</div>
</section>
@ -368,71 +387,31 @@ returns the maximum of those values. Dimension name must exist in the schema.</p
</pre></div>
</div>
</section>
<section id="pc-filtergreaterthan">
<h2>PC_FilterGreaterThan<a class="headerlink" href="#pc-filtergreaterthan" title="Link to this heading"></a></h2>
<section id="pc-patchmin">
<h2>PC_PatchMin<a class="headerlink" href="#pc-patchmin" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_FilterGreaterThan(p pcpatch, dimname text, float8 value) returns pcpatch<span class="colon">:</span></dt>
<dt class="field-odd">PC_PatchMin(p pcpatch, dimname text) returns numeric<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a patch with only points whose values are greater than the supplied
value for the requested dimension.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">PC_FilterGreaterThan</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;y&#39;</span><span class="p">,</span> <span class="mf">45.57</span><span class="p">))</span>
<p>Reads the values of the requested dimension for all points in the patch and
returns the minimum of those values. Dimension name must exist in the schema.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PatchMin</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;y&#39;</span><span class="p">)</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pts&quot;</span><span class="p">:[[</span><span class="o">-</span><span class="mf">126.42</span><span class="p">,</span><span class="mf">45.58</span><span class="p">,</span><span class="mi">58</span><span class="p">,</span><span class="mi">5</span><span class="p">],[</span><span class="o">-</span><span class="mf">126.41</span><span class="p">,</span><span class="mf">45.59</span><span class="p">,</span><span class="mi">59</span><span class="p">,</span><span class="mi">5</span><span class="p">]]}</span>
<span class="mf">45.5</span>
</pre></div>
</div>
</section>
<section id="pc-filterlessthan">
<h2>PC_FilterLessThan<a class="headerlink" href="#pc-filterlessthan" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_FilterLessThan(p pcpatch, dimname text, float8 value) returns pcpatch<span class="colon">:</span></dt>
<dt class="field-odd">PC_PatchMin(p pcpatch) returns pcpoint<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a patch with only points whose values are less than the supplied value
for the requested dimension.</p>
</section>
<section id="pc-filterbetween">
<h2>PC_FilterBetween<a class="headerlink" href="#pc-filterbetween" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_FilterBetween(p pcpatch, dimname text, float8 value1, float8 value2) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a patch with only points whose values are between (excluding) the
supplied values for the requested dimension.</p>
</section>
<section id="pc-filterequals">
<h2>PC_FilterEquals<a class="headerlink" href="#pc-filterequals" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_FilterEquals(p pcpatch, dimname text, float8 value) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a patch with only points whose values are the same as the supplied
values for the requested dimension.</p>
</section>
<section id="pc-compress">
<h2>PC_Compress<a class="headerlink" href="#pc-compress" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Compress(p pcpatch,global_compression_scheme text,compression_config text) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Compress a patch with a manually specified scheme. The compression_config
semantic depends on the global compression scheme. Allowed global compression
schemes are:</p>
<ul>
<li><p>auto: determined by pcid</p></li>
<li><p>laz: no compression config supported</p></li>
<li><p>dimensional: configuration is a comma-separated list of per-dimension compressions from this list</p>
<blockquote>
<div><ul class="simple">
<li><p>auto: determined automatically from values stats</p></li>
<li><p>zlib: deflate compression</p></li>
<li><p>sigbits: significant bits removal</p></li>
<li><p>rle: run-length encoding</p></li>
</ul>
</div></blockquote>
</li>
</ul>
<p>Returns a PcPoint with the minimum values of each dimension in the patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PatchMin</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.5</span><span class="p">,</span><span class="mf">45.5</span><span class="p">,</span><span class="mi">50</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
</pre></div>
</div>
</section>
<section id="pc-pointn">
<h2>PC_PointN<a class="headerlink" href="#pc-pointn" title="Link to this heading"></a></h2>
@ -443,25 +422,6 @@ schemes are:</p>
<p>Returns the n-th point of the patch with 1-based indexing. Negative n counts
point from the end.</p>
</section>
<section id="pc-issorted">
<h2>PC_IsSorted<a class="headerlink" href="#pc-issorted" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_IsSorted(p pcpatch, dimnames text[], strict boolean default true) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Checks whether a pcpatch is sorted lexicographically along the given
dimensions. The <code class="docutils literal notranslate"><span class="pre">strict</span></code> option further checks that the ordering is strict
(no duplicates).</p>
</section>
<section id="pc-sort">
<h2>PC_Sort<a class="headerlink" href="#pc-sort" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Sort(p pcpatch, dimnames text[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a copy of the input patch lexicographically sorted along the given
dimensions.</p>
</section>
<section id="pc-range">
<h2>PC_Range<a class="headerlink" href="#pc-range" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -482,6 +442,28 @@ start-th point with 1-based indexing.</p>
value <code class="docutils literal notranslate"><span class="pre">def</span></code> is set in the points of the output patch. <code class="docutils literal notranslate"><span class="pre">def</span></code> is optional,
its default value is <code class="docutils literal notranslate"><span class="pre">0.0</span></code>.</p>
</section>
<section id="pc-sort">
<h2>PC_Sort<a class="headerlink" href="#pc-sort" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Sort(p pcpatch, dimnames text[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a copy of the input patch lexicographically sorted along the given
dimensions.</p>
</section>
<section id="pc-summary">
<h2>PC_Summary<a class="headerlink" href="#pc-summary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Summary(p pcpatch) returns text (from 1.1.0)<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a JSON formatted summary of the data in that point.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Summary</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span> <span class="s2">&quot;npts&quot;</span><span class="p">:</span><span class="mi">9</span><span class="p">,</span> <span class="s2">&quot;srid&quot;</span><span class="p">:</span><span class="mi">4326</span><span class="p">,</span> <span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;dimensional&quot;</span><span class="p">,</span><span class="s2">&quot;dims&quot;</span><span class="p">:[{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;X&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;int32_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;sigbits&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="o">-</span><span class="mf">126.99</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="o">-</span><span class="mf">126.91</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="o">-</span><span class="mf">126.95</span><span class="p">}},{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;Y&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;int32_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;sigbits&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="mf">45.01</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="mf">45.09</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="mf">45.05</span><span class="p">}},{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;Z&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">4</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;int32_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;sigbits&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="mi">9</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="mi">5</span><span class="p">}},{</span><span class="s2">&quot;pos&quot;</span><span class="p">:</span><span class="mi">3</span><span class="p">,</span><span class="s2">&quot;name&quot;</span><span class="p">:</span><span class="s2">&quot;Intensity&quot;</span><span class="p">,</span><span class="s2">&quot;size&quot;</span><span class="p">:</span><span class="mi">2</span><span class="p">,</span><span class="s2">&quot;type&quot;</span><span class="p">:</span><span class="s2">&quot;uint16_t&quot;</span><span class="p">,</span><span class="s2">&quot;compr&quot;</span><span class="p">:</span><span class="s2">&quot;rle&quot;</span><span class="p">,</span><span class="s2">&quot;stats&quot;</span><span class="p">:{</span><span class="s2">&quot;min&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;max&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">,</span><span class="s2">&quot;avg&quot;</span><span class="p">:</span><span class="mi">0</span><span class="p">}}]}</span>
</pre></div>
</div>
</section>
<section id="pc-transform">
<h2>PC_Transform<a class="headerlink" href="#pc-transform" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -497,16 +479,36 @@ its default value is <code class="docutils literal notranslate"><span class="pre
data if dimension interpretations, scales or offsets are different in the new
schema.</p>
</section>
<section id="pc-memsize">
<h2>PC_MemSize<a class="headerlink" href="#pc-memsize" title="Link to this heading"></a></h2>
<section id="pc-uncompress">
<h2>PC_Uncompress<a class="headerlink" href="#pc-uncompress" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_MemSize(p pcpatch) returns int4<span class="colon">:</span></dt>
<dt class="field-odd">PC_Uncompress(p pcpatch) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the memory size of a pcpatch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_MemSize</span><span class="p">(</span><span class="n">PC_Patch</span><span class="p">(</span><span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mf">124.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">])));</span>
<p>Returns an uncompressed version of the patch (compression type <code class="docutils literal notranslate"><span class="pre">none</span></code>). In
order to return an uncompressed patch on the wire, this must be the outer
function with return type pcpatch in your SQL query. All other functions that
return pcpatch will compress output to the schema-specified compression before
returning.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Uncompress</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">patches</span>
<span class="n">WHERE</span> <span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">pa</span><span class="p">)</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
<span class="mi">161</span>
<span class="mi">01010000000000000001000000</span><span class="n">C8CEFFFFF8110000102700000A00</span>
</pre></div>
</div>
</section>
<section id="pc-union">
<h2>PC_Union<a class="headerlink" href="#pc-union" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Union(p pcpatch[]) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Aggregate function merges a result set of pcpatch entries into a single pcpatch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="o">--</span> <span class="n">Compare</span> <span class="n">npoints</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="n">patches</span><span class="p">))</span> <span class="n">to</span> <span class="nb">sum</span><span class="p">(</span><span class="n">npoints</span><span class="p">(</span><span class="n">patches</span><span class="p">))</span>
<span class="n">SELECT</span> <span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">PC_Union</span><span class="p">(</span><span class="n">pa</span><span class="p">))</span> <span class="n">FROM</span> <span class="n">patches</span><span class="p">;</span>
<span class="n">SELECT</span> <span class="n">Sum</span><span class="p">(</span><span class="n">PC_NumPoints</span><span class="p">(</span><span class="n">pa</span><span class="p">))</span> <span class="n">FROM</span> <span class="n">patches</span><span class="p">;</span>
<span class="mi">100</span>
</pre></div>
</div>
</section>

View File

@ -22,7 +22,7 @@
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="PcPatch" href="patchs.html" />
<link rel="prev" title="Functions" href="index.html" />
<link rel="prev" title="Schema" href="schema.html" />
</head>
<body class="wy-body-for-nav">
@ -55,17 +55,19 @@
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Functions</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="schema.html">Schema</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">PcPoint</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pc-makepoint">PC_MakePoint</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-astext">PC_AsText</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pcid">PC_PCId</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-get">PC_Get</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-makepoint">PC_MakePoint</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-memsize">PC_MemSize</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pcid">PC_PCId</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html">PcPatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html">WKB</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html">PostGIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
</ul>
</li>
</ul>
@ -110,6 +112,43 @@
<section id="pcpoint">
<span id="points"></span><h1>PcPoint<a class="headerlink" href="#pcpoint" title="Link to this heading"></a></h1>
<section id="pc-astext">
<h2>PC_AsText<a class="headerlink" href="#pc-astext" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_AsText(p pcpoint) returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a JSON version of the data in that point.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">);</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span><span class="mi">45</span><span class="p">,</span><span class="mi">124</span><span class="p">,</span><span class="mi">4</span><span class="p">]}</span>
</pre></div>
</div>
</section>
<section id="pc-get">
<h2>PC_Get<a class="headerlink" href="#pc-get" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Get(pt pcpoint) returns float8[]<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns values of all dimensions in an array.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Get</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">);</span>
<span class="p">{</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span><span class="mi">45</span><span class="p">,</span><span class="mi">124</span><span class="p">,</span><span class="mi">4</span><span class="p">}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">PC_Get(pt pcpoint, dimname text) returns numeric<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns the numeric value of the named dimension. The dimension name must exist
in the schema.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Get</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">,</span> <span class="s1">&#39;Intensity&#39;</span><span class="p">);</span>
<span class="mi">4</span>
</pre></div>
</div>
</section>
<section id="pc-makepoint">
<h2>PC_MakePoint<a class="headerlink" href="#pc-makepoint" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -137,16 +176,16 @@ schema, construct a new pcpoint.</p>
</pre></div>
</div>
</section>
<section id="pc-astext">
<h2>PC_AsText<a class="headerlink" href="#pc-astext" title="Link to this heading"></a></h2>
<section id="pc-memsize">
<h2>PC_MemSize<a class="headerlink" href="#pc-memsize" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_AsText(p pcpoint) returns text<span class="colon">:</span></dt>
<dt class="field-odd">PC_MemSize(pt pcpoint) returns int4<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return a JSON version of the data in that point.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">);</span>
<p>Returns the memory size of a pcpoint.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_MemSize</span><span class="p">(</span><span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mf">124.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">]));</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span><span class="mi">45</span><span class="p">,</span><span class="mi">124</span><span class="p">,</span><span class="mi">4</span><span class="p">]}</span>
<span class="mi">25</span>
</pre></div>
</div>
</section>
@ -156,57 +195,20 @@ schema, construct a new pcpoint.</p>
<dt class="field-odd">PC_PCId(p pcpoint) returns integer (from 1.1.0)<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the pcid schema number of this point.</p>
<p>Returns the pcid schema number of this point.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PCId</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">);</span>
<span class="mi">1</span>
</pre></div>
</div>
</section>
<section id="pc-get">
<h2>PC_Get<a class="headerlink" href="#pc-get" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Get(pt pcpoint) returns float8[]<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return values of all dimensions in an array.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Get</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">);</span>
<span class="p">{</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span><span class="mi">45</span><span class="p">,</span><span class="mi">124</span><span class="p">,</span><span class="mi">4</span><span class="p">}</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">PC_Get(pt pcpoint, dimname text) returns numeric<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the numeric value of the named dimension. The dimension name must exist
in the schema.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Get</span><span class="p">(</span><span class="s1">&#39;010100000064CEFFFF94110000703000000400&#39;</span><span class="p">::</span><span class="n">pcpoint</span><span class="p">,</span> <span class="s1">&#39;Intensity&#39;</span><span class="p">);</span>
<span class="mi">4</span>
</pre></div>
</div>
</section>
<section id="pc-memsize">
<h2>PC_MemSize<a class="headerlink" href="#pc-memsize" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_MemSize(pt pcpoint) returns int4<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the memory size of a pcpoint.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_MemSize</span><span class="p">(</span><span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="o">-</span><span class="mi">127</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mf">124.0</span><span class="p">,</span> <span class="mf">4.0</span><span class="p">]));</span>
<span class="mi">25</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="Functions" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="schema.html" class="btn btn-neutral float-left" title="Schema" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="patchs.html" class="btn btn-neutral float-right" title="PcPatch" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>

View File

@ -21,7 +21,7 @@
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="Update" href="../update.html" />
<link rel="next" title="Utils" href="utils.html" />
<link rel="prev" title="WKB" href="wkb.html" />
</head>
@ -55,17 +55,19 @@
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Functions</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="schema.html">Schema</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html">PcPoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html">PcPatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html">WKB</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">PostGIS</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pc-intersects">PC_Intersects</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-intersection">PC_Intersection</a></li>
<li class="toctree-l3"><a class="reference internal" href="#geometry">Geometry</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-envelopegeometry">PC_EnvelopeGeometry</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-boundingdiagonalgeometry">PC_BoundingDiagonalGeometry</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-envelopegeometry">PC_EnvelopeGeometry</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-intersection">PC_Intersection</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-intersects">PC_Intersects</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
</ul>
</li>
</ul>
@ -109,7 +111,7 @@
<div itemprop="articleBody">
<section id="postgis">
<span id="points"></span><h1>PostGIS<a class="headerlink" href="#postgis" title="Link to this heading"></a></h1>
<span id="id1"></span><h1>PostGIS<a class="headerlink" href="#postgis" title="Link to this heading"></a></h1>
<p>The <code class="docutils literal notranslate"><span class="pre">pointcloud_postgis</span></code> extension adds functions that allow you to use
PostgreSQL Pointcloud with PostGIS, converting <code class="docutils literal notranslate"><span class="pre">PcPoint</span></code> and <code class="docutils literal notranslate"><span class="pre">PcPatch</span></code> to
Geometry and doing spatial filtering on point cloud data. The
@ -120,44 +122,6 @@ Geometry and doing spatial filtering on point cloud data. The
<span class="k">CREATE</span><span class="w"> </span><span class="n">EXTENSION</span><span class="w"> </span><span class="n">pointcloud_postgis</span><span class="p">;</span>
</pre></div>
</div>
<section id="pc-intersects">
<h2>PC_Intersects<a class="headerlink" href="#pc-intersects" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Intersects(p pcpatch, g geometry) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
<dt class="field-even">PC_Intersects(g geometry, p pcpatch) returns boolean<span class="colon">:</span></dt>
<dd class="field-even"><p></p></dd>
</dl>
<p>Returns true if the bounds of the patch intersect the geometry.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Intersects</span><span class="p">(</span><span class="s1">&#39;SRID=4326;POINT(-126.451 45.552)&#39;</span><span class="p">::</span><span class="n">geometry</span><span class="p">,</span> <span class="n">pa</span><span class="p">)</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="n">t</span>
</pre></div>
</div>
</section>
<section id="pc-intersection">
<h2>PC_Intersection<a class="headerlink" href="#pc-intersection" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Intersection(pcpatch, geometry) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a PcPatch which only contains points that intersected the geometry.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">PC_Explode</span><span class="p">(</span><span class="n">PC_Intersection</span><span class="p">(</span>
<span class="n">pa</span><span class="p">,</span>
<span class="s1">&#39;SRID=4326;POLYGON((-126.451 45.552, -126.42 47.55, -126.40 45.552, -126.451 45.552))&#39;</span><span class="p">::</span><span class="n">geometry</span>
<span class="p">)))</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="n">pc_astext</span>
<span class="o">--------------------------------------</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.44</span><span class="p">,</span><span class="mf">45.56</span><span class="p">,</span><span class="mi">56</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.43</span><span class="p">,</span><span class="mf">45.57</span><span class="p">,</span><span class="mi">57</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.42</span><span class="p">,</span><span class="mf">45.58</span><span class="p">,</span><span class="mi">58</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.41</span><span class="p">,</span><span class="mf">45.59</span><span class="p">,</span><span class="mi">59</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
</pre></div>
</div>
</section>
<section id="geometry">
<h2>Geometry<a class="headerlink" href="#geometry" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -174,24 +138,6 @@ Geometry and doing spatial filtering on point cloud data. The
</pre></div>
</div>
</section>
<section id="pc-envelopegeometry">
<h2>PC_EnvelopeGeometry<a class="headerlink" href="#pc-envelopegeometry" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_EnvelopeGeometry(pcpatch) returns geometry<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns the 2D bounds of the patch as a PostGIS Polygon 2D. Useful for
performing 2D intersection tests with PostGIS geometries.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">ST_AsText</span><span class="p">(</span><span class="n">PC_EnvelopeGeometry</span><span class="p">(</span><span class="n">pa</span><span class="p">))</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">POLYGON</span><span class="p">((</span><span class="o">-</span><span class="mf">126.99</span> <span class="mf">45.01</span><span class="p">,</span><span class="o">-</span><span class="mf">126.99</span> <span class="mf">45.09</span><span class="p">,</span><span class="o">-</span><span class="mf">126.91</span> <span class="mf">45.09</span><span class="p">,</span><span class="o">-</span><span class="mf">126.91</span> <span class="mf">45.01</span><span class="p">,</span><span class="o">-</span><span class="mf">126.99</span> <span class="mf">45.01</span><span class="p">))</span>
</pre></div>
</div>
<p>For example, this is how one may want to create an index:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">INDEX</span> <span class="n">ON</span> <span class="n">patches</span> <span class="n">USING</span> <span class="n">GIST</span><span class="p">(</span><span class="n">PC_EnvelopeGeometry</span><span class="p">(</span><span class="n">patch</span><span class="p">));</span>
</pre></div>
</div>
</section>
<section id="pc-boundingdiagonalgeometry">
<h2>PC_BoundingDiagonalGeometry<a class="headerlink" href="#pc-boundingdiagonalgeometry" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -223,6 +169,62 @@ index on a patch column.</p>
</pre></div>
</div>
</section>
<section id="pc-envelopegeometry">
<h2>PC_EnvelopeGeometry<a class="headerlink" href="#pc-envelopegeometry" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_EnvelopeGeometry(pcpatch) returns geometry<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns the 2D bounds of the patch as a PostGIS Polygon 2D. Useful for
performing 2D intersection tests with PostGIS geometries.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">ST_AsText</span><span class="p">(</span><span class="n">PC_EnvelopeGeometry</span><span class="p">(</span><span class="n">pa</span><span class="p">))</span> <span class="n">FROM</span> <span class="n">patches</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">POLYGON</span><span class="p">((</span><span class="o">-</span><span class="mf">126.99</span> <span class="mf">45.01</span><span class="p">,</span><span class="o">-</span><span class="mf">126.99</span> <span class="mf">45.09</span><span class="p">,</span><span class="o">-</span><span class="mf">126.91</span> <span class="mf">45.09</span><span class="p">,</span><span class="o">-</span><span class="mf">126.91</span> <span class="mf">45.01</span><span class="p">,</span><span class="o">-</span><span class="mf">126.99</span> <span class="mf">45.01</span><span class="p">))</span>
</pre></div>
</div>
<p>For example, this is how one may want to create an index:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">CREATE</span> <span class="n">INDEX</span> <span class="n">ON</span> <span class="n">patches</span> <span class="n">USING</span> <span class="n">GIST</span><span class="p">(</span><span class="n">PC_EnvelopeGeometry</span><span class="p">(</span><span class="n">patch</span><span class="p">));</span>
</pre></div>
</div>
</section>
<section id="pc-intersection">
<h2>PC_Intersection<a class="headerlink" href="#pc-intersection" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Intersection(pcpatch, geometry) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Returns a PcPatch which only contains points that intersected the geometry.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_AsText</span><span class="p">(</span><span class="n">PC_Explode</span><span class="p">(</span><span class="n">PC_Intersection</span><span class="p">(</span>
<span class="n">pa</span><span class="p">,</span>
<span class="s1">&#39;SRID=4326;POLYGON((-126.451 45.552, -126.42 47.55, -126.40 45.552, -126.451 45.552))&#39;</span><span class="p">::</span><span class="n">geometry</span>
<span class="p">)))</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="n">pc_astext</span>
<span class="o">--------------------------------------</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.44</span><span class="p">,</span><span class="mf">45.56</span><span class="p">,</span><span class="mi">56</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.43</span><span class="p">,</span><span class="mf">45.57</span><span class="p">,</span><span class="mi">57</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.42</span><span class="p">,</span><span class="mf">45.58</span><span class="p">,</span><span class="mi">58</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
<span class="p">{</span><span class="s2">&quot;pcid&quot;</span><span class="p">:</span><span class="mi">1</span><span class="p">,</span><span class="s2">&quot;pt&quot;</span><span class="p">:[</span><span class="o">-</span><span class="mf">126.41</span><span class="p">,</span><span class="mf">45.59</span><span class="p">,</span><span class="mi">59</span><span class="p">,</span><span class="mi">5</span><span class="p">]}</span>
</pre></div>
</div>
</section>
<section id="pc-intersects">
<h2>PC_Intersects<a class="headerlink" href="#pc-intersects" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Intersects(p pcpatch, g geometry) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
<dt class="field-even">PC_Intersects(g geometry, p pcpatch) returns boolean<span class="colon">:</span></dt>
<dd class="field-even"><p></p></dd>
</dl>
<p>Returns true if the bounds of the patch intersect the geometry.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Intersects</span><span class="p">(</span><span class="s1">&#39;SRID=4326;POINT(-126.451 45.552)&#39;</span><span class="p">::</span><span class="n">geometry</span><span class="p">,</span> <span class="n">pa</span><span class="p">)</span>
<span class="n">FROM</span> <span class="n">patches</span> <span class="n">WHERE</span> <span class="nb">id</span> <span class="o">=</span> <span class="mi">7</span><span class="p">;</span>
<span class="n">t</span>
</pre></div>
</div>
</section>
</section>
@ -230,7 +232,7 @@ index on a patch column.</p>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="wkb.html" class="btn btn-neutral float-left" title="WKB" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../update.html" class="btn btn-neutral float-right" title="Update" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
<a href="utils.html" class="btn btn-neutral float-right" title="Utils" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>

181
functions/schema.html Normal file
View File

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Schema &mdash; pgpointcloud</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=36f53d34"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="PcPoint" href="points.html" />
<link rel="prev" title="Functions" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">Concepts</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../install.html">Install</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">Getting Started</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Functions</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Schema</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pc-schemagetndims">PC_SchemaGetNDims</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-schemaisvalid">PC_SchemaIsValid</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="points.html">PcPoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html">PcPatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html">WKB</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html">PostGIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../update.html">Update</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../tutorials/index.html">Tutorials</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../development.html">Development</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../community.html">Community</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../copyright.html">License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">pgPointcloud</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Functions</a></li>
<li class="breadcrumb-item active">Schema</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="schema">
<span id="id1"></span><h1>Schema<a class="headerlink" href="#schema" title="Link to this heading"></a></h1>
<section id="pc-schemagetndims">
<h2>PC_SchemaGetNDims<a class="headerlink" href="#pc-schemagetndims" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_SchemaGetNDims(pcid integer) returns integer<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the number of dimensions in the corresponding schema.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_SchemaGetNDims</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="mi">18</span>
</pre></div>
</div>
</section>
<section id="pc-schemaisvalid">
<h2>PC_SchemaIsValid<a class="headerlink" href="#pc-schemaisvalid" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_SchemaIsValid(xml text) returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return <cite>true</cite> if the pointcloud schema is valid.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_SchemaIsValid</span><span class="p">(</span><span class="n">schema</span><span class="p">)</span> <span class="n">FROM</span> <span class="n">pointcloud_formats</span> <span class="n">LIMIT</span> <span class="mi">1</span><span class="p">;</span>
<span class="n">t</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="Functions" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="points.html" class="btn btn-neutral float-right" title="PcPoint" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
<div class="footer">
<div class="container">
&copy; 2025
<a href="https://github.com/pramsey">Paul Ramsey</a>,
<a href="http://github.com/pblottiere">Paul Blottiere</a>,
<a href="http://github.com/mbredif">Mathieu Brédif</a>,
<a href="http://github.com/elemoine">Eric Lemoine</a>,
and
<a href="https://github.com/pgpointcloud/pointcloud/graphs/contributors">others</a>,
</div>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

268
functions/utils.html Normal file
View File

@ -0,0 +1,268 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Utils &mdash; pgpointcloud</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=03e43079" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=36f53d34"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/js/theme.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="next" title="Update" href="../update.html" />
<link rel="prev" title="PostGIS" href="postgis.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<ul>
<li class="toctree-l1"><a class="reference internal" href="../concepts/index.html">Concepts</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../install.html">Install</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../quickstart.html">Getting Started</a></li>
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Functions</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="schema.html">Schema</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html">PcPoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html">PcPatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="wkb.html">WKB</a></li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html">PostGIS</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Utils</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pc-full-version">PC_Full_Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-lazperf-enabled">PC_Lazperf_Enabled</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-libxml2-version">PC_LibXML2_Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-lib-version">PC_Lib_Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-pgsql-version">PC_PGSQL_Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-postgis-version">PC_PostGIS_Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-script-version">PC_Script_Version</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-version">PC_Version</a></li>
</ul>
</li>
</ul>
</li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../update.html">Update</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../tutorials/index.html">Tutorials</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../development.html">Development</a></li>
</ul>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../community.html">Community</a></li>
<li class="toctree-l1"><a class="reference internal" href="../faq.html">FAQ</a></li>
<li class="toctree-l1"><a class="reference internal" href="../copyright.html">License</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../index.html">pgPointcloud</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Functions</a></li>
<li class="breadcrumb-item active">Utils</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="utils">
<span id="id1"></span><h1>Utils<a class="headerlink" href="#utils" title="Link to this heading"></a></h1>
<section id="pc-full-version">
<h2>PC_Full_Version<a class="headerlink" href="#pc-full-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Full_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return a composite version string summarizing pointcloud system components.
Includes library, SQL, libxml2, PostgreSQL interface versions, and LAZperf
support flag. Useful for debugging or verifying runtime compatibility of the
pointcloud extension.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Full_Version</span><span class="p">();</span>
<span class="n">POINTCLOUD</span><span class="o">=</span><span class="s2">&quot;1.2.5 2346cc2&quot;</span> <span class="n">PGSQL</span><span class="o">=</span><span class="s2">&quot;170&quot;</span> <span class="n">LIBXML2</span><span class="o">=</span><span class="s2">&quot;2.14.3 LAZPERF enabled=false</span>
</pre></div>
</div>
</section>
<section id="pc-lazperf-enabled">
<h2>PC_Lazperf_Enabled<a class="headerlink" href="#pc-lazperf-enabled" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Lazperf_Enabled() returns boolean<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return <cite>true</cite> if the pointcloud extension includes LAZperf compression support.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Lazperf_Enabled</span><span class="p">();</span>
<span class="n">t</span>
</pre></div>
</div>
</section>
<section id="pc-libxml2-version">
<h2>PC_LibXML2_Version<a class="headerlink" href="#pc-libxml2-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_LibXML2_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the <cite>libxml2</cite> version number.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_LibXML2_Version</span><span class="p">();</span>
<span class="mf">2.14.3</span>
</pre></div>
</div>
</section>
<section id="pc-lib-version">
<h2>PC_Lib_Version<a class="headerlink" href="#pc-lib-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Lib_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the library version number.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Lib_Version</span><span class="p">();</span>
<span class="mf">1.2.5</span> <span class="mi">2346</span><span class="n">cc2</span>
</pre></div>
</div>
</section>
<section id="pc-pgsql-version">
<h2>PC_PGSQL_Version<a class="headerlink" href="#pc-pgsql-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PGSQL_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the <cite>pgsql</cite> version number.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PGSQL_Version</span><span class="p">();</span>
<span class="mi">170</span>
</pre></div>
</div>
</section>
<section id="pc-postgis-version">
<h2>PC_PostGIS_Version<a class="headerlink" href="#pc-postgis-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PostGIS_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the PostGIS extension version number.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_PostGIS_Version</span><span class="p">();</span>
<span class="mf">1.2.5</span>
</pre></div>
</div>
</section>
<section id="pc-script-version">
<h2>PC_Script_Version<a class="headerlink" href="#pc-script-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Script_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the script version number.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Script_Version</span><span class="p">();</span>
<span class="mf">1.2.5</span>
</pre></div>
</div>
</section>
<section id="pc-version">
<h2>PC_Version<a class="headerlink" href="#pc-version" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Version() returns text<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the extension version number.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_Version</span><span class="p">();</span>
<span class="mf">1.2.5</span>
</pre></div>
</div>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="postgis.html" class="btn btn-neutral float-left" title="PostGIS" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="../update.html" class="btn btn-neutral float-right" title="Update" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p></p>
</div>
<div class="footer">
<div class="container">
&copy; 2025
<a href="https://github.com/pramsey">Paul Ramsey</a>,
<a href="http://github.com/pblottiere">Paul Blottiere</a>,
<a href="http://github.com/mbredif">Mathieu Brédif</a>,
<a href="http://github.com/elemoine">Eric Lemoine</a>,
and
<a href="https://github.com/pgpointcloud/pointcloud/graphs/contributors">others</a>,
</div>
</div>
</footer>
</div>
</div>
</section>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>

View File

@ -55,15 +55,17 @@
</ul>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Functions</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="schema.html">Schema</a></li>
<li class="toctree-l2"><a class="reference internal" href="points.html">PcPoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html">PcPatch</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">WKB</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#pc-asbinary">PC_AsBinary</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-envelopeasbinary">PC_EnvelopeAsBinary</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-boundingdiagonalasbinary">PC_BoundingDiagonalAsBinary</a></li>
<li class="toctree-l3"><a class="reference internal" href="#pc-envelopeasbinary">PC_EnvelopeAsBinary</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="postgis.html">PostGIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
</ul>
</li>
</ul>
@ -107,7 +109,7 @@
<div itemprop="articleBody">
<section id="wkb">
<span id="points"></span><h1>WKB<a class="headerlink" href="#wkb" title="Link to this heading"></a></h1>
<span id="id1"></span><h1>WKB<a class="headerlink" href="#wkb" title="Link to this heading"></a></h1>
<section id="pc-asbinary">
<h2>PC_AsBinary<a class="headerlink" href="#pc-asbinary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -121,6 +123,20 @@
</pre></div>
</div>
</section>
<section id="pc-boundingdiagonalasbinary">
<h2>PC_BoundingDiagonalAsBinary<a class="headerlink" href="#pc-boundingdiagonalasbinary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_BoundingDiagonalAsBinary(p pcpatch) returns bytea<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the OGC “well-known binary” format for the bounding diagonal of the
patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_BoundingDiagonalAsBinary</span><span class="p">(</span> <span class="n">PC_Patch</span><span class="p">(</span><span class="n">ARRAY</span><span class="p">[</span> <span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="mf">0.</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="mf">10.</span><span class="p">]),</span> <span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="mf">1.</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mf">10.</span><span class="p">]),</span> <span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="mf">10.</span><span class="p">,</span><span class="mf">10.</span><span class="p">,</span><span class="mf">10.</span><span class="p">,</span><span class="mf">10.</span><span class="p">])]));</span>
\<span class="n">x01020000a0e610000002000000000000000000000000000000000000000000000000000000000000000000244000000000000024400000000000002440</span>
</pre></div>
</div>
</section>
<section id="pc-envelopeasbinary">
<h2>PC_EnvelopeAsBinary<a class="headerlink" href="#pc-envelopeasbinary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
@ -141,20 +157,6 @@ Useful for performing 2D intersection tests with geometries.</p>
deprecated and will be removed in a future version (2.0) of the extension.
<code class="docutils literal notranslate"><span class="pre">PC_EnvelopeAsBinary</span></code> is to be used instead.</p>
</section>
<section id="pc-boundingdiagonalasbinary">
<h2>PC_BoundingDiagonalAsBinary<a class="headerlink" href="#pc-boundingdiagonalasbinary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_BoundingDiagonalAsBinary(p pcpatch) returns bytea<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
</dl>
<p>Return the OGC “well-known binary” format for the bounding diagonal of the
patch.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">SELECT</span> <span class="n">PC_BoundingDiagonalAsBinary</span><span class="p">(</span> <span class="n">PC_Patch</span><span class="p">(</span><span class="n">ARRAY</span><span class="p">[</span> <span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="mf">0.</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="mf">0.</span><span class="p">,</span><span class="mf">10.</span><span class="p">]),</span> <span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="mf">1.</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mf">1.</span><span class="p">,</span><span class="mf">10.</span><span class="p">]),</span> <span class="n">PC_MakePoint</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">ARRAY</span><span class="p">[</span><span class="mf">10.</span><span class="p">,</span><span class="mf">10.</span><span class="p">,</span><span class="mf">10.</span><span class="p">,</span><span class="mf">10.</span><span class="p">])]));</span>
\<span class="n">x01020000a0e610000002000000000000000000000000000000000000000000000000000000000000000000244000000000000024400000000000002440</span>
</pre></div>
</div>
</section>
</section>

View File

@ -158,10 +158,12 @@ problems and allows a good integration with other geo-spatial data
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="functions/index.html">Functions</a><ul>
<li class="toctree-l2"><a class="reference internal" href="functions/schema.html">Schema</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions/points.html">PcPoint</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions/patchs.html">PcPatch</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions/wkb.html">WKB</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions/postgis.html">PostGIS</a></li>
<li class="toctree-l2"><a class="reference internal" href="functions/utils.html">Utils</a></li>
</ul>
</li>
</ul>

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -22,7 +22,7 @@
<link rel="search" title="Search" href="search.html" />
<link rel="copyright" title="Copyright" href="copyright.html" />
<link rel="next" title="Tutorials" href="tutorials/index.html" />
<link rel="prev" title="PostGIS" href="functions/postgis.html" />
<link rel="prev" title="Utils" href="functions/utils.html" />
</head>
<body class="wy-body-for-nav">
@ -138,7 +138,7 @@ the <a class="reference external" href="/https://pgpointcloud.github.io/pointclo
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="functions/postgis.html" class="btn btn-neutral float-left" title="PostGIS" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="functions/utils.html" class="btn btn-neutral float-left" title="Utils" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="tutorials/index.html" class="btn btn-neutral float-right" title="Tutorials" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>