deploy: f1a96dd3b52c92985d2ddea7e524220ef9a6a00c

This commit is contained in:
pblottiere 2025-05-01 21:35:04 +00:00
parent 170a523dee
commit 73b1626a8e
65 changed files with 945 additions and 816 deletions

View File

@ -1,4 +1,4 @@
# Sphinx build info version 1
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
config: d1735204580e27d7a703b4c2c392717e
# This file records the configuration used when building these files. When it is not found, a full rebuild will be done.
config: 61e27923582744468a17b300ffcbc371
tags: 645f666f9bcd5a90fca523b33c5a78b7

View File

@ -136,44 +136,22 @@ Continuous Integration
pgPointcloud tests are run with `Github Actions`_ on several Ubuntu versions
and with various PostgreSQL/PostGIS releases:
+--------------------+-----------------------+------------------------+------------------------+
| | PostGIS 2.5 | PostGIS 3.3 | W/O PostGIS |
+--------------------+-----------------------+------------------------+------------------------+
| PostgreSQL 12 | |12_25_focal| | |12_33_focal| | |12_33_focal| |
| | | | |
| | | |12_33_jammy| | |12_33_jammy| |
+--------------------+-----------------------+------------------------+------------------------+
| PostgreSQL 13 | | |13_33_focal| | |13_33_focal| |
| | | | |
| | | |13_33_jammy| | |13_33_jammy| |
+--------------------+-----------------------+------------------------+------------------------+
| PostgreSQL 14 | | |14_33_focal| | |14_33_focal| |
| | | | |
| | | |14_33_jammy| | |14_33_jammy| |
+--------------------+-----------------------+------------------------+------------------------+
| PostgreSQL 15 | | |15_33_focal| | |15_33_focal| |
| | | | |
| | | |15_33_jammy| | |15_33_jammy| |
+--------------------+-----------------------+------------------------+------------------------+
| PostgreSQL 16 | | |16_33_jammy| | |16_33_jammy| |
+--------------------+-----------------------+------------------------+------------------------+
.. |12_25_focal| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres12_postgis25.yml?branch=master&label=Ubuntu%2020.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+12+and+PostGIS+2.5%22
.. |12_33_focal| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres12_postgis33.yml?branch=master&label=Ubuntu%2020.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+12+and+PostGIS+3.3%22
.. |12_33_jammy| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres12_postgis33.yml?branch=master&label=Ubuntu%2022.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+12+and+PostGIS+3.3%22
.. |13_33_focal| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres13_postgis33.yml?branch=master&label=Ubuntu%2020.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+13+and+PostGIS+3.3%22
+--------------------+-----------------------+-------------------------+
| | PostGIS 3.3 | W/O PostGIS |
+--------------------+------------------------+------------------------+
| PostgreSQL 13 | |13_33_jammy| | |13_33_jammy| |
+--------------------+------------------------+------------------------+
| PostgreSQL 14 | |14_33_jammy| | |14_33_jammy| |
+--------------------+------------------------+------------------------+
| PostgreSQL 15 | |15_33_jammy| | |15_33_jammy| |
+--------------------+------------------------+------------------------+
| PostgreSQL 16 | |16_33_jammy| | |16_33_jammy| |
+--------------------+-----------------------+-------------------------+
.. |13_33_jammy| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres13_postgis33.yml?branch=master&label=Ubuntu%2022.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+13+and+PostGIS+3.3%22
.. |14_33_focal| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres14_postgis33.yml?branch=master&label=Ubuntu%2020.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+14+and+PostGIS+3.3%22
.. |14_33_jammy| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres14_postgis33.yml?branch=master&label=Ubuntu%2022.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+14+and+PostGIS+3.3%22
.. |15_33_focal| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres15_postgis33.yml?branch=master&label=Ubuntu%2020.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+15+and+PostGIS+3.3%22
.. |15_33_jammy| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres15_postgis33.yml?branch=master&label=Ubuntu%2022.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+15+and+PostGIS+3.3%22
.. |16_33_jammy| image:: https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres16_postgis33.yml?branch=master&label=Ubuntu%2022.04&logo=github&style=plastic :target: https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+16+and+PostGIS+3.3%22

View File

@ -85,7 +85,6 @@ pgPointcloud is directly included in the `PostGIS`_ bundle.
Debian packages are now `available`_ on:
- Ubuntu 20.04
- Ubuntu 22.04
- Debian Testing
- Debian Unstable

View File

