数据类型说明
基础类型
所有数据类型的基类,包含 related 标志位,表示该对象是否关联到数采端。
类型定义
class BaseType(BaseModel):
related: Optional[bool] = Field(default=False, description='是否关联到数采端对象')
数采文件信息
类型定义
class FileInfo(BaseType):
id: str = Field(description='文件id') #
name: str = Field(description='文件名') #
图层信息
类型定义
class LayerInfo(BaseType):
id: str = Field(description='图层id') #
name: str = Field(description='图层名称') #
layer_type: Optional[str] = Field(default=None, description='图层类型') #
属性信息
单个属性的定义,比如:属性名称、数据类型
类型定义
class PropertyInfo(BaseType):
name: str = Field(description='属性名称') #
type: Literal["byte", "string", "short", "int", "long", "float", "double", "char", "color", "date", "binary"] = Field(description='数据类型') #
属性信息和属性值
在属性定义的基础上增加属性值字段
类型定义
class PropertyValue(PropertyInfo):
"""属性值信息,继承 PropertyInfo 的 name 和 type 字段"""
value: str | int | float | None = Field(default=None, description='属性值') #
要素信息
要素定义,也是一组属性的定义,比如:巷道要素,包含属性如名称、长度、宽度、高度等
类型定义
class FeatureInfo(BaseType):
name: str = Field(description='要素名称', validation_alias='feature_name') #
properties: List[PropertyInfo] = Field(default_factory=list, description='要素属性', validation_alias='feature_define') #
几何对象基础类
是所有几何对象类型的基类
类型定义
class BaseGeometry(BaseType):
id: str = Field(default='', description='对象id') #
file: Optional[str] = Field(default=None, description='所属文件id') #
color: List[int] = Field(default=[0, 0, 0], description='颜色') #
feature: str = Field(default='', description='所属要素名') #
layer: str = Field(default='', description='所在图层id') #
properties: List[PropertyValue] = Field(default_factory=list, description='属性') #
点
表示一个点对象,只有一个坐标
类型定义
class Point(BaseGeometry):
type: Optional[Literal['point']] = Field(default='point', description='点类型') #
geometry: np.ndarray = Field(default=np.array([]), description='点坐标, shape=(3,)') #
线
表示一条直线或者多段线
类型定义
class Line(BaseGeometry):
type: Optional[Literal['line']] = Field(default='line', description='线类型') #
geometry: np.ndarray = Field(default=np.array([]), description='线坐标, shape=(N,3)') #
实体对象几何信息
使用三角网体表示一个实体对象, 每三个点构成一个三角形
类型定义
class TINGeometry(BaseType):
"""三角网模型定义,"""
model_config = {"arbitrary_types_allowed": True}
faces: np.ndarray = Field(default=np.array([]), description="三角面片:每行是三个顶点的索引,三个顶点连接起来形成一个三角面。shape=(N,3)")
points: np.ndarray = Field(default=np.array([]), description="所有顶点坐标, shape=(N,3)")
GEOMETRY
GEOMETRY 是一个联合类型,可以是以下类型之一: - Point - Line - Shell
类型定义
GEOMETRY = Union[Point, Line, Shell]
Shell
表示一个三维实体对象,使用三角网(TIN)表示实体几何信息,每个面由三个顶点构成三角形。
类型定义
class Shell(BaseGeometry):
"""实体"""
type: Optional[Literal["shell"]] = Field(default="shell", description="体类型")
geometry: TINGeometry = Field(default=None, description="三角网模型对象(TIN)")
注:
TINGeometry的定义见上方。
文字标注信息
文字标注是在三维场景中添加文字标签的数据类型。
类型定义
class TextInfo(BaseType):
"""文字标注信息"""
file: Optional[str] = Field(default=None, description="所属文件id")
layer: Optional[str] = Field(default=None, description="所在图层id")
feature: Optional[str] = Field(default=None, description="所属要素名")
text: str = Field(description="文字内容")
position: List[float] = Field(description="文字位置 [x, y, z]")
color: List[int] = Field(default=[255, 255, 255], description="颜色 [r, g, b]")
size: float = Field(default=20, description="文字大小")
normal: List[float] = Field(default=[0, 0, 1], description="法向量 [x, y, z]")
rotate: float = Field(default=0, description="旋转角度")