py3dtiles.tilers.point.node package

class py3dtiles.tilers.point.node.DummyNode(_bytes: DummyNodeDictType)[source]

Bases: object

get_points() Points | None[source]
class py3dtiles.tilers.point.node.Grid(spacing: float, include_rgb: bool, extra_fields: list[ExtraFieldsDescription], initial_count: int = 3)[source]

Bases: object

docstring for Grid

balance(aabb_size: ndarray[Any, dtype[float32]], aabmin: ndarray[Any, dtype[float32]], inv_aabb_size: ndarray[Any, dtype[float32]]) None[source]
cell_count
cells_extra_fields: dict[str, list[ndarray[Any, dtype[Any]]]]
cells_rgb: list[ndarray[Any, dtype[uint8 | uint16]]] | None
cells_xyz: list[ndarray[Any, dtype[uint16 | float32]]]
get_point_count() int[source]
get_points() Points | None[source]
init_cells(aabmin: ndarray[Any, dtype[float32]], inv_aabb_size: ndarray[Any, dtype[float32]], xyz: ndarray[Any, dtype[float32 | uint16]], rgb: ndarray[Any, dtype[uint8 | uint16]] | None, extra_fields: dict[str, ndarray[Any, dtype[Any]]]) None[source]
insert(aabmin: ndarray[Any, dtype[float32]], inv_aabb_size: ndarray[Any, dtype[float32]], xyz: ndarray[Any, dtype[float32 | uint16]], rgb: ndarray[Any, dtype[uint8 | uint16]] | None, extra_fields: dict[str, ndarray[Any, dtype[T]]]) tuple[ndarray[Any, dtype[float32]], ndarray[Any, dtype[uint8]] | None, dict[str, ndarray[Any, dtype[int8]] | ndarray[Any, dtype[int16]] | ndarray[Any, dtype[int32]] | ndarray[Any, dtype[int64]] | ndarray[Any, dtype[uint8]] | ndarray[Any, dtype[uint16]] | ndarray[Any, dtype[uint32]] | ndarray[Any, dtype[uint64]] | ndarray[Any, dtype[float16]] | ndarray[Any, dtype[float32]] | ndarray[Any, dtype[float64]] | ndarray[Any, dtype[longdouble]]], bool][source]
property max_key_value: int
needs_balance() bool[source]
spacing
class py3dtiles.tilers.point.node.Node(name: bytes, aabb: ndarray[Any, dtype[float64 | float32]], spacing: float, include_rgb: bool, extra_fields: list[ExtraFieldsDescription])[source]

Bases: object

docstring for Node

aabb
aabb_center
aabb_size
children: list[bytes] | None
static create_child_node_from_parent(name: bytes, parent_aabb: npt.NDArray[np.floating[_T]], parent_spacing: float, include_rgb: bool, extra_fields: list[ExtraFieldsDescription]) Node[source]
dirty
dump_pending_points() list[tuple[bytes, bytes, int]][source]
extra_fields
flush_pending_points(catalog: NodeCatalog, scale: float) None[source]
get_child_names() Generator[bytes, None, None][source]
get_pending_points_count() int[source]
get_point_count(node_catalog: NodeCatalog, max_depth: int, depth: int = 0) int[source]
get_points() Points | None[source]
grid
include_rgb
insert(scale: float, points: Points, make_empty_node: bool = False) None[source]
inv_aabb_size
load_from_bytes(byt: bytes) None[source]
name
needs_balance() bool[source]
pending_points: list[Points]
points: list[Points]
save_to_bytes() bytes[source]
spacing
to_tileset(folder: Path, scale: ndarray[Any, dtype[float32]], parent_node: Node | None = None, depth: int = 0, pool_executor: ProcessPoolExecutor | None = None) Tile | None[source]
class py3dtiles.tilers.point.node.NodeCatalog(nodes: bytes, name: bytes, root_aabb: ndarray[Any, dtype[float64]], root_spacing: float, include_rgb: bool, extra_fields: list[ExtraFieldsDescription])[source]

Bases: object

NodeCatalog is a store of Node objects.

Using a NodeCatalog allows to only store a children names in nodes, instead of storing a full recursive structure.

dump(name: bytes, max_depth: int) bytes[source]

Serialize the stored nodes to a bytes list

get_node(name: bytes) Node[source]

Returns the node mathing the given name

class py3dtiles.tilers.point.node.NodeProcess(node_catalog: NodeCatalog, scale: float, name: bytes, tasks: list[bytes], begin: float, log_file: TextIO | None)[source]

Bases: object

infer_depth_from_name() int[source]
run() Generator[tuple[bytes, bytes, int], None, None][source]
class py3dtiles.tilers.point.node.SharedNodeStore(folder: Path)[source]

Bases: object

A class that implements a compressed storage for arbitrary data, that is able to limit the amount of ram it uses by temporary storing part of the storage on disk for later retrieval.

The memory limit is not automatic at the moment, but instead is done by calling self.control_memory_usage.

control_memory_usage(max_size_mb: int, verbose: int) None[source]

Limit the memory usage of this instance.

get(name: bytes, stat_inc: int = 1) bytes[source]

Get a node storage.

Parameters:

name – the name of the node

print_statistics() None[source]
put(name: bytes, data: bytes) None[source]

Insert or change

remove(name: bytes) None[source]

Remove a node from this storage.

remove_oldest_nodes(percent: float = 100) tuple[int, int][source]

Submodules