Protocol Documentation

Table of Contents

pb/tzinfo.proto

Top

CompressedPolygon

FieldTypeLabelDescription
points bytes

holes CompressedPolygon repeated

CompressedTimezone

CompressedTimezonesItem designed for binary file as small as possible.

FieldTypeLabelDescription
data CompressedPolygon repeated

name string

CompressedTimezones

FieldTypeLabelDescription
method CompressMethod

timezones CompressedTimezone repeated

version string

Point

Basic Point data define.

FieldTypeLabelDescription
lng float

lat float

Polygon

Define a polygon, mostly based on GeoJSON's Polygon define.

Excerpt from RFC-9476 section 'Polygon'

- A linear ring is a closed LineString with four or more positions.

- The first and last positions are equivalent, and they MUST contain

identical values; their representation SHOULD also be identical.

- A linear ring is the boundary of a surface or the boundary of a

hole in a surface.

- A linear ring MUST follow the right-hand rule with respect to the

area it bounds, i.e., exterior rings are counterclockwise, and

holes are clockwise.

Note: the [GJ2008] specification did not discuss linear ring winding

order. For backwards compatibility, parsers SHOULD NOT reject

Polygons that do not follow the right-hand rule.

Though a linear ring is not explicitly represented as a GeoJSON

geometry type, it leads to a canonical formulation of the Polygon

geometry type definition as follows:

- For type "Polygon", the "coordinates" member MUST be an array of

linear ring coordinate arrays.

- For Polygons with more than one of these rings, the first MUST be

the exterior ring, and any others MUST be interior rings. The

exterior ring bounds the surface, and the interior rings (if

present) bound holes within the surface.

[GJ2008]: https://geojson.org/geojson-spec

FieldTypeLabelDescription
points Point repeated

define the "exterior ring"

holes Polygon repeated

define the "interior rings" as holes

PreindexTimezone

PreindexTimezone tile item.

The X/Y/Z are OSM style like map tile index values.

FieldTypeLabelDescription
name string

x int32

y int32

z int32

PreindexTimezones

PreindexTimezones is all preindex timezone's dumps.

FieldTypeLabelDescription
idxZoom int32

which zoom value the tiles generated

aggZoom int32

which zoom value the tiles merge up with.

keys PreindexTimezone repeated

version string

Timezone

Timezone is a timezone's all data.

FieldTypeLabelDescription
polygons Polygon repeated

name string

Timezones

FieldTypeLabelDescription
timezones Timezone repeated

reduced bool

Reduced data will toggle neighbor search as plan b

version string

CompressMethod

NameNumberDescription
Unknown 0

Polyline 1

https://developers.google.com/maps/documentation/utilities/polylinealgorithm

Scalar Value Types

.proto TypeNotesC++JavaPythonGoC#PHPRuby
double double double float float64 double float Float
float float float float float32 float float Float
int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead. int32 int int int32 int integer Bignum or Fixnum (as required)
int64 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead. int64 long int/long int64 long integer/string Bignum
uint32 Uses variable-length encoding. uint32 int int/long uint32 uint integer Bignum or Fixnum (as required)
uint64 Uses variable-length encoding. uint64 long int/long uint64 ulong integer/string Bignum or Fixnum (as required)
sint32 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s. int32 int int int32 int integer Bignum or Fixnum (as required)
sint64 Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s. int64 long int/long int64 long integer/string Bignum
fixed32 Always four bytes. More efficient than uint32 if values are often greater than 2^28. uint32 int int uint32 uint integer Bignum or Fixnum (as required)
fixed64 Always eight bytes. More efficient than uint64 if values are often greater than 2^56. uint64 long int/long uint64 ulong integer/string Bignum
sfixed32 Always four bytes. int32 int int int32 int integer Bignum or Fixnum (as required)
sfixed64 Always eight bytes. int64 long int/long int64 long integer/string Bignum
bool bool boolean boolean bool bool boolean TrueClass/FalseClass
string A string must always contain UTF-8 encoded or 7-bit ASCII text. string String str/unicode string string string String (UTF-8)
bytes May contain any arbitrary sequence of bytes. string ByteString str []byte ByteString string String (ASCII-8BIT)