@ -177,39 +177,6 @@ each point in the patch.
{"pcid":1,"pt":[-126.41,45.59,59,5]} | 7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PatchAvg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PatchAvg(p pcpatch, dimname text) returns numeric:
Reads the values of the requested dimension for all points in the patch and
returns the average of those values. Dimension name must exist in the schema.
.. code-block::
SELECT PC_PatchAvg(pa, 'intensity')
FROM patches WHERE id = 7;
5.0000000000000000
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PatchMax
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PatchMax(p pcpatch, dimname text) returns numeric:
Reads the values of the requested dimension for all points in the patch and
returns the maximum of those values. Dimension name must exist in the schema.
.. code-block::
SELECT PC_PatchMax(pa, 'x')
FROM patches WHERE id = 7;
-126.41
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_PatchMin
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -241,6 +208,18 @@ Returns a PcPoint with the minimum values of each dimension in the patch.
PC_PatchAvg
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PatchAvg(p pcpatch, dimname text) returns numeric:
Reads the values of the requested dimension for all points in the patch and
returns the average of those values. Dimension name must exist in the schema.
.. code-block::
SELECT PC_PatchAvg(pa, 'intensity')
FROM patches WHERE id = 7;
5.0000000000000000
:PC_PatchAvg(p pcpatch) returns pcpoint:
Returns a PcPoint with the average values of each dimension in the patch.
@ -256,6 +235,18 @@ Returns a PcPoint with the average values of each dimension in the patch.
PC_PatchMax
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:PC_PatchMax(p pcpatch, dimname text) returns numeric:
Reads the values of the requested dimension for all points in the patch and
returns the maximum of those values. Dimension name must exist in the schema.
.. code-block::
SELECT PC_PatchMax(pa, 'x')
FROM patches WHERE id = 7;
-126.41
:PC_PatchMax(p pcpatch) returns pcpoint:
Returns a PcPoint with the maximum values of each dimension in the patch.
@ -267,7 +258,6 @@ Returns a PcPoint with the maximum values of each dimension in the patch.
{"pcid":1,"pt":[-126.41,45.59,59,5]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterGreaterThan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -284,7 +274,6 @@ value for the requested dimension.
{"pcid":1,"pts":[[-126.42,45.58,58,5],[-126.41,45.59,59,5]]}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
PC_FilterLessThan
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

View File

@ -1,12 +1,5 @@
/*
* basic.css
* ~~~~~~~~~
*
* Sphinx stylesheet -- basic theme.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
/* -- main layout ----------------------------------------------------------- */
@ -115,15 +108,11 @@ img {
/* -- search page ----------------------------------------------------------- */
ul.search {
margin: 10px 0 0 20px;
padding: 0;
margin-top: 10px;
}
ul.search li {
padding: 5px 0 5px 20px;
background-image: url(file.png);
background-repeat: no-repeat;
background-position: 0 7px;
padding: 5px 0;
}
ul.search li a {
@ -237,6 +226,10 @@ a.headerlink {
visibility: hidden;
}
a:visited {
color: #551A8B;
}
h1:hover > a.headerlink,
h2:hover > a.headerlink,
h3:hover > a.headerlink,

View File

@ -1 +1 @@
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}
.clearfix{*zoom:1}.clearfix:after,.clearfix:before{display:table;content:""}.clearfix:after{clear:both}@font-face{font-family:FontAwesome;font-style:normal;font-weight:400;src:url(fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713?#iefix) format("embedded-opentype"),url(fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"),url(fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"),url(fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"),url(fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde#FontAwesome) format("svg")}.fa:before{font-family:FontAwesome;font-style:normal;font-weight:400;line-height:1}.fa:before,a .fa{text-decoration:inherit}.fa:before,a .fa,li .fa{display:inline-block}li .fa-large:before{width:1.875em}ul.fas{list-style-type:none;margin-left:2em;text-indent:-.8em}ul.fas li .fa{width:.8em}ul.fas li .fa-large:before{vertical-align:baseline}.fa-book:before,.icon-book:before{content:"\f02d"}.fa-caret-down:before,.icon-caret-down:before{content:"\f0d7"}.fa-caret-up:before,.icon-caret-up:before{content:"\f0d8"}.fa-caret-left:before,.icon-caret-left:before{content:"\f0d9"}.fa-caret-right:before,.icon-caret-right:before{content:"\f0da"}.rst-versions{position:fixed;bottom:0;left:0;width:300px;color:#fcfcfc;background:#1f1d1d;font-family:Lato,proxima-nova,Helvetica Neue,Arial,sans-serif;z-index:400}.rst-versions a{color:#2980b9;text-decoration:none}.rst-versions .rst-badge-small{display:none}.rst-versions .rst-current-version{padding:12px;background-color:#272525;display:block;text-align:right;font-size:90%;cursor:pointer;color:#27ae60}.rst-versions .rst-current-version:after{clear:both;content:"";display:block}.rst-versions .rst-current-version .fa{color:#fcfcfc}.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{float:left}.rst-versions .rst-current-version.rst-out-of-date{background-color:#e74c3c;color:#fff}.rst-versions .rst-current-version.rst-active-old-version{background-color:#f1c40f;color:#000}.rst-versions.shift-up{height:auto;max-height:100%;overflow-y:scroll}.rst-versions.shift-up .rst-other-versions{display:block}.rst-versions .rst-other-versions{font-size:90%;padding:12px;color:grey;display:none}.rst-versions .rst-other-versions hr{display:block;height:1px;border:0;margin:20px 0;padding:0;border-top:1px solid #413d3d}.rst-versions .rst-other-versions dd{display:inline-block;margin:0}.rst-versions .rst-other-versions dd a{display:inline-block;padding:6px;color:#fcfcfc}.rst-versions .rst-other-versions .rtd-current-item{font-weight:700}.rst-versions.rst-badge{width:auto;bottom:20px;right:20px;left:auto;border:none;max-width:300px;max-height:90%}.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{float:none;line-height:30px}.rst-versions.rst-badge.shift-up .rst-current-version{text-align:right}.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{float:left}.rst-versions.rst-badge>.rst-current-version{width:auto;height:30px;line-height:30px;padding:0 6px;display:block;text-align:center}@media screen and (max-width:768px){.rst-versions{width:85%;display:none}.rst-versions.shift{display:block}}#flyout-search-form{padding:6px}

File diff suppressed because one or more lines are too long

View File

@ -1,12 +1,5 @@
/*
* doctools.js
* ~~~~~~~~~~~
*
* Base JavaScript utilities for all Sphinx HTML documentation.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";

View File

@ -1,5 +1,4 @@
var DOCUMENTATION_OPTIONS = {
URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'),
const DOCUMENTATION_OPTIONS = {
VERSION: '1.2.5',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +0,0 @@
/**
* @preserve HTML5 Shiv 3.7.3-pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=y.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=y.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),y.elements=c+" "+a,j(b)}function f(a){var b=x[a[v]];return b||(b={},w++,a[v]=w,x[w]=b),b}function g(a,c,d){if(c||(c=b),q)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():u.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||t.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),q)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return y.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(y,b.frag)}function j(a){a||(a=b);var d=f(a);return!y.shivCSS||p||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),q||i(a,d),a}function k(a){for(var b,c=a.getElementsByTagName("*"),e=c.length,f=RegExp("^(?:"+d().join("|")+")$","i"),g=[];e--;)b=c[e],f.test(b.nodeName)&&g.push(b.applyElement(l(b)));return g}function l(a){for(var b,c=a.attributes,d=c.length,e=a.ownerDocument.createElement(A+":"+a.nodeName);d--;)b=c[d],b.specified&&e.setAttribute(b.nodeName,b.nodeValue);return e.style.cssText=a.style.cssText,e}function m(a){for(var b,c=a.split("{"),e=c.length,f=RegExp("(^|[\\s,>+~])("+d().join("|")+")(?=[[\\s,>+~#.:]|$)","gi"),g="$1"+A+"\\:$2";e--;)b=c[e]=c[e].split("}"),b[b.length-1]=b[b.length-1].replace(f,g),c[e]=b.join("}");return c.join("{")}function n(a){for(var b=a.length;b--;)a[b].removeNode()}function o(a){function b(){clearTimeout(g._removeSheetTimer),d&&d.removeNode(!0),d=null}var d,e,g=f(a),h=a.namespaces,i=a.parentWindow;return!B||a.printShived?a:("undefined"==typeof h[A]&&h.add(A),i.attachEvent("onbeforeprint",function(){b();for(var f,g,h,i=a.styleSheets,j=[],l=i.length,n=Array(l);l--;)n[l]=i[l];for(;h=n.pop();)if(!h.disabled&&z.test(h.media)){try{f=h.imports,g=f.length}catch(o){g=0}for(l=0;g>l;l++)n.push(f[l]);try{j.push(h.cssText)}catch(o){}}j=m(j.reverse().join("")),e=k(a),d=c(a,j)}),i.attachEvent("onafterprint",function(){n(e),clearTimeout(g._removeSheetTimer),g._removeSheetTimer=setTimeout(b,500)}),a.printShived=!0,a)}var p,q,r="3.7.3",s=a.html5||{},t=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,u=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,v="_html5shiv",w=0,x={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",p="hidden"in a,q=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){p=!0,q=!0}}();var y={elements:s.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:r,shivCSS:s.shivCSS!==!1,supportsUnknownElements:q,shivMethods:s.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=y,j(b);var z=/^$|\b(?:all|print)\b/,A="html5shiv",B=!q&&function(){var c=b.documentElement;return!("undefined"==typeof b.namespaces||"undefined"==typeof b.parentWindow||"undefined"==typeof c.applyElement||"undefined"==typeof c.removeNode||"undefined"==typeof a.attachEvent)}();y.type+=" print",y.shivPrint=o,o(b),"object"==typeof module&&module.exports&&(module.exports=y)}("undefined"!=typeof window?window:this,document);

View File

@ -1,4 +0,0 @@
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3-pre",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);

228
_static/js/versions.js Normal file
View File

@ -0,0 +1,228 @@
const themeFlyoutDisplay = "hidden";
const themeVersionSelector = true;
const themeLanguageSelector = true;
if (themeFlyoutDisplay === "attached") {
function renderLanguages(config) {
if (!config.projects.translations.length) {
return "";
}
// Insert the current language to the options on the selector
let languages = config.projects.translations.concat(config.projects.current);
languages = languages.sort((a, b) => a.language.name.localeCompare(b.language.name));
const languagesHTML = `
<dl>
<dt>Languages</dt>
${languages
.map(
(translation) => `
<dd ${translation.slug == config.projects.current.slug ? 'class="rtd-current-item"' : ""}>
<a href="${translation.urls.documentation}">${translation.language.code}</a>
</dd>
`,
)
.join("\n")}
</dl>
`;
return languagesHTML;
}
function renderVersions(config) {
if (!config.versions.active.length) {
return "";
}
const versionsHTML = `
<dl>
<dt>Versions</dt>
${config.versions.active
.map(
(version) => `
<dd ${version.slug === config.versions.current.slug ? 'class="rtd-current-item"' : ""}>
<a href="${version.urls.documentation}">${version.slug}</a>
</dd>
`,
)
.join("\n")}
</dl>
`;
return versionsHTML;
}
function renderDownloads(config) {
if (!Object.keys(config.versions.current.downloads).length) {
return "";
}
const downloadsNameDisplay = {
pdf: "PDF",
epub: "Epub",
htmlzip: "HTML",
};
const downloadsHTML = `
<dl>
<dt>Downloads</dt>
${Object.entries(config.versions.current.downloads)
.map(
([name, url]) => `
<dd>
<a href="${url}">${downloadsNameDisplay[name]}</a>
</dd>
`,
)
.join("\n")}
</dl>
`;
return downloadsHTML;
}
document.addEventListener("readthedocs-addons-data-ready", function (event) {
const config = event.detail.data();
const flyout = `
<div class="rst-versions" data-toggle="rst-versions" role="note">
<span class="rst-current-version" data-toggle="rst-current-version">
<span class="fa fa-book"> Read the Docs</span>
v: ${config.versions.current.slug}
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<div class="injected">
${renderLanguages(config)}
${renderVersions(config)}
${renderDownloads(config)}
<dl>
<dt>On Read the Docs</dt>
<dd>
<a href="${config.projects.current.urls.home}">Project Home</a>
</dd>
<dd>
<a href="${config.projects.current.urls.builds}">Builds</a>
</dd>
<dd>
<a href="${config.projects.current.urls.downloads}">Downloads</a>
</dd>
</dl>
<dl>
<dt>Search</dt>
<dd>
<form id="flyout-search-form">
<input
class="wy-form"
type="text"
name="q"
aria-label="Search docs"
placeholder="Search docs"
/>
</form>
</dd>
</dl>
<hr />
<small>
<span>Hosted by <a href="https://about.readthedocs.org/?utm_source=&utm_content=flyout">Read the Docs</a></span>
</small>
</div>
</div>
`;
// Inject the generated flyout into the body HTML element.
document.body.insertAdjacentHTML("beforeend", flyout);
// Trigger the Read the Docs Addons Search modal when clicking on the "Search docs" input from inside the flyout.
document
.querySelector("#flyout-search-form")
.addEventListener("focusin", () => {
const event = new CustomEvent("readthedocs-search-show");
document.dispatchEvent(event);
});
})
}
if (themeLanguageSelector || themeVersionSelector) {
function onSelectorSwitch(event) {
const option = event.target.selectedIndex;
const item = event.target.options[option];
window.location.href = item.dataset.url;
}
document.addEventListener("readthedocs-addons-data-ready", function (event) {
const config = event.detail.data();
const versionSwitch = document.querySelector(
"div.switch-menus > div.version-switch",
);
if (themeVersionSelector) {
let versions = config.versions.active;
if (config.versions.current.hidden || config.versions.current.type === "external") {
versions.unshift(config.versions.current);
}
const versionSelect = `
<select>
${versions
.map(
(version) => `
<option
value="${version.slug}"
${config.versions.current.slug === version.slug ? 'selected="selected"' : ""}
data-url="${version.urls.documentation}">
${version.slug}
</option>`,
)
.join("\n")}
</select>
`;
versionSwitch.innerHTML = versionSelect;
versionSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
}
const languageSwitch = document.querySelector(
"div.switch-menus > div.language-switch",
);
if (themeLanguageSelector) {
if (config.projects.translations.length) {
// Add the current language to the options on the selector
let languages = config.projects.translations.concat(
config.projects.current,
);
languages = languages.sort((a, b) =>
a.language.name.localeCompare(b.language.name),
);
const languageSelect = `
<select>
${languages
.map(
(language) => `
<option
value="${language.language.code}"
${config.projects.current.slug === language.slug ? 'selected="selected"' : ""}
data-url="${language.urls.documentation}">
${language.language.name}
</option>`,
)
.join("\n")}
</select>
`;
languageSwitch.innerHTML = languageSelect;
languageSwitch.firstElementChild.addEventListener("change", onSelectorSwitch);
}
else {
languageSwitch.remove();
}
}
});
}
document.addEventListener("readthedocs-addons-data-ready", function (event) {
// Trigger the Read the Docs Addons Search modal when clicking on "Search docs" input from the topnav.
document
.querySelector("[role='search'] input")
.addEventListener("focusin", () => {
const event = new CustomEvent("readthedocs-search-show");
document.dispatchEvent(event);
});
});

View File

@ -1,19 +1,12 @@
/*
* language_data.js
* ~~~~~~~~~~~~~~~~
*
* This script contains the language-specific data used by searchtools.js,
* namely the list of stopwords, stemmer, scorer and splitter.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"];
/* Non-minified version is copied as a separate JS file, is available */
/* Non-minified version is copied as a separate JS file, if available */
/**
* Porter Stemmer

View File

@ -6,26 +6,26 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.highlight .hll { background-color: #ffffcc }
.highlight { background: #eeffcc; }
.highlight .c { color: #408090; font-style: italic } /* Comment */
.highlight .err { border: 1px solid #FF0000 } /* Error */
.highlight .err { border: 1px solid #F00 } /* Error */
.highlight .k { color: #007020; font-weight: bold } /* Keyword */
.highlight .o { color: #666666 } /* Operator */
.highlight .o { color: #666 } /* Operator */
.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #007020 } /* Comment.Preproc */
.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */
.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */
.highlight .cs { color: #408090; background-color: #FFF0F0 } /* Comment.Special */
.highlight .gd { color: #A00000 } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #FF0000 } /* Generic.Error */
.highlight .gr { color: #F00 } /* Generic.Error */
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #00A000 } /* Generic.Inserted */
.highlight .go { color: #333333 } /* Generic.Output */
.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
.highlight .go { color: #333 } /* Generic.Output */
.highlight .gp { color: #C65D09; font-weight: bold } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.highlight .gt { color: #0044DD } /* Generic.Traceback */
.highlight .gt { color: #04D } /* Generic.Traceback */
.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
@ -33,43 +33,43 @@ span.linenos.special { color: #000000; background-color: #ffffc0; padding-left:
.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #902000 } /* Keyword.Type */
.highlight .m { color: #208050 } /* Literal.Number */
.highlight .s { color: #4070a0 } /* Literal.String */
.highlight .na { color: #4070a0 } /* Name.Attribute */
.highlight .s { color: #4070A0 } /* Literal.String */
.highlight .na { color: #4070A0 } /* Name.Attribute */
.highlight .nb { color: #007020 } /* Name.Builtin */
.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60add5 } /* Name.Constant */
.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
.highlight .nc { color: #0E84B5; font-weight: bold } /* Name.Class */
.highlight .no { color: #60ADD5 } /* Name.Constant */
.highlight .nd { color: #555; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #D55537; font-weight: bold } /* Name.Entity */
.highlight .ne { color: #007020 } /* Name.Exception */
.highlight .nf { color: #06287e } /* Name.Function */
.highlight .nf { color: #06287E } /* Name.Function */
.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
.highlight .nn { color: #0E84B5; font-weight: bold } /* Name.Namespace */
.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #bb60d5 } /* Name.Variable */
.highlight .nv { color: #BB60D5 } /* Name.Variable */
.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .w { color: #BBB } /* Text.Whitespace */
.highlight .mb { color: #208050 } /* Literal.Number.Bin */
.highlight .mf { color: #208050 } /* Literal.Number.Float */
.highlight .mh { color: #208050 } /* Literal.Number.Hex */
.highlight .mi { color: #208050 } /* Literal.Number.Integer */
.highlight .mo { color: #208050 } /* Literal.Number.Oct */
.highlight .sa { color: #4070a0 } /* Literal.String.Affix */
.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070a0 } /* Literal.String.Char */
.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #c65d09 } /* Literal.String.Other */
.highlight .sa { color: #4070A0 } /* Literal.String.Affix */
.highlight .sb { color: #4070A0 } /* Literal.String.Backtick */
.highlight .sc { color: #4070A0 } /* Literal.String.Char */
.highlight .dl { color: #4070A0 } /* Literal.String.Delimiter */
.highlight .sd { color: #4070A0; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #4070A0 } /* Literal.String.Double */
.highlight .se { color: #4070A0; font-weight: bold } /* Literal.String.Escape */
.highlight .sh { color: #4070A0 } /* Literal.String.Heredoc */
.highlight .si { color: #70A0D0; font-style: italic } /* Literal.String.Interpol */
.highlight .sx { color: #C65D09 } /* Literal.String.Other */
.highlight .sr { color: #235388 } /* Literal.String.Regex */
.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
.highlight .s1 { color: #4070A0 } /* Literal.String.Single */
.highlight .ss { color: #517918 } /* Literal.String.Symbol */
.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #06287e } /* Name.Function.Magic */
.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */
.highlight .fm { color: #06287E } /* Name.Function.Magic */
.highlight .vc { color: #BB60D5 } /* Name.Variable.Class */
.highlight .vg { color: #BB60D5 } /* Name.Variable.Global */
.highlight .vi { color: #BB60D5 } /* Name.Variable.Instance */
.highlight .vm { color: #BB60D5 } /* Name.Variable.Magic */
.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */

View File

@ -1,12 +1,5 @@
/*
* searchtools.js
* ~~~~~~~~~~~~~~~~
*
* Sphinx JavaScript utilities for the full-text search.
*
* :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
"use strict";
@ -20,7 +13,7 @@ if (typeof Scorer === "undefined") {
// and returns the new score.
/*
score: result => {
const [docname, title, anchor, descr, score, filename] = result
const [docname, title, anchor, descr, score, filename, kind] = result
return score
},
*/
@ -47,6 +40,14 @@ if (typeof Scorer === "undefined") {
};
}
// Global search result kind enum, used by themes to style search results.
class SearchResultKind {
static get index() { return "index"; }
static get object() { return "object"; }
static get text() { return "text"; }
static get title() { return "title"; }
}
const _removeChildren = (element) => {
while (element && element.lastChild) element.removeChild(element.lastChild);
};
@ -57,16 +58,20 @@ const _removeChildren = (element) => {
const _escapeRegExp = (string) =>
string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string
const _displayItem = (item, searchTerms) => {
const _displayItem = (item, searchTerms, highlightTerms) => {
const docBuilder = DOCUMENTATION_OPTIONS.BUILDER;
const docUrlRoot = DOCUMENTATION_OPTIONS.URL_ROOT;
const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX;
const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX;
const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY;
const contentRoot = document.documentElement.dataset.content_root;
const [docName, title, anchor, descr, score, _filename] = item;
const [docName, title, anchor, descr, score, _filename, kind] = item;
let listItem = document.createElement("li");
// Add a class representing the item's type:
// can be used by a theme's CSS selector for styling
// See SearchResultKind for the class names.
listItem.classList.add(`kind-${kind}`);
let requestUrl;
let linkUrl;
if (docBuilder === "dirhtml") {
@ -75,28 +80,35 @@ const _displayItem = (item, searchTerms) => {
if (dirname.match(/\/index\/$/))
dirname = dirname.substring(0, dirname.length - 6);
else if (dirname === "index/") dirname = "";
requestUrl = docUrlRoot + dirname;
requestUrl = contentRoot + dirname;
linkUrl = requestUrl;
} else {
// normal html builders
requestUrl = docUrlRoot + docName + docFileSuffix;
requestUrl = contentRoot + docName + docFileSuffix;
linkUrl = docName + docLinkSuffix;
}
let linkEl = listItem.appendChild(document.createElement("a"));
linkEl.href = linkUrl + anchor;
linkEl.dataset.score = score;
linkEl.innerHTML = title;
if (descr)
if (descr) {
listItem.appendChild(document.createElement("span")).innerHTML =
" (" + descr + ")";
// highlight search terms in the description
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
}
else if (showSearchSummary)
fetch(requestUrl)
.then((responseData) => responseData.text())
.then((data) => {
if (data)
listItem.appendChild(
Search.makeSearchSummary(data, searchTerms)
Search.makeSearchSummary(data, searchTerms, anchor)
);
// highlight search terms in the summary
if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js
highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted"));
});
Search.output.appendChild(listItem);
};
@ -108,27 +120,46 @@ const _finishSearch = (resultCount) => {
"Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories."
);
else
Search.status.innerText = _(
`Search finished, found ${resultCount} page(s) matching the search query.`
);
Search.status.innerText = Documentation.ngettext(
"Search finished, found one page matching the search query.",
"Search finished, found ${resultCount} pages matching the search query.",
resultCount,
).replace('${resultCount}', resultCount);
};
const _displayNextItem = (
results,
resultCount,
searchTerms
searchTerms,
highlightTerms,
) => {
// results left, load the summary and display it
// this is intended to be dynamic (don't sub resultsCount)
if (results.length) {
_displayItem(results.pop(), searchTerms);
_displayItem(results.pop(), searchTerms, highlightTerms);
setTimeout(
() => _displayNextItem(results, resultCount, searchTerms),
() => _displayNextItem(results, resultCount, searchTerms, highlightTerms),
5
);
}
// search finished, update title and status message
else _finishSearch(resultCount);
};
// Helper function used by query() to order search results.
// Each input is an array of [docname, title, anchor, descr, score, filename, kind].
// Order the results by score (in opposite order of appearance, since the
// `_displayNextItem` function uses pop() to retrieve items) and then alphabetically.
const _orderResultsByScoreThenName = (a, b) => {
const leftScore = a[4];
const rightScore = b[4];
if (leftScore === rightScore) {
// same score: sort alphabetically
const leftTitle = a[1].toLowerCase();
const rightTitle = b[1].toLowerCase();
if (leftTitle === rightTitle) return 0;
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
}
return leftScore > rightScore ? 1 : -1;
};
/**
* Default splitQuery function. Can be overridden in ``sphinx.search`` with a
@ -152,13 +183,26 @@ const Search = {
_queued_query: null,
_pulse_status: -1,
htmlToText: (htmlString) => {
htmlToText: (htmlString, anchor) => {
const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html');
htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() });
for (const removalQuery of [".headerlink", "script", "style"]) {
htmlElement.querySelectorAll(removalQuery).forEach((el) => { el.remove() });
}
if (anchor) {
const anchorContent = htmlElement.querySelector(`[role="main"] ${anchor}`);
if (anchorContent) return anchorContent.textContent;
console.warn(
`Anchored content block not found. Sphinx search tries to obtain it via DOM query '[role=main] ${anchor}'. Check your theme or template.`
);
}
// if anchor not specified or not found, fall back to main content
const docContent = htmlElement.querySelector('[role="main"]');
if (docContent !== undefined) return docContent.textContent;
if (docContent) return docContent.textContent;
console.warn(
"Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template."
"Content block not found. Sphinx search tries to obtain it via DOM query '[role=main]'. Check your theme or template."
);
return "";
},
@ -211,6 +255,7 @@ const Search = {
searchSummary.classList.add("search-summary");
searchSummary.innerText = "";
const searchList = document.createElement("ul");
searchList.setAttribute("role", "list");
searchList.classList.add("search");
const out = document.getElementById("search-results");
@ -231,16 +276,7 @@ const Search = {
else Search.deferQuery(query);
},
/**
* execute search (requires search index to be loaded)
*/
query: (query) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
const allTitles = Search._index.alltitles;
const indexEntries = Search._index.indexentries;
_parseQuery: (query) => {
// stem the search terms and add them to the correct list
const stemmer = new Stemmer();
const searchTerms = new Set();
@ -276,22 +312,40 @@ const Search = {
// console.info("required: ", [...searchTerms]);
// console.info("excluded: ", [...excludedTerms]);
// array of [docname, title, anchor, descr, score, filename]
let results = [];
return [query, searchTerms, excludedTerms, highlightTerms, objectTerms];
},
/**
* execute search (requires search index to be loaded)
*/
_performSearch: (query, searchTerms, excludedTerms, highlightTerms, objectTerms) => {
const filenames = Search._index.filenames;
const docNames = Search._index.docnames;
const titles = Search._index.titles;
const allTitles = Search._index.alltitles;
const indexEntries = Search._index.indexentries;
// Collect multiple result groups to be sorted separately and then ordered.
// Each is an array of [docname, title, anchor, descr, score, filename, kind].
const normalResults = [];
const nonMainIndexResults = [];
_removeChildren(document.getElementById("search-progress"));
const queryLower = query.toLowerCase();
const queryLower = query.toLowerCase().trim();
for (const [title, foundTitles] of Object.entries(allTitles)) {
if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) {
if (title.toLowerCase().trim().includes(queryLower) && (queryLower.length >= title.length/2)) {
for (const [file, id] of foundTitles) {
let score = Math.round(100 * queryLower.length / title.length)
results.push([
const score = Math.round(Scorer.title * queryLower.length / title.length);
const boost = titles[file] === title ? 1 : 0; // add a boost for document titles
normalResults.push([
docNames[file],
titles[file] !== title ? `${titles[file]} > ${title}` : title,
id !== null ? "#" + id : "",
null,
score,
score + boost,
filenames[file],
SearchResultKind.title,
]);
}
}
@ -300,46 +354,48 @@ const Search = {
// search for explicit entries in index directives
for (const [entry, foundEntries] of Object.entries(indexEntries)) {
if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) {
for (const [file, id] of foundEntries) {
let score = Math.round(100 * queryLower.length / entry.length)
results.push([
for (const [file, id, isMain] of foundEntries) {
const score = Math.round(100 * queryLower.length / entry.length);
const result = [
docNames[file],
titles[file],
id ? "#" + id : "",
null,
score,
filenames[file],
]);
SearchResultKind.index,
];
if (isMain) {
normalResults.push(result);
} else {
nonMainIndexResults.push(result);
}
}
}
}
// lookup as object
objectTerms.forEach((term) =>
results.push(...Search.performObjectSearch(term, objectTerms))
normalResults.push(...Search.performObjectSearch(term, objectTerms))
);
// lookup as search terms in fulltext
results.push(...Search.performTermsSearch(searchTerms, excludedTerms));
normalResults.push(...Search.performTermsSearch(searchTerms, excludedTerms));
// let the scorer override scores with a custom scoring function
if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item)));
if (Scorer.score) {
normalResults.forEach((item) => (item[4] = Scorer.score(item)));
nonMainIndexResults.forEach((item) => (item[4] = Scorer.score(item)));
}
// now sort the results by score (in opposite order of appearance, since the
// display function below uses pop() to retrieve items) and then
// alphabetically
results.sort((a, b) => {
const leftScore = a[4];
const rightScore = b[4];
if (leftScore === rightScore) {
// same score: sort alphabetically
const leftTitle = a[1].toLowerCase();
const rightTitle = b[1].toLowerCase();
if (leftTitle === rightTitle) return 0;
return leftTitle > rightTitle ? -1 : 1; // inverted is intentional
}
return leftScore > rightScore ? 1 : -1;
});
// Sort each group of results by score and then alphabetically by name.
normalResults.sort(_orderResultsByScoreThenName);
nonMainIndexResults.sort(_orderResultsByScoreThenName);
// Combine the result groups in (reverse) order.
// Non-main index entries are typically arbitrary cross-references,
// so display them after other results.
let results = [...nonMainIndexResults, ...normalResults];
// remove duplicate search results
// note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept
@ -353,14 +409,19 @@ const Search = {
return acc;
}, []);
results = results.reverse();
return results.reverse();
},
query: (query) => {
const [searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms] = Search._parseQuery(query);
const results = Search._performSearch(searchQuery, searchTerms, excludedTerms, highlightTerms, objectTerms);
// for debugging
//Search.lastresults = results.slice(); // a copy
// console.info("search results:", Search.lastresults);
// print the results
_displayNextItem(results, results.length, searchTerms);
_displayNextItem(results, results.length, searchTerms, highlightTerms);
},
/**
@ -424,6 +485,7 @@ const Search = {
descr,
score,
filenames[match[0]],
SearchResultKind.object,
]);
};
Object.keys(objects).forEach((prefix) =>
@ -458,14 +520,18 @@ const Search = {
// add support for partial matches
if (word.length > 2) {
const escapedWord = _escapeRegExp(word);
Object.keys(terms).forEach((term) => {
if (term.match(escapedWord) && !terms[word])
arr.push({ files: terms[term], score: Scorer.partialTerm });
});
Object.keys(titleTerms).forEach((term) => {
if (term.match(escapedWord) && !titleTerms[word])
arr.push({ files: titleTerms[word], score: Scorer.partialTitle });
});
if (!terms.hasOwnProperty(word)) {
Object.keys(terms).forEach((term) => {
if (term.match(escapedWord))
arr.push({ files: terms[term], score: Scorer.partialTerm });
});
}
if (!titleTerms.hasOwnProperty(word)) {
Object.keys(titleTerms).forEach((term) => {
if (term.match(escapedWord))
arr.push({ files: titleTerms[term], score: Scorer.partialTitle });
});
}
}
// no match but word was a required one
@ -488,9 +554,8 @@ const Search = {
// create the mapping
files.forEach((file) => {
if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1)
fileMap.get(file).push(word);
else fileMap.set(file, [word]);
if (!fileMap.has(file)) fileMap.set(file, [word]);
else if (fileMap.get(file).indexOf(word) === -1) fileMap.get(file).push(word);
});
});
@ -531,6 +596,7 @@ const Search = {
null,
score,
filenames[file],
SearchResultKind.text,
]);
}
return results;
@ -541,8 +607,8 @@ const Search = {
* search summary for a given text. keywords is a list
* of stemmed words.
*/
makeSearchSummary: (htmlText, keywords) => {
const text = Search.htmlToText(htmlText);
makeSearchSummary: (htmlText, keywords, anchor) => {
const text = Search.htmlToText(htmlText, anchor);
if (text === "") return null;
const textLower = text.toLowerCase();

View File

@ -29,14 +29,19 @@ const _highlight = (node, addItems, text, className) => {
}
span.appendChild(document.createTextNode(val.substr(pos, text.length)));
const rest = document.createTextNode(val.substr(pos + text.length));
parent.insertBefore(
span,
parent.insertBefore(
document.createTextNode(val.substr(pos + text.length)),
rest,
node.nextSibling
)
);
node.nodeValue = val.substr(0, pos);
/* There may be more occurrences of search term in this node. So call this
* function recursively on the remaining fragment.
*/
_highlight(rest, addItems, text, className);
if (isInSVG) {
const rect = document.createElementNS(
@ -140,5 +145,10 @@ const SphinxHighlight = {
},
};
_ready(SphinxHighlight.highlightSearchWords);
_ready(SphinxHighlight.initEscapeListener);
_ready(() => {
/* Do not call highlightSearchWords() when we are on the search page.
* It will highlight words from the *previous* search query.
*/
if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords();
SphinxHighlight.initEscapeListener();
});

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Community &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -98,7 +95,7 @@
<div itemprop="articleBody">
<section id="community">
<span id="id1"></span><h1>Community<a class="headerlink" href="#community" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Community<a class="headerlink" href="#community" title="Link to this heading"></a></h1>
<p>pgPointclouds community interacts through <a class="reference external" href="http://lists.osgeo.org/mailman/listinfo/pgpointcloud">Mailing List</a> and <a class="reference external" href="https://github.com/pgpointcloud/pointcloud">GitHub</a>.
The <a class="reference external" href="http://lists.osgeo.org/mailman/listinfo/pgpointcloud">Mailing List</a> communication channel is for general questions and
feedback. The <a class="reference external" href="https://github.com/pgpointcloud/pointcloud">GitHub</a> communication channel is for development activities,
@ -122,7 +119,7 @@ bug reports, and testing.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Binary Formats &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -115,7 +112,7 @@
<div itemprop="articleBody">
<section id="binary-formats">
<span id="id1"></span><h1>Binary Formats<a class="headerlink" href="#binary-formats" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Binary Formats<a class="headerlink" href="#binary-formats" title="Link to this heading"></a></h1>
<p>In order to preserve some compactness in dump files and network transmissions,
the binary formats need to retain their native compression. All binary formats
are hex-encoded before output.</p>
@ -130,7 +127,7 @@ are hex-encoded before output.</p>
<li><p>the number of points in the patch</p></li>
</ul>
<section id="point-binary">
<h2>Point Binary<a class="headerlink" href="#point-binary" title="Permalink to this heading"></a></h2>
<h2>Point Binary<a class="headerlink" href="#point-binary" title="Link to this heading"></a></h2>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">byte</span><span class="p">:</span> <span class="n">endianness</span> <span class="p">(</span><span class="mi">1</span> <span class="o">=</span> <span class="n">NDR</span><span class="p">,</span> <span class="mi">0</span> <span class="o">=</span> <span class="n">XDR</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="n">pcid</span> <span class="p">(</span><span class="n">key</span> <span class="n">to</span> <span class="n">POINTCLOUD_SCHEMAS</span><span class="p">)</span>
<span class="n">uchar</span><span class="p">[]:</span> <span class="n">pointdata</span> <span class="p">(</span><span class="n">interpret</span> <span class="n">relative</span> <span class="n">to</span> <span class="n">pcid</span><span class="p">)</span>
@ -138,9 +135,9 @@ are hex-encoded before output.</p>
</div>
</section>
<section id="patch-binary">
<h2>Patch Binary<a class="headerlink" href="#patch-binary" title="Permalink to this heading"></a></h2>
<h2>Patch Binary<a class="headerlink" href="#patch-binary" title="Link to this heading"></a></h2>
<section id="uncompressed">
<h3>Uncompressed<a class="headerlink" href="#uncompressed" title="Permalink to this heading"></a></h3>
<h3>Uncompressed<a class="headerlink" href="#uncompressed" title="Link to this heading"></a></h3>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">byte</span><span class="p">:</span> <span class="n">endianness</span> <span class="p">(</span><span class="mi">1</span> <span class="o">=</span> <span class="n">NDR</span><span class="p">,</span> <span class="mi">0</span> <span class="o">=</span> <span class="n">XDR</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="n">pcid</span> <span class="p">(</span><span class="n">key</span> <span class="n">to</span> <span class="n">POINTCLOUD_SCHEMAS</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="mi">0</span> <span class="o">=</span> <span class="n">no</span> <span class="n">compression</span>
@ -150,7 +147,7 @@ are hex-encoded before output.</p>
</div>
</section>
<section id="dimensional">
<h3>Dimensional<a class="headerlink" href="#dimensional" title="Permalink to this heading"></a></h3>
<h3>Dimensional<a class="headerlink" href="#dimensional" title="Link to this heading"></a></h3>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">byte</span><span class="p">:</span> <span class="n">endianness</span> <span class="p">(</span><span class="mi">1</span> <span class="o">=</span> <span class="n">NDR</span><span class="p">,</span> <span class="mi">0</span> <span class="o">=</span> <span class="n">XDR</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="n">pcid</span> <span class="p">(</span><span class="n">key</span> <span class="n">to</span> <span class="n">POINTCLOUD_SCHEMAS</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="mi">2</span> <span class="o">=</span> <span class="n">dimensional</span> <span class="n">compression</span>
@ -208,7 +205,7 @@ derived from the patch metadata by multiplying the dimension word size by the
number of points in the patch.</p>
</section>
<section id="laz">
<h3>LAZ<a class="headerlink" href="#laz" title="Permalink to this heading"></a></h3>
<h3>LAZ<a class="headerlink" href="#laz" title="Link to this heading"></a></h3>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">byte</span><span class="p">:</span> <span class="n">endianness</span> <span class="p">(</span><span class="mi">1</span> <span class="o">=</span> <span class="n">NDR</span><span class="p">,</span> <span class="mi">0</span> <span class="o">=</span> <span class="n">XDR</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="n">pcid</span> <span class="p">(</span><span class="n">key</span> <span class="n">to</span> <span class="n">POINTCLOUD_SCHEMAS</span><span class="p">)</span>
<span class="n">uint32</span><span class="p">:</span> <span class="mi">2</span> <span class="o">=</span> <span class="n">LAZ</span> <span class="n">compression</span>
@ -239,7 +236,7 @@ number of points in the patch.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Compressions &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -109,7 +106,7 @@
<div itemprop="articleBody">
<section id="compressions">
<span id="id1"></span><h1>Compressions<a class="headerlink" href="#compressions" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Compressions<a class="headerlink" href="#compressions" title="Link to this heading"></a></h1>
<p>One of the issues with LIDAR data is that there is a lot of it. To deal with
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
@ -132,23 +129,23 @@ use of the LAZ compression. If no compression is declared in
<code class="docutils literal notranslate"><span class="pre">&lt;pc:metadata&gt;</span></code>, then a compression of “none” is assumed.</p></li>
</ul>
<section id="dimensional-compression">
<h2>Dimensional Compression<a class="headerlink" href="#dimensional-compression" title="Permalink to this heading"></a></h2>
<h2>Dimensional Compression<a class="headerlink" href="#dimensional-compression" title="Link to this heading"></a></h2>
<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>{&quot;pcid&quot;:1,&quot;pts&quot;:[
[-126.99,45.01,1,0],[-126.98,45.02,2,0],[-126.97,45.03,3,0],
[-126.96,45.04,4,0],[-126.95,45.05,5,0],[-126.94,45.06,6,0]
]}
<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>
</pre></div>
</div>
<p>Becomes, notionally:</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span>{&quot;pcid&quot;:1,&quot;dims&quot;:[
[-126.99,-126.98,-126.97,-126.96,-126.95,-126.94],
[45.01,45.02,45.03,45.04,45.05,45.06],
[1,2,3,4,5,6],
[0,0,0,0,0,0]
]}
<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>
<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>
</pre></div>
</div>
<p>The potential benefit for compression is that each dimension has quite
@ -186,7 +183,7 @@ dimensional scheme compresses at between 3:1 and 5:1 efficiency.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Concepts &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -105,7 +102,7 @@
<div itemprop="articleBody">
<section id="concepts">
<span id="id1"></span><h1>Concepts<a class="headerlink" href="#concepts" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Concepts<a class="headerlink" href="#concepts" title="Link to this heading"></a></h1>
<p>LIDAR sensors quickly produce millions of points with large numbers of
variables measured on each point. The challenge for a point cloud database
extension is efficiently storing this data while allowing high fidelity access
@ -149,7 +146,7 @@ to the many variables stored.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Point Cloud Objects &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -110,9 +107,9 @@
<div itemprop="articleBody">
<section id="point-cloud-objects">
<span id="objects"></span><h1>Point Cloud Objects<a class="headerlink" href="#point-cloud-objects" title="Permalink to this heading"></a></h1>
<span id="objects"></span><h1>Point Cloud Objects<a class="headerlink" href="#point-cloud-objects" title="Link to this heading"></a></h1>
<section id="pcpoint">
<h2>PcPoint<a class="headerlink" href="#pcpoint" title="Permalink to this heading"></a></h2>
<h2>PcPoint<a class="headerlink" href="#pcpoint" title="Link to this heading"></a></h2>
<p>The basic point cloud type is a <code class="docutils literal notranslate"><span class="pre">PcPoint</span></code>. Every point has a (large?) number of
dimensions, but at a minimum an X and Y coordinate that place it in space.</p>
<p>Points can be rendered in a human-readable JSON form using the
@ -121,15 +118,15 @@ dimensions, but at a minimum an X and Y coordinate that place it in space.</p>
array of doubles is explained. The underlying storage of the data might not be
double, but by the time it has been extracted, scaled and offset, it is
representable as doubles.</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span>{
&quot;pcid&quot; : 1,
&quot;pt&quot; : [0.01, 0.02, 0.03, 4]
}
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="err">{</span>
<span class="w"> </span><span class="ss">&quot;pcid&quot;</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="ss">&quot;pt&quot;</span><span class="w"> </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">01</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">02</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">03</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">]</span>
<span class="err">}</span>
</pre></div>
</div>
</section>
<section id="pcpatch">
<h2>PcPatch<a class="headerlink" href="#pcpatch" title="Permalink to this heading"></a></h2>
<h2>PcPatch<a class="headerlink" href="#pcpatch" title="Link to this heading"></a></h2>
<p>The structure of database storage is such that storing billions of points as
individual records in a table is not an efficient use of resources. Instead, we
collect a group of <code class="docutils literal notranslate"><span class="pre">PcPoint</span></code> into a <code class="docutils literal notranslate"><span class="pre">PcPatch</span></code>. Each patch should hopefully
@ -140,13 +137,13 @@ of millions) of <code class="docutils literal notranslate"><span class="pre">PcP
<p>Patches can be rendered into a human-readable JSON form using the
<code class="docutils literal notranslate"><span class="pre">PC_AsText(pcpatch)</span></code> function. The “pcid” is the foreign key reference to the
<code class="docutils literal notranslate"><span class="pre">pointcloud_formats</span></code> table.</p>
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span>{
&quot;pcid&quot; : 1,
&quot;pts&quot; : [
[0.02, 0.03, 0.05, 6],
[0.02, 0.03, 0.05, 8]
]
}
<div class="highlight-sql notranslate"><div class="highlight"><pre><span></span><span class="err">{</span>
<span class="w"> </span><span class="ss">&quot;pcid&quot;</span><span class="w"> </span><span class="p">:</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span>
<span class="w"> </span><span class="ss">&quot;pts&quot;</span><span class="w"> </span><span class="p">:</span><span class="w"> </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">02</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">03</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">05</span><span class="p">,</span><span class="w"> </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">02</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">03</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">05</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">]</span>
<span class="w"> </span><span class="p">]</span>
<span class="err">}</span>
</pre></div>
</div>
</section>
@ -169,7 +166,7 @@ of millions) of <code class="docutils literal notranslate"><span class="pre">PcP
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Schemas &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -106,7 +103,7 @@
<div itemprop="articleBody">
<section id="schemas">
<span id="id1"></span><h1>Schemas<a class="headerlink" href="#schemas" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Schemas<a class="headerlink" href="#schemas" title="Link to this heading"></a></h1>
<p>Much of the complexity in handling LIDAR comes from the need to deal with
multiple variables per point. The variables captured by LIDAR sensors varies by
sensor and capture process. Some data sets might contain only X/Y/Z values.
@ -203,7 +200,7 @@ document in the <code class="docutils literal notranslate"><span class="pre">poi
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Tables &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -106,7 +103,7 @@
<div itemprop="articleBody">
<section id="tables">
<span id="id1"></span><h1>Tables<a class="headerlink" href="#tables" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Tables<a class="headerlink" href="#tables" title="Link to this heading"></a></h1>
<p>Usually you will only be creating tables for storing <code class="docutils literal notranslate"><span class="pre">PcPatch</span></code> objects, and
using <code class="docutils literal notranslate"><span class="pre">PcPoint</span></code> objects as transitional objects for filtering, but it is
possible to create tables of both types. <code class="docutils literal notranslate"><span class="pre">PcPatch</span></code> and <code class="docutils literal notranslate"><span class="pre">PcPoint</span></code> columns
@ -165,7 +162,7 @@ database that contain point cloud objects</p></li>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>License &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -35,9 +35,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -97,7 +94,7 @@
<div itemprop="articleBody">
<section id="license">
<span id="id1"></span><h1>License<a class="headerlink" href="#license" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>License<a class="headerlink" href="#license" title="Link to this heading"></a></h1>
<p>Copyright (c) 2013 Natural Resources Canada
All rights reserved.</p>
<p>Redistribution and use in source and binary forms, with or without
@ -143,7 +140,7 @@ POSSIBILITY OF SUCH DAMAGE.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Development &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -110,11 +107,11 @@
<div itemprop="articleBody">
<section id="development">
<span id="development-index"></span><h1>Development<a class="headerlink" href="#development" title="Permalink to this heading"></a></h1>
<span id="development-index"></span><h1>Development<a class="headerlink" href="#development" title="Link to this heading"></a></h1>
<p>Developer documentation with dependancies, build instructions, how to build a
Docker image, update the documentation and run unit tests.</p>
<section id="requirements">
<h2>Requirements<a class="headerlink" href="#requirements" title="Permalink to this heading"></a></h2>
<h2>Requirements<a class="headerlink" href="#requirements" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p>PostgreSQL and PostgreSQL development packages must be installed (pg_config
and server headers). For Red Hat and Ubuntu, the package names are usually
@ -127,7 +124,7 @@ and server headers). For Red Hat and Ubuntu, the package names are usually
</ul>
</section>
<section id="build-install">
<h2>Build/Install<a class="headerlink" href="#build-install" title="Permalink to this heading"></a></h2>
<h2>Build/Install<a class="headerlink" href="#build-install" title="Link to this heading"></a></h2>
<p>After generating the configure script with <code class="docutils literal notranslate"><span class="pre">autogen.sh</span></code>, you can use
<code class="docutils literal notranslate"><span class="pre">./configure</span> <span class="pre">--help</span></code> to get a complete listing of configuration options.</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>./autogen.sh
@ -155,7 +152,7 @@ implementation instead thanks to the next directive:</p>
</div>
</section>
<section id="tests">
<h2>Tests<a class="headerlink" href="#tests" title="Permalink to this heading"></a></h2>
<h2>Tests<a class="headerlink" href="#tests" title="Link to this heading"></a></h2>
<p><strong>Unit tests</strong></p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>make<span class="w"> </span>check
</pre></div>
@ -171,7 +168,7 @@ $<span class="w"> </span><span class="nv">PGUSER</span><span class="o">=</span>a
the SQL scripts located in <code class="docutils literal notranslate"><span class="pre">pgsql/sql</span></code> in this database.</p>
</section>
<section id="write-a-loading-system">
<h2>Write a loading system<a class="headerlink" href="#write-a-loading-system" title="Permalink to this heading"></a></h2>
<h2>Write a loading system<a class="headerlink" href="#write-a-loading-system" title="Link to this heading"></a></h2>
<p>If you are writing your own loading system and want to write into Pointcloud
types, create well-known binary inputs, in uncompressed format. If your schema
indicates that your patch storage is compressed, Pointcloud will automatically
@ -184,7 +181,7 @@ ensuring that the endianness of the data matches the declared endianness of the
patch.</p>
</section>
<section id="documentation">
<h2>Documentation<a class="headerlink" href="#documentation" title="Permalink to this heading"></a></h2>
<h2>Documentation<a class="headerlink" href="#documentation" title="Link to this heading"></a></h2>
<p>Sphinx is used to build the documentation. For that, you have to install the
next Python packages:</p>
<ul class="simple">
@ -203,7 +200,7 @@ You can use <code class="docutils literal notranslate"><span class="pre">make</s
</div>
</section>
<section id="docker-image">
<h2>Docker Image<a class="headerlink" href="#docker-image" title="Permalink to this heading"></a></h2>
<h2>Docker Image<a class="headerlink" href="#docker-image" title="Link to this heading"></a></h2>
<p>A <code class="docutils literal notranslate"><span class="pre">Dockerfile</span></code> is provided in the <code class="docutils literal notranslate"><span class="pre">docker</span></code> directory and based on the
official PostgreSQL docker image available <a class="reference external" href="https://hub.docker.com/_/postgres">DockerHub</a>. The image generated
is based on PostgreSQL 14, PostGIS 3 and the laz-perf support is activated.</p>
@ -212,62 +209,34 @@ is based on PostgreSQL 14, PostGIS 3 and the laz-perf support is activated.</p>
</div>
</section>
<section id="continuous-integration">
<h2>Continuous Integration<a class="headerlink" href="#continuous-integration" title="Permalink to this heading"></a></h2>
<h2>Continuous Integration<a class="headerlink" href="#continuous-integration" title="Link to this heading"></a></h2>
<p>pgPointcloud tests are run with <a class="reference external" href="https://github.com/pgpointcloud/pointcloud/actions">Github Actions</a> on several Ubuntu versions
and with various PostgreSQL/PostGIS releases:</p>
<table class="docutils align-default">
<tbody>
<tr class="row-odd"><td></td>
<td><p>PostGIS 2.5</p></td>
<td><p>PostGIS 3.3</p></td>
<td><p>W/O PostGIS</p></td>
<td colspan="3"><p>PostGIS 3.3 | W/O PostGIS</p></td>
</tr>
<tr class="row-even"><td><p>PostgreSQL 12</p></td>
<td><p><img alt="12_25_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres12_postgis25.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+12+and+PostGIS+2.5%22" /></p></td>
<td><p><img alt="12_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres12_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+12+and+PostGIS+3.3%22" /></p>
<p><img alt="12_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres12_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+12+and+PostGIS+3.3%22" /></p>
</td>
<td><p><img alt="12_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres12_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+12+and+PostGIS+3.3%22" /></p>
<p><img alt="12_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres12_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+12+and+PostGIS+3.3%22" /></p>
</td>
<tr class="row-even"><td><p>PostgreSQL 13</p></td>
<td colspan="2"><p><img alt="13_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres13_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+13+and+PostGIS+3.3%22" /></p></td>
<td><p><img alt="13_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres13_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+13+and+PostGIS+3.3%22" /></p></td>
</tr>
<tr class="row-odd"><td><p>PostgreSQL 13</p></td>
<td></td>
<td><p><img alt="13_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres13_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+13+and+PostGIS+3.3%22" /></p>
<p><img alt="13_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres13_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+13+and+PostGIS+3.3%22" /></p>
</td>
<td><p><img alt="13_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres13_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+13+and+PostGIS+3.3%22" /></p>
<p><img alt="13_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres13_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+13+and+PostGIS+3.3%22" /></p>
</td>
<tr class="row-odd"><td><p>PostgreSQL 14</p></td>
<td colspan="2"><p><img alt="14_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres14_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+14+and+PostGIS+3.3%22" /></p></td>
<td><p><img alt="14_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres14_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+14+and+PostGIS+3.3%22" /></p></td>
</tr>
<tr class="row-even"><td><p>PostgreSQL 14</p></td>
<td></td>
<td><p><img alt="14_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres14_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+14+and+PostGIS+3.3%22" /></p>
<p><img alt="14_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres14_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+14+and+PostGIS+3.3%22" /></p>
</td>
<td><p><img alt="14_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres14_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+14+and+PostGIS+3.3%22" /></p>
<p><img alt="14_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres14_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+14+and+PostGIS+3.3%22" /></p>
</td>
<tr class="row-even"><td><p>PostgreSQL 15</p></td>
<td colspan="2"><p><img alt="15_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres15_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+15+and+PostGIS+3.3%22" /></p></td>
<td><p><img alt="15_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres15_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+15+and+PostGIS+3.3%22" /></p></td>
</tr>
<tr class="row-odd"><td><p>PostgreSQL 15</p></td>
<td></td>
<td><p><img alt="15_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres15_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+15+and+PostGIS+3.3%22" /></p>
<p><img alt="15_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres15_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+15+and+PostGIS+3.3%22" /></p>
</td>
<td><p><img alt="15_33_focal" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/focal_postgres15_postgis33.yml?branch=master&amp;label=Ubuntu%2020.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-20.04%5D+PostgreSQL+15+and+PostGIS+3.3%22" /></p>
<p><img alt="15_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres15_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+15+and+PostGIS+3.3%22" /></p>
</td>
</tr>
<tr class="row-even"><td><p>PostgreSQL 16</p></td>
<td></td>
<td><p><img alt="16_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres16_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+16+and+PostGIS+3.3%22" /></p></td>
<td><p><img alt="16_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres16_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+16+and+PostGIS+3.3%22" /></p></td>
<tr class="row-odd"><td><p>PostgreSQL 16</p></td>
<td colspan="3"><p><img alt="16_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres16_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+16+and+PostGIS+3.3%22" /> | <img alt="16_33_jammy" src="https://img.shields.io/github/actions/workflow/status/pgpointcloud/pointcloud/jammy_postgres16_postgis33.yml?branch=master&amp;label=Ubuntu%2022.04&amp;logo=github&amp;style=plastic:target:https://github.com/pgpointcloud/pointcloud/actions?query=workflow%3A%22%5Bubuntu-22.04%5D+PostgreSQL+16+and+PostGIS+3.3%22" /></p></td>
</tr>
</tbody>
</table>
</section>
<section id="release">
<h2>Release<a class="headerlink" href="#release" title="Permalink to this heading"></a></h2>
<h2>Release<a class="headerlink" href="#release" title="Link to this heading"></a></h2>
<p>Steps for releasing a new version of Pointcloud:</p>
<ol class="arabic simple">
<li><p>Add a new section to the <code class="docutils literal notranslate"><span class="pre">NEWS</span></code> file, listing all the changes associated
@ -287,7 +256,7 @@ GitHub:</p></li>
</div>
</section>
<section id="valgrind-memcheck">
<h2>Valgrind memcheck<a class="headerlink" href="#valgrind-memcheck" title="Permalink to this heading"></a></h2>
<h2>Valgrind memcheck<a class="headerlink" href="#valgrind-memcheck" title="Link to this heading"></a></h2>
<p>For checking the memory management of pgPointcloud extension, <code class="docutils literal notranslate"><span class="pre">Valgrind</span></code> can
be used with <code class="docutils literal notranslate"><span class="pre">PostgreSQL</span></code> in single-user mode.</p>
<p>But first, its necessary to compile the extension with debug symbols and
@ -314,7 +283,7 @@ for Debian based distributions with PostgreSQL 13 and PostGIS 3:</p>
<p>Then Valgrinds report is available in <code class="docutils literal notranslate"><span class="pre">/tmp/valgrind.log</span></code>.</p>
</section>
<section id="gdb-interactive-mode">
<h2>GDB interactive mode<a class="headerlink" href="#gdb-interactive-mode" title="Permalink to this heading"></a></h2>
<h2>GDB interactive mode<a class="headerlink" href="#gdb-interactive-mode" title="Link to this heading"></a></h2>
<p>GDB may be attached to a running session for debugging purpose:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>psql<span class="w"> </span>mydatabase
<span class="go">psql (14.5)</span>
@ -354,7 +323,7 @@ usual (step by step, backtrace, …).</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Download &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -105,7 +102,7 @@
<div itemprop="articleBody">
<section id="download">
<span id="id1"></span><h1>Download<a class="headerlink" href="#download" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Download<a class="headerlink" href="#download" title="Link to this heading"></a></h1>
<nav class="contents" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
@ -121,13 +118,13 @@
</ul>
</nav>
<section id="current-release-s">
<h2>Current Release(s)<a class="headerlink" href="#current-release-s" title="Permalink to this heading"></a></h2>
<h2>Current Release(s)<a class="headerlink" href="#current-release-s" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p><strong>19-09-2023</strong> <a class="reference external" href="https://github.com/pgpointcloud/pointcloud/archive/v1.2.5.tar.gz">pointcloud-1.2.5.tar.gz</a> (<a class="reference external" href="https://github.com/pgpointcloud/pointcloud/blob/v1.2.5/NEWS">Release Notes</a>)</p></li>
</ul>
</section>
<section id="past-releases">
<h2>Past Releases<a class="headerlink" href="#past-releases" title="Permalink to this heading"></a></h2>
<h2>Past Releases<a class="headerlink" href="#past-releases" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p><strong>26-09-2022</strong> <a class="reference external" href="https://github.com/pgpointcloud/pointcloud/archive/v1.2.4.tar.gz">pointcloud-1.2.4.tar.gz</a></p></li>
<li><p><strong>12-09-2022</strong> <a class="reference external" href="https://github.com/pgpointcloud/pointcloud/archive/v1.2.3.tar.gz">pointcloud-1.2.3.tar.gz</a></p></li>
@ -141,7 +138,7 @@
</ul>
</section>
<section id="development-source">
<span id="source"></span><h2>Development Source<a class="headerlink" href="#development-source" title="Permalink to this heading"></a></h2>
<span id="source"></span><h2>Development Source<a class="headerlink" href="#development-source" title="Link to this heading"></a></h2>
<p>The source code repository for pgPointcloud is on <a class="reference external" href="https://github.com/pgpointcloud/pointcloud/">GitHub</a>. You can retrieve
the development version with <code class="docutils literal notranslate"><span class="pre">git</span></code>:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>git<span class="w"> </span>clone<span class="w"> </span>https://github.com/pgpointcloud/pointcloud/
@ -149,7 +146,7 @@ the development version with <code class="docutils literal notranslate"><span cl
</div>
</section>
<section id="docker-hub">
<h2>Docker Hub<a class="headerlink" href="#docker-hub" title="Permalink to this heading"></a></h2>
<h2>Docker Hub<a class="headerlink" href="#docker-hub" title="Link to this heading"></a></h2>
<p>An official Docker image is available on <a class="reference external" href="https://hub.docker.com/r/pgpointcloud/pointcloud">Docker Hub</a>. To retrieve the
development version:</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>docker<span class="w"> </span>pull<span class="w"> </span>pgpointcloud/pointcloud
@ -157,14 +154,13 @@ development version:</p>
</div>
</section>
<section id="binaries">
<h2>Binaries<a class="headerlink" href="#binaries" title="Permalink to this heading"></a></h2>
<h2>Binaries<a class="headerlink" href="#binaries" title="Link to this heading"></a></h2>
<p><strong>Windows</strong></p>
<p>pgPointcloud is directly included in the <a class="reference external" href="https://postgis.net/windows_downloads/">PostGIS</a> bundle.</p>
<p><strong>Debian</strong></p>
<p>Debian packages are now <a class="reference external" href="https://tracker.debian.org/pkg/pgpointcloud">available</a> on:</p>
<blockquote>
<div><ul class="simple">
<li><p>Ubuntu 20.04</p></li>
<li><p>Ubuntu 22.04</p></li>
<li><p>Debian Testing</p></li>
<li><p>Debian Unstable</p></li>
@ -193,7 +189,7 @@ development version:</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>FAQ &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -98,7 +95,7 @@
<div itemprop="articleBody">
<section id="faq">
<span id="id1"></span><h1>FAQ<a class="headerlink" href="#faq" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>FAQ<a class="headerlink" href="#faq" title="Link to this heading"></a></h1>
<p><strong>What can be done with pgPointcloud?</strong></p>
<blockquote>
<div><ul class="simple">
@ -179,7 +176,7 @@ time) with a 5 billions points cloud.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Functions &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -104,7 +101,7 @@
<div itemprop="articleBody">
<section id="functions">
<span id="id1"></span><h1>Functions<a class="headerlink" href="#functions" title="Permalink to this heading"></a></h1>
<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="points.html">PcPoint</a><ul>
@ -126,11 +123,9 @@
<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-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-patchmin">PC_PatchMin</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#id1">PC_PatchAvg</a></li>
<li class="toctree-l2"><a class="reference internal" href="patchs.html#id2">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>
@ -180,7 +175,7 @@
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>PcPatch &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -70,11 +67,9 @@
<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-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-patchmin">PC_PatchMin</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id1">PC_PatchAvg</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id2">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>
@ -134,9 +129,9 @@
<div itemprop="articleBody">
<section id="pcpatch">
<span id="patchs"></span><h1>PcPatch<a class="headerlink" href="#pcpatch" title="Permalink to this heading"></a></h1>
<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="Permalink to this heading"></a></h2>
<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>
@ -148,7 +143,7 @@
</div>
</section>
<section id="pc-makepatch">
<h2>PC_MakePatch<a class="headerlink" href="#pc-makepatch" title="Permalink to this heading"></a></h2>
<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>
@ -165,7 +160,7 @@ dimensions.</p>
</div>
</section>
<section id="pc-numpoints">
<h2>PC_NumPoints<a class="headerlink" href="#pc-numpoints" title="Permalink to this heading"></a></h2>
<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>
@ -178,7 +173,7 @@ dimensions.</p>
</div>
</section>
<section id="pc-pcid">
<h2>PC_PCId<a class="headerlink" href="#pc-pcid" title="Permalink to this heading"></a></h2>
<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>
@ -191,7 +186,7 @@ dimensions.</p>
</div>
</section>
<section id="pc-astext">
<h2>PC_AsText<a class="headerlink" href="#pc-astext" title="Permalink to this heading"></a></h2>
<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>
@ -208,7 +203,7 @@ dimensions.</p>
</div>
</section>
<section id="pc-summary">
<h2>PC_Summary<a class="headerlink" href="#pc-summary" title="Permalink to this heading"></a></h2>
<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>
@ -221,7 +216,7 @@ dimensions.</p>
</div>
</section>
<section id="pc-uncompress">
<h2>PC_Uncompress<a class="headerlink" href="#pc-uncompress" title="Permalink to this heading"></a></h2>
<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>
@ -239,7 +234,7 @@ returning.</p>
</div>
</section>
<section id="pc-union">
<h2>PC_Union<a class="headerlink" href="#pc-union" title="Permalink to this heading"></a></h2>
<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>
@ -254,7 +249,7 @@ returning.</p>
</div>
</section>
<section id="pc-intersects">
<h2>PC_Intersects<a class="headerlink" href="#pc-intersects" title="Permalink to this heading"></a></h2>
<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>
@ -270,7 +265,7 @@ returning.</p>
</div>
</section>
<section id="pc-explode">
<h2>PC_Explode<a class="headerlink" href="#pc-explode" title="Permalink to this heading"></a></h2>
<h2>PC_Explode<a class="headerlink" href="#pc-explode" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Explode(p pcpatch) returns SetOf[pcpoint]<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -295,38 +290,8 @@ each point in the patch.</p>
</pre></div>
</div>
</section>
<section id="pc-patchavg">
<h2>PC_PatchAvg<a class="headerlink" href="#pc-patchavg" title="Permalink to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchAvg(p pcpatch, dimname text) returns numeric<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 average 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_PatchAvg</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;intensity&#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="mf">5.0000000000000000</span>
</pre></div>
</div>
</section>
<section id="pc-patchmax">
<h2>PC_PatchMax<a class="headerlink" href="#pc-patchmax" title="Permalink to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchMax(p pcpatch, dimname text) returns numeric<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 maximum 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_PatchMax</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;x&#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="o">-</span><span class="mf">126.41</span>
</pre></div>
</div>
</section>
<section id="pc-patchmin">
<h2>PC_PatchMin<a class="headerlink" href="#pc-patchmin" title="Permalink to this heading"></a></h2>
<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_PatchMin(p pcpatch, dimname text) returns numeric<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -351,8 +316,20 @@ returns the minimum of those values. Dimension name must exist in the schema.</p
</pre></div>
</div>
</section>
<section id="id1">
<h2>PC_PatchAvg<a class="headerlink" href="#id1" title="Permalink to this heading"></a></h2>
<section id="pc-patchavg">
<h2>PC_PatchAvg<a class="headerlink" href="#pc-patchavg" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchAvg(p pcpatch, dimname text) returns numeric<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 average 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_PatchAvg</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;intensity&#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="mf">5.0000000000000000</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchAvg(p pcpatch) returns pcpoint<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -365,8 +342,20 @@ returns the minimum of those values. Dimension name must exist in the schema.</p
</pre></div>
</div>
</section>
<section id="id2">
<h2>PC_PatchMax<a class="headerlink" href="#id2" title="Permalink to this heading"></a></h2>
<section id="pc-patchmax">
<h2>PC_PatchMax<a class="headerlink" href="#pc-patchmax" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchMax(p pcpatch, dimname text) returns numeric<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 maximum 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_PatchMax</span><span class="p">(</span><span class="n">pa</span><span class="p">,</span> <span class="s1">&#39;x&#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="o">-</span><span class="mf">126.41</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">PC_PatchMax(p pcpatch) returns pcpoint<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -380,7 +369,7 @@ returns the minimum of those values. Dimension name must exist in the schema.</p
</div>
</section>
<section id="pc-filtergreaterthan">
<h2>PC_FilterGreaterThan<a class="headerlink" href="#pc-filtergreaterthan" title="Permalink to this heading"></a></h2>
<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>
@ -395,7 +384,7 @@ value for the requested dimension.</p>
</div>
</section>
<section id="pc-filterlessthan">
<h2>PC_FilterLessThan<a class="headerlink" href="#pc-filterlessthan" title="Permalink to this heading"></a></h2>
<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>
<dd class="field-odd"><p></p></dd>
@ -404,7 +393,7 @@ value for the requested dimension.</p>
for the requested dimension.</p>
</section>
<section id="pc-filterbetween">
<h2>PC_FilterBetween<a class="headerlink" href="#pc-filterbetween" title="Permalink to this heading"></a></h2>
<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>
@ -413,7 +402,7 @@ for the requested dimension.</p>
supplied values for the requested dimension.</p>
</section>
<section id="pc-filterequals">
<h2>PC_FilterEquals<a class="headerlink" href="#pc-filterequals" title="Permalink to this heading"></a></h2>
<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>
@ -422,7 +411,7 @@ supplied values for the requested dimension.</p>
values for the requested dimension.</p>
</section>
<section id="pc-compress">
<h2>PC_Compress<a class="headerlink" href="#pc-compress" title="Permalink to this heading"></a></h2>
<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>
@ -446,7 +435,7 @@ schemes are:</p>
</ul>
</section>
<section id="pc-pointn">
<h2>PC_PointN<a class="headerlink" href="#pc-pointn" title="Permalink to this heading"></a></h2>
<h2>PC_PointN<a class="headerlink" href="#pc-pointn" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_PointN(p pcpatch, n int4) returns pcpoint<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -455,7 +444,7 @@ schemes are:</p>
point from the end.</p>
</section>
<section id="pc-issorted">
<h2>PC_IsSorted<a class="headerlink" href="#pc-issorted" title="Permalink to this heading"></a></h2>
<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>
@ -465,7 +454,7 @@ dimensions. The <code class="docutils literal notranslate"><span class="pre">str
(no duplicates).</p>
</section>
<section id="pc-sort">
<h2>PC_Sort<a class="headerlink" href="#pc-sort" title="Permalink to this heading"></a></h2>
<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>
@ -474,7 +463,7 @@ dimensions. The <code class="docutils literal notranslate"><span class="pre">str
dimensions.</p>
</section>
<section id="pc-range">
<h2>PC_Range<a class="headerlink" href="#pc-range" title="Permalink to this heading"></a></h2>
<h2>PC_Range<a class="headerlink" href="#pc-range" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Range(p pcpatch, start int4, n int4) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -483,7 +472,7 @@ dimensions.</p>
start-th point with 1-based indexing.</p>
</section>
<section id="pc-setpcid">
<h2>PC_SetPCId<a class="headerlink" href="#pc-setpcid" title="Permalink to this heading"></a></h2>
<h2>PC_SetPCId<a class="headerlink" href="#pc-setpcid" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_SetPCId(p pcpatch, pcid int4, def float8 default 0.0) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -494,7 +483,7 @@ value <code class="docutils literal notranslate"><span class="pre">def</span></c
its default value is <code class="docutils literal notranslate"><span class="pre">0.0</span></code>.</p>
</section>
<section id="pc-transform">
<h2>PC_Transform<a class="headerlink" href="#pc-transform" title="Permalink to this heading"></a></h2>
<h2>PC_Transform<a class="headerlink" href="#pc-transform" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_Transform(p pcpatch, pcid int4, def float8 default 0.0) returns pcpatch<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -509,7 +498,7 @@ 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="Permalink to this heading"></a></h2>
<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>
@ -540,7 +529,7 @@ schema.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>PcPoint &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -112,9 +109,9 @@
<div itemprop="articleBody">
<section id="pcpoint">
<span id="points"></span><h1>PcPoint<a class="headerlink" href="#pcpoint" title="Permalink to this heading"></a></h1>
<span id="points"></span><h1>PcPoint<a class="headerlink" href="#pcpoint" title="Link to this heading"></a></h1>
<section id="pc-makepoint">
<h2>PC_MakePoint<a class="headerlink" href="#pc-makepoint" title="Permalink to this heading"></a></h2>
<h2>PC_MakePoint<a class="headerlink" href="#pc-makepoint" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_MakePoint(pcid integer, vals float8[]) returns pcpoint<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -141,7 +138,7 @@ schema, construct a new pcpoint.</p>
</div>
</section>
<section id="pc-astext">
<h2>PC_AsText<a class="headerlink" href="#pc-astext" title="Permalink to this heading"></a></h2>
<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>
@ -154,7 +151,7 @@ schema, construct a new pcpoint.</p>
</div>
</section>
<section id="pc-pcid">
<h2>PC_PCId<a class="headerlink" href="#pc-pcid" title="Permalink to this heading"></a></h2>
<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 pcpoint) returns integer (from 1.1.0)<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -167,7 +164,7 @@ schema, construct a new pcpoint.</p>
</div>
</section>
<section id="pc-get">
<h2>PC_Get<a class="headerlink" href="#pc-get" title="Permalink to this heading"></a></h2>
<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>
@ -191,7 +188,7 @@ in the schema.</p>
</div>
</section>
<section id="pc-memsize">
<h2>PC_MemSize<a class="headerlink" href="#pc-memsize" title="Permalink to this heading"></a></h2>
<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>
@ -222,7 +219,7 @@ in the schema.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>PostGIS &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -112,7 +109,7 @@
<div itemprop="articleBody">
<section id="postgis">
<span id="points"></span><h1>PostGIS<a class="headerlink" href="#postgis" title="Permalink to this heading"></a></h1>
<span id="points"></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
@ -124,7 +121,7 @@ Geometry and doing spatial filtering on point cloud data. The
</pre></div>
</div>
<section id="pc-intersects">
<h2>PC_Intersects<a class="headerlink" href="#pc-intersects" title="Permalink to this heading"></a></h2>
<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>
@ -140,7 +137,7 @@ Geometry and doing spatial filtering on point cloud data. The
</div>
</section>
<section id="pc-intersection">
<h2>PC_Intersection<a class="headerlink" href="#pc-intersection" title="Permalink to this heading"></a></h2>
<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>
@ -162,7 +159,7 @@ Geometry and doing spatial filtering on point cloud data. The
</div>
</section>
<section id="geometry">
<h2>Geometry<a class="headerlink" href="#geometry" title="Permalink to this heading"></a></h2>
<h2>Geometry<a class="headerlink" href="#geometry" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">Geometry(pcpoint) returns geometry<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -178,7 +175,7 @@ Geometry and doing spatial filtering on point cloud data. The
</div>
</section>
<section id="pc-envelopegeometry">
<h2>PC_EnvelopeGeometry<a class="headerlink" href="#pc-envelopegeometry" title="Permalink to this heading"></a></h2>
<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>
@ -196,7 +193,7 @@ performing 2D intersection tests with PostGIS geometries.</p>
</div>
</section>
<section id="pc-boundingdiagonalgeometry">
<h2>PC_BoundingDiagonalGeometry<a class="headerlink" href="#pc-boundingdiagonalgeometry" title="Permalink to this heading"></a></h2>
<h2>PC_BoundingDiagonalGeometry<a class="headerlink" href="#pc-boundingdiagonalgeometry" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_BoundingDiagonalGeometry(pcpatch) returns geometry<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -245,7 +242,7 @@ index on a patch column.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>WKB &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -110,9 +107,9 @@
<div itemprop="articleBody">
<section id="wkb">
<span id="points"></span><h1>WKB<a class="headerlink" href="#wkb" title="Permalink to this heading"></a></h1>
<span id="points"></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="Permalink to this heading"></a></h2>
<h2>PC_AsBinary<a class="headerlink" href="#pc-asbinary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_AsBinary(p pcpoint) returns bytea<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -125,7 +122,7 @@
</div>
</section>
<section id="pc-envelopeasbinary">
<h2>PC_EnvelopeAsBinary<a class="headerlink" href="#pc-envelopeasbinary" title="Permalink to this heading"></a></h2>
<h2>PC_EnvelopeAsBinary<a class="headerlink" href="#pc-envelopeasbinary" title="Link to this heading"></a></h2>
<dl class="field-list simple">
<dt class="field-odd">PC_EnvelopeAsBinary(p pcpatch) returns bytea<span class="colon">:</span></dt>
<dd class="field-odd"><p></p></dd>
@ -145,7 +142,7 @@ 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="Permalink to this heading"></a></h2>
<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>
@ -177,7 +174,7 @@ patch.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,21 +1,21 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Index &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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="#" />
<link rel="search" title="Search" href="search.html" />
@ -33,9 +33,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -115,7 +112,7 @@
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>pgPointcloud - A PostgreSQL extension for storing point cloud (LIDAR) data. &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -35,9 +35,6 @@
<a href="#" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -97,7 +94,7 @@
<div itemprop="articleBody">
<section id="pgpointcloud-a-postgresql-extension-for-storing-point-cloud-lidar-data">
<span id="home"></span><h1>pgPointcloud - A PostgreSQL extension for storing point cloud (LIDAR) data.<a class="headerlink" href="#pgpointcloud-a-postgresql-extension-for-storing-point-cloud-lidar-data" title="Permalink to this heading"></a></h1>
<span id="home"></span><h1>pgPointcloud - A PostgreSQL extension for storing point cloud (LIDAR) data.<a class="headerlink" href="#pgpointcloud-a-postgresql-extension-for-storing-point-cloud-lidar-data" title="Link to this heading"></a></h1>
<p><a class="reference external" href="http://en.wikipedia.org/wiki/LIDAR">LIDAR</a> <a class="reference external" href="http://en.wikipedia.org/wiki/Point_cloud">point cloud</a> are becoming more and more available. Devices are easy to
get, not too expensive, and provide very accurate 3D points. pgPointCLoud is an
open source <a class="reference external" href="https://www.postgresql.org/">PostgreSQL</a> extension for storing point cloud data and use it with
@ -106,14 +103,14 @@ open source <a class="reference external" href="https://www.postgresql.org/">Pos
problems and allows a good integration with other geo-spatial data
(vector, raster) into one common framework : PostGIS.</p>
<section id="news">
<h2>News<a class="headerlink" href="#news" title="Permalink to this heading"></a></h2>
<h2>News<a class="headerlink" href="#news" title="Link to this heading"></a></h2>
<section id="id1">
<h3><strong>19-09-2023</strong><a class="headerlink" href="#id1" title="Permalink to this heading"></a></h3>
<h3><strong>19-09-2023</strong><a class="headerlink" href="#id1" title="Link to this heading"></a></h3>
<p>pgPointcloud 1.2.5 has been released.</p>
</section>
</section>
<section id="concepts">
<h2>Concepts<a class="headerlink" href="#concepts" title="Permalink to this heading"></a></h2>
<h2>Concepts<a class="headerlink" href="#concepts" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="concepts/index.html">Concepts</a><ul>
@ -128,7 +125,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="download">
<h2>Download<a class="headerlink" href="#download" title="Permalink to this heading"></a></h2>
<h2>Download<a class="headerlink" href="#download" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="download.html">Download</a><ul>
@ -143,7 +140,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="getting-started">
<h2>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this heading"></a></h2>
<h2>Getting Started<a class="headerlink" href="#getting-started" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="quickstart.html">Getting Started</a><ul>
@ -157,7 +154,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="functions">
<h2>Functions<a class="headerlink" href="#functions" title="Permalink to this heading"></a></h2>
<h2>Functions<a class="headerlink" href="#functions" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="functions/index.html">Functions</a><ul>
@ -171,7 +168,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="update">
<h2>Update<a class="headerlink" href="#update" title="Permalink to this heading"></a></h2>
<h2>Update<a class="headerlink" href="#update" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="update.html">Update</a><ul>
@ -182,7 +179,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="tutorials">
<h2>Tutorials<a class="headerlink" href="#tutorials" title="Permalink to this heading"></a></h2>
<h2>Tutorials<a class="headerlink" href="#tutorials" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="tutorials/index.html">Tutorials</a><ul>
@ -194,7 +191,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="development">
<h2>Development<a class="headerlink" href="#development" title="Permalink to this heading"></a></h2>
<h2>Development<a class="headerlink" href="#development" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="development.html">Development</a><ul>
@ -214,7 +211,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="project">
<h2>Project<a class="headerlink" href="#project" title="Permalink to this heading"></a></h2>
<h2>Project<a class="headerlink" href="#project" title="Link to this heading"></a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="community.html">Community</a></li>
@ -224,7 +221,7 @@ problems and allows a good integration with other geo-spatial data
</div>
</section>
<section id="indices-and-tables">
<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this heading"></a></h2>
<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Link to this heading"></a></h2>
<ul class="simple">
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
@ -248,7 +245,7 @@ problems and allows a good integration with other geo-spatial data
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Getting Started &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -104,9 +101,9 @@
<div itemprop="articleBody">
<section id="getting-started">
<span id="quickstart"></span><h1>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this heading"></a></h1>
<span id="quickstart"></span><h1>Getting Started<a class="headerlink" href="#getting-started" title="Link to this heading"></a></h1>
<section id="introduction">
<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this heading"></a></h2>
<h2>Introduction<a class="headerlink" href="#introduction" title="Link to this heading"></a></h2>
<p>Once pgPointcloud installed, the first step is to load a point cloud in
PostgreSQL to start playing with <code class="docutils literal notranslate"><span class="pre">PcPatch</span></code> and <code class="docutils literal notranslate"><span class="pre">PcPoint</span></code>.</p>
<p>To do that you can write your own loader, using the uncompressed WKB format, or
@ -114,13 +111,13 @@ more simply you can load existing LIDAR files using the <a class="reference exte
format conversion library.</p>
</section>
<section id="install-pdal">
<h2>Install PDAL<a class="headerlink" href="#install-pdal" title="Permalink to this heading"></a></h2>
<h2>Install PDAL<a class="headerlink" href="#install-pdal" title="Link to this heading"></a></h2>
<p>To install PDAL check out the PDAL <a class="reference external" href="https://pdal.io/development/">development documentation</a>.</p>
<p>With PDAL installed youre ready to run a PDAL import into PostgreSQL
PointCloud thanks to the dedicated <a class="reference external" href="https://pdal.io/stages/writers.pgpointcloud.html#writers-pgpointcloud">pgPointcloud writer</a>.</p>
</section>
<section id="running-a-pipeline">
<h2>Running a pipeline<a class="headerlink" href="#running-a-pipeline" title="Permalink to this heading"></a></h2>
<h2>Running a pipeline<a class="headerlink" href="#running-a-pipeline" title="Link to this heading"></a></h2>
<p>PDAL includes a <a class="reference external" href="https://pdal.io/apps/index.html">command line program</a> that allows both simple format
translations and more complex “pipelines” of transformation. The pdal translate
does simple format transformations. In order to load data into Pointcloud we
@ -208,7 +205,7 @@ partial extracts from a table:</p>
</div>
</section>
<section id="pgpointcloud-reader-writer">
<h2>pgpointcloud reader/writer<a class="headerlink" href="#pgpointcloud-reader-writer" title="Permalink to this heading"></a></h2>
<h2>pgpointcloud reader/writer<a class="headerlink" href="#pgpointcloud-reader-writer" title="Link to this heading"></a></h2>
<p>The PDAL <a class="reference external" href="https://pdal.io/stages/writers.pgpointcloud.html">writers.pgpointcloud</a> for PostgreSQL Pointcloud takes the following
options:</p>
<ul class="simple">
@ -253,7 +250,7 @@ options:</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<html class="writer-html5" lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Search &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<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"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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>
<script src="_static/searchtools.js"></script>
<script src="_static/language_data.js"></script>
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="#" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
@ -123,7 +120,7 @@
<div class="footer">
<div class="container">
&copy; 2023
&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>,

File diff suppressed because one or more lines are too long

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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 and compression &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -108,11 +105,11 @@
<div itemprop="articleBody">
<section id="schema-and-compression">
<h1>Schema and compression<a class="headerlink" href="#schema-and-compression" title="Permalink to this heading"></a></h1>
<h1>Schema and compression<a class="headerlink" href="#schema-and-compression" title="Link to this heading"></a></h1>
<p>This tutorial is an introduction for investigating XML schemas and playing with
compression of patches.</p>
<section id="compression-type">
<h2>Compression type<a class="headerlink" href="#compression-type" title="Permalink to this heading"></a></h2>
<h2>Compression type<a class="headerlink" href="#compression-type" title="Link to this heading"></a></h2>
<p>The compression of a patch may be retrieved through its XML schema but its
also stored in the patch itself. Of course, both needs to be consistent so
updating an existing schema is hardly discouraged and may lead to errors.</p>
@ -147,7 +144,7 @@ JSON summary of the patch:</p>
</div>
</section>
<section id="create-a-new-schema">
<h2>Create a new schema<a class="headerlink" href="#create-a-new-schema" title="Permalink to this heading"></a></h2>
<h2>Create a new schema<a class="headerlink" href="#create-a-new-schema" title="Link to this heading"></a></h2>
<p>A schema is just a XML document and may be manually inserted into the
<code class="docutils literal notranslate"><span class="pre">pointcloud_formats</span></code> table directly from a file. We can also duplicate an
existing schema and tweak some parameters.</p>
@ -161,7 +158,7 @@ schema <code class="docutils literal notranslate"><span class="pre">pcid=1</span
</div>
</section>
<section id="transform-a-patch">
<h2>Transform a patch<a class="headerlink" href="#transform-a-patch" title="Permalink to this heading"></a></h2>
<h2>Transform a patch<a class="headerlink" href="#transform-a-patch" title="Link to this heading"></a></h2>
<p>Thanks to the <code class="docutils literal notranslate"><span class="pre">pc_transform</span></code> function, we can transform the underlying data
of a patch to match a specific schema. So if we want to remove the dimensional
compression from an existing patch, we can use the schema with <code class="docutils literal notranslate"><span class="pre">pcid=2</span></code>
@ -205,7 +202,7 @@ anymore:</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Tutorials &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -102,7 +99,7 @@
<div itemprop="articleBody">
<section id="tutorials">
<span id="id1"></span><h1>Tutorials<a class="headerlink" href="#tutorials" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Tutorials<a class="headerlink" href="#tutorials" title="Link to this heading"></a></h1>
<p>This chapter provides some basic tutorials on how to deploy and use
pgPointcloud.</p>
<div class="toctree-wrapper compound">
@ -130,7 +127,7 @@ pgPointcloud.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Storing points &mdash; pgpointcloud</title>
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="../_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="../_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js?v=148feb7c"></script>
<script src="../_static/doctools.js?v=888ff710"></script>
<script src="../_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="../index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -108,11 +105,11 @@
<div itemprop="articleBody">
<section id="storing-points">
<h1>Storing points<a class="headerlink" href="#storing-points" title="Permalink to this heading"></a></h1>
<h1>Storing points<a class="headerlink" href="#storing-points" title="Link to this heading"></a></h1>
<p>This tutorial is a basic introduction to pgPointcloud to store points in a
PostgreSQL database hosted on a Docker container.</p>
<section id="start-docker-container">
<h2>Start Docker container<a class="headerlink" href="#start-docker-container" title="Permalink to this heading"></a></h2>
<h2>Start Docker container<a class="headerlink" href="#start-docker-container" title="Link to this heading"></a></h2>
<p>First we download the latest tag of the pgPoincloud Docker image:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>docker<span class="w"> </span>pull<span class="w"> </span>pgpointcloud/pointcloud
</pre></div>
@ -145,7 +142,7 @@ documentation is available <a class="reference external" href="https://hub.docke
</div>
</section>
<section id="run-pdal-pipeline">
<h2>Run PDAL pipeline<a class="headerlink" href="#run-pdal-pipeline" title="Permalink to this heading"></a></h2>
<h2>Run PDAL pipeline<a class="headerlink" href="#run-pdal-pipeline" title="Link to this heading"></a></h2>
<p>For the need of the tutorial, we can download sample data from the <a class="reference external" href="https://github.com/PDAL">PDAL</a>
organization:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span>$<span class="w"> </span>wget<span class="w"> </span>https://github.com/PDAL/data/raw/master/liblas/LAS12_Sample_withRGB_Quick_Terrain_Modeler_fixed.laz<span class="w"> </span>-P<span class="w"> </span>/tmp
@ -189,7 +186,7 @@ adress on which the PostgreSQL database is running is necessary:</p>
and an <code class="docutils literal notranslate"><span class="pre">airport</span></code> table is created.</p>
</section>
<section id="configure-connection-service-file">
<h2>Configure connection service file<a class="headerlink" href="#configure-connection-service-file" title="Permalink to this heading"></a></h2>
<h2>Configure connection service file<a class="headerlink" href="#configure-connection-service-file" title="Link to this heading"></a></h2>
<p>To facilitate the access to the database hosted on the Docker container, we can
configure the PostgreSQL connection service file:</p>
<div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="o">[</span>pgpointcloud<span class="o">]</span>
@ -235,7 +232,7 @@ fully filled.</p>
<div class="footer">
<div class="container">
&copy; 2023
&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>,

View File

@ -1,22 +1,22 @@
<!DOCTYPE html>
<html class="writer-html5" lang="en" >
<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>Update &mdash; pgpointcloud</title>
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
<link rel="shortcut icon" href="_static/favicon.ico"/>
<!--[if lt IE 9]>
<script src="_static/js/html5shiv.min.js"></script>
<![endif]-->
<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" />
<script src="_static/jquery.js?v=5d32c60e"></script>
<script src="_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script data-url_root="./" id="documentation_options" src="_static/documentation_options.js?v=148feb7c"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=4825356b"></script>
<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" />
@ -36,9 +36,6 @@
<a href="index.html" class="icon icon-home">
pgPointcloud
</a>
<div class="version">
1.2.5
</div>
<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" />
@ -101,9 +98,9 @@
<div itemprop="articleBody">
<section id="update">
<span id="id1"></span><h1>Update<a class="headerlink" href="#update" title="Permalink to this heading"></a></h1>
<span id="id1"></span><h1>Update<a class="headerlink" href="#update" title="Link to this heading"></a></h1>
<section id="pgpointcloud-extension">
<h2>pgPointcloud extension<a class="headerlink" href="#pgpointcloud-extension" title="Permalink to this heading"></a></h2>
<h2>pgPointcloud extension<a class="headerlink" href="#pgpointcloud-extension" title="Link to this heading"></a></h2>
<p>Once a new version of pgPointcloud installed, you may want to update your
databases where the extension is already in use. The first thing to compare is
the version currently used with versions actually available on your system:</p>
@ -154,7 +151,7 @@ the <a class="reference external" href="/https://pgpointcloud.github.io/pointclo
<div class="footer">
<div class="container">
&copy; 2023
&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>,