mapteksdk.data.primitives.primitive_attributes module
Access to primitive attributes.
Unlike object attributes, which have one value for the entire object, primitive attributes have one value for each primitive of a particular type. For example, a point primitive attribute has one value for each point and a block primitive attribute has one value for each block.
Users of the SDK should never need to construct these objects directly. Instead, they should be accessed via the point_attributes, edge_attributes, facet_attributes, cell_attributes and block_attributes properties.
- class PrimitiveAttributes(primitive_type, owner_object)
Bases:
object
Provides access to the attributes for a given primitive type on an object.
A primitive attribute is an attribute with one value for each primitive of a particular type. For example, if an object contains ten points then a point primitive attribute would have ten values - one for each point. Primitive attributes can be accessed by name using the [] operator (This is similar to accessing a dictionary).
- Parameters
primitive_type (PrimitiveType) – The type of primitive these attributes have one value for.
owner_object (Topology) – The object that the attributes are from.
Warning
Primitive attributes set through the Python SDK may not appear in the user interface of Maptek applications.
Edge and facet primitive attributes are not well supported by Maptek applications. You can read and write values from/to them via the SDK, however they are not visible from the application side.
Notes
It is not recommended to create PrimitiveAttribute objects directly. Instead use the properties in the See Also section.
See also
mapteksdk.data.primitives.point_properties.PointProperties.point_attributes
: Access per-point primitive attributes.
mapteksdk.data.primitives.edge_properties.EdgeProperties.edge_attributes
: Access per-edge primitive attributes.
mapteksdk.data.primitives.facet_properties.FacetProperties.facet_attributes
: Access per-facet primitive attributes.
mapteksdk.data.primitives.cell_properties.CellProperties.cell_attributes
: Access per-cell primitive attributes.
mapteksdk.data.primitives.block_properties.BlockProperties.block_attributes
: Access per-block primitive attributes.
Examples
Create a point primitive attribute of type string called “temperature”. Note that new_set.point_attributes[“temperature”][i] is the value associated with new_set.points[i] (so point[0] has the attribute “Hot”, point[1] has the attribute “Warm” and point[2] has the attribute[“Cold”]).
>>> from mapteksdk.project import Project >>> from mapteksdk.data import PointSet >>> project = Project() >>> with project.new("cad/points", PointSet) as new_set: >>> new_set.points = [[1, 1, 0], [2, 0, 1], [3, 2, 0]] >>> new_set.point_attributes["temperature"] = ["Hot", "Warm", "Cold"]
Colour the point set created in the previous example with a colour map such that points with attribute “Hot” are red, “Warm” are orange and “Cold” are blue.
>>> from mapteksdk.project import Project >>> from mapteksdk.data import StringColourMap >>> project = Project() >>> with project.new("legends/heatMap", StringColourMap) as new_legend: >>> new_legend.legend = ["Hot", "Warm", "Cold"] >>> new_legend.colours = [[255, 0, 0], [255, 165, 0], [0, 0, 255]] >>> with project.edit("cad/points") as edit_set: >>> edit_set.point_attributes.set_colour_map("temperature", new_legend)
- primitive_type: PrimitiveType
The type of primitive the attributes are associated with.
- property names: Iterable[str]
Returns the names of the attributes.
This can be used to iterate over all of the attributes for this primitive type.
- Returns
The names of the attributes associated with this primitive.
- Return type
Iterable[str]
- Raises
RuntimeError – If an attribute is deleted while iterating over names.
Examples
Iterate over all attributes and print their values. This assumes there is a object with points at cad/points.
>>> from mapteksdk.project import Project >>> project = Project() >>> with project.edit("cad/points") as point_set: ... for name in point_set.point_attributes.names: ... print(point_set.point_attributes[name])
- delete_attribute(name)
Deletes the attribute with name, if it exists.
This method does not throw an exception if the attribute does not exist.
- Parameters
name (string) – The name of the primitive attribute to delete.
- property colour_map: ObjectID[ColourMap] | None
Get the colour map used to colour the primitives.
This returns the colour map passed into set_colour_map.
- Returns
ObjectID – Object id of the colour map associated with this object.
None – If no colour map is associated with this object.
- property colour_map_attribute: str | None
Returns the attribute the colour map is associated with.
- Returns
string – Name of attribute associated with the colour map.
None – If no colour map is associated with this primitive.
- set_colour_map(attribute, colour_map)
Set the colour map for this type of primitive.
Only one colour map can be associated with an object at a time. Attempting to associate another colour map will discard the currently associated colour map.
- Parameters
attribute (str) – The name of the attribute to colour by.
colour_map (ObjectID[ColourMap] | ColourMap) – Object id of the colour map to use for this object. You can also pass the colour map directly.
- Raises
ValueError – If colour map is an invalid type.
RuntimeError – If this object’s primitive type is not point.
Warning
Associating a colour map to edge, facet or cell attributes is not currently supported by the viewer. Attempting to do so will raise a RuntimeError.
Notes
Changed in mapteksdk 1.5:
Prior to 1.5, this function included an implicit call to save()
Prior to 1.5, it was not defined which colour map (if any) would be kept if this was called for multiple different primitive types.
- property primitive_count: int
The number of primitives of the given type in the object.
- Returns
Number of points, edges, facets or blocks. Which is returned depends on primitive type given when this object was created.
- Return type
int
- Raises
ValueError – If the type of primitive is unsupported.
- save_attributes()
Saves changes to the attributes to the Project.
This should not need to be explicitly called - it is called during save() and close() of an inheriting object. It is not recommended to call this function directly.
- type_of_attribute(name)
Returns the ctype of the specified attribute.
- Parameters
name (str) –
- Return type
type