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:
 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 TypePixels
RGB1 pixel
Unsigned integer24-bit unsigned integer1 pixel
48-bit unsigned integer2 pixels
Signed integer24-bit signed integer1 pixel
48-bit signed integer2 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 (r,g,b; 0–255) are used to obtain the value (v):
v=216r+ 28g+b
 For a 48-bit unsigned integer, the RGB values of two pixels—the first pixel (r1,g1,b1; 0–255) and the second pixel (r2,g2,b2; 0–255) are used to obtain the value (v):
v= 240r1+ 232g1+ 224b1+ 216r2+ 28g2+ b2
 For a 24-bit signed integer, the RGB values of one pixel (r,g,b; 0–255) are used to obtain the value (v):
r'= { r, (r<27) r-28, (r27)
v=216r'+ 28g+b
 For a 48-bit signed integer, the RGB values of two pixels—the first pixel (r1,g1,b1; 0–255) and the second pixel (r2,g2; 0–255) are used to obtain the value (v):
r1'= { r1, (r1<27) r1-28, (r127)
v= 240r1'+ 232g1+ 224b1+ 216r2+ 28g2+ b2
 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 NamePixelsData TypeDescription
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
columnCount1Unsigned integercolumn 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 NamePixelsData TypeDescription
x1~2Signed integerX coordinate value
y1~2Signed integerY coordinate value
z0~2Signed integerZ coordinate value
color0~1RGBDisplay color
id0~1Unsigned integerID identifying the point
class0~1Unsigned integerClass 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.