Published 2026/8/7
Point Cloud PNGis a format for handling point data using the PNG or WebP image format.
The point data handled here have two- or three-dimensional positional coordinates and may also include associated attribute information.
Point Cloud PNG is derived from
List PNG ver. 0.2(Japanese).
File Format
The file format uses PNG (Portable Network Graphics,
ISO/IEC 15948:2004) or WebP (WebP Image Format,
RFC 9649).
For PNG, one of the following color types that support RGB is used:
- 2: Truecolour
- 3: Indexed-colour
- 6: Truecolour with alpha
For WebP, lossless compression, "lossless" is used.
Data Type
Point Cloud PNG stores numerical data by encoding it as pixel values. The specification defines the following five data types; user columns may use arbitrary data types.
| Data Type | Pixels |
| RGB | 1 pixel |
| Unsigned integer | 24-bit unsigned integer | 1 pixel |
| 48-bit unsigned integer | 2 pixels |
| Signed integer | 24-bit signed integer | 1 pixel |
| 48-bit signed integer | 2 pixels |
※These data types are used for input and output with the image file. Although only RGB and integer types are defined here, real numbers can also be handled in practice because a factor and offset are applied when the data are interpreted, as described below.
RGB is obtained directly as the pixel color
For a 24-bit unsigned integer, the RGB values of one pixel (
,
,
; 0–255) are used to obtain the value (
):
For a 48-bit unsigned integer, the RGB values of two pixels—the first pixel (
; 0–255) and the second pixel (
; 0–255) are used to obtain the value (
):
For a 24-bit signed integer, the RGB values of one pixel (
,
,
; 0–255) are used to obtain the value (
):
For a 48-bit signed integer, the RGB values of two pixels—the first pixel (
; 0–255) and the second pixel (
; 0–255) are used to obtain the value (
):
When opacity is used, specifying 255 (maximum) as the valid value is recommended.If opacity is set to 0, the data containing that pixel is treated as invalid.
Pixel Arrangement
Pixels representing numerical data are arranged in the image in normal raster-scan order.That is, starting at the upper-left corner of the image, pixels are placed from left to right; upon reaching the right edge, placement continues from the left edge of the next row.This is repeated until there is no more data to place.
The color of pixels at the end of the image for which no data exists is unspecified.
Data Structure
The stored information consists of a header followed by point information.
The number of pixels used by the header is variable and is referred to as the header length.
Conceptually, each point is represented by a single fixed-length record, and each individual numerical item in a point record is called a column. In the actual file, however, point information is stored separately by column.
The number of points is called the record count.
Header
The header of a Point Cloud PNG file specifies the data type, header length, record count, column count, column definitions, Point Cloud PNG subtype, map projection, coordinate information, and other metadata. The structure and order are as follows. A user header may also be specified after these fields, up to the length indicated by headerLength; its contents and use are unrestricted.
| Field Name | Pixels | Data Type | Description |
| type |
1 |
RGB |
R: List PNG version-dependent number, fixed at 1
G: List PNG derived-format identifier, fixed at 1 (indicating Point Cloud PNG)
B: Point Cloud PNG version-dependent number, fixed at 1
|
| headerLength |
1 |
Unsigned integer |
Header length (pixels) |
| recordCount |
2 |
Unsigned integer |
record count |
| columnCount | 1 | Unsigned integer | column count |
| infoX |
1 |
RGB |
R: (upper 4 bits) Column data type, fixed at 3 (signed integer)
(lower 4 bits) Number of pixels for the X-coordinate column; range: 1–2
G: X coordinate offsetPixels, range 0–2
B: Common logarithm of the X-coordinate factor (8-bit signed integer); range: −128–127
|
| offsetX |
0~2 |
Signed integer |
X coordinate offset default value 0 |
| infoY |
1 |
RGB |
R: (upper 4 bits) Column data type, fixed at 3 (signed integer)
(lower 4 bits) Number of pixels for the Y-coordinate column; range: 1–2
G: Y coordinate offsetPixels, range 0–2
B: Common logarithm of the Y-coordinate factor (8-bit signed integer); range: −128–127
|
| offsetY |
0~2 |
Signed integer |
Y coordinate offset default value 0 |
| infoZ |
0~1 |
RGB |
R: (upper 4 bits) Column data type, fixed at 3 (signed integer)
(lower 4 bits) Number of pixels for the Z-coordinate column; range: 0–2
G: Z coordinate offsetPixels, range 0–2
B: Common logarithm of the Z-coordinate factor (8-bit signed integer); range: −128–127
|
| offsetZ |
0~2 |
Signed integer |
Z coordinate offset default value 0 |
| infoColor |
0~1 |
RGB |
R: (upper 4 bits) Column data type, fixed at 1 (RGB)
(lower 4 bits) Number of column pixels, fixed at 1
G: Number of offset pixels, fixed at 0
B: Common logarithm of factor,fixed at 0
|
| infoId |
0~1 |
RGB |
R: (upper 4 bits) Column data type, fixed at 2 (unsigned integer)
(lower 4 bits) Number of column pixels; range: 1–2
G: Number of offset pixels, fixed at 0
B: Common logarithm of factor,fixed at 0
|
| infoClass |
0~1 |
RGB |
R: (upper 4 bits) Column data type, fixed at 2 (unsigned integer)
(lower 4 bits) Number of column pixels, fixed at 1
G: Number of offset pixels, fixed at 0
B: Common logarithm of factor,fixed at 0
|
| userColumnDefs |
Variable |
User column definitions When user columns are used, follow the specification of List PNG ver. 0.2. |
| subType |
1 |
RGB |
R: Column usage flags
Specify 1 when the column is used and 0 when it is not used
bits 1–4: Unused(0), bit 5: z,bit 6: color,bit 7: id, bit 8: class
G: Map projection, 0: Undefined, 1: Web Mercator, 2: Geographic coordinates
B: Map projection options
(Web Mercator) Web Mercator order; range: 0–47
(Geographic coordinates) Unused; fixed at 0 |
| userHeader |
Variable |
Use is unrestricted |
For 2D point clouds, infoZ is not used.
If the number of offset pixels for an X, Y, or Z coordinate is specified as 0, the corresponding offset header field (offsetX, offsetY, or offsetZ) is not used.
infoColor, infoId, and infoClass are not used when the corresponding color, id, and class columns are not included in the point information.
Point Information
Point information describes columns such as the position, color, ID, and display style of each point. The column contents and order are as follows. Within the file, pixels are arranged by column, and the order within each column is the same for all columns.
| Column Name | Pixels | Data Type | Description |
| x | 1~2 | Signed integer | X coordinate value |
| y | 1~2 | Signed integer | Y coordinate value |
| z | 0~2 | Signed integer | Z coordinate value |
| color | 0~1 | RGB | Display color |
| id | 0~1 | Unsigned integer | ID identifying the point
|
| class | 0~1 | Unsigned integer | Class specifying the display style
|
The z, color, id, and class columns are omitted according to the column usage flags in the header (the R value of the subType field). User columns may be used after the class column, with unrestricted use. When user columns are used, their definitions must be specified in userColumnDefs in the header.
Coordinate Value Conversion
The x, y, and z values in point information are stored as integers. They are converted to the original coordinate values using the factor logarithms and offset values specified in the header.
The X, Y, and Z factor logarithms specified in the header represent the common logarithm (base-10 logarithm) of the factor by which the coordinate value is divided. For example, a value of 4 means that the stored value is divided by 10,000 to recover the original data, preserving four decimal places.
When the factor logarithm is factorlog and the offset is offset, the converted value v is calculated from the stored integer value v0 using the following equation.
v = ( v0 + offset ) / 10factorlog
Web Mercator order
When Web Mercator is used as the projection, the Web Mercator order is specified to indicate the horizontal resolution of the map.
The Web Mercator order is the base-2 logarithm (binary logarithm) of the width of a map representing the entire Earth.
For 256-pixel tiles, this value is equivalent to the Leaflet zoom level plus 8. For example, Web Mercator order 24 corresponds to zoom level 16.
Map Projection and Coordinate Units
Point Cloud PNG is not limited to map data and does not otherwise constrain the units of the X, Y, and Z coordinates. However, specifying a map projection in the subType field of the header also determines the units of the X, Y, and Z coordinates.
For Web Mercator, when the Web Mercator order is o, the units of the X and Y coordinates are 1/2o of the width of a map representing the entire Earth, where that width is taken as 1.
For geographic coordinates, the units of X and Y are degrees.
For both Web Mercator and geographic coordinates, the unit of Z is meters. For example, a Z-coordinate factor logarithm of 4 corresponds to a vertical resolution of 1 mm.