Skip to content

数据类型说明

数采文件信息

类型定义

class FileInfo(BaseModel):
    id: str = Field(description='文件id')  # 
    name: str = Field(description='文件名')  # 

图层信息

类型定义

class LayerInfo(BaseModel):
    id: str = Field(description='图层id')  # 
    name: str = Field(description='图层名称')  # 

属性信息

单个属性的定义,比如:属性名称、数据类型

类型定义

class PropertyInfo(BaseModel):
    name: str = Field(description='属性名称')  # 
    type: Literal['long', 'string', 'int', 'short'] = Field(description='数据类型')  # 

属性信息和属性值

在属性定义的基础上增加属性值字段

类型定义

class PropertyValue(BaseModel):
    value: str | int | float | None = Field(default=None, description='属性值')  # 

要素信息

要素定义,也是一组属性的定义,比如:巷道要素,包含属性如名称、长度、宽度、高度等

类型定义

class FeatureInfo(BaseModel):
    name: str = Field(description='要素名称', validation_alias='feature_name')  # 
    properties: List[PropertyInfo] = Field(default_factory=list, description='要素属性', validation_alias='feature_define')  # 

几何对象基础类

是所有几何对象类型的基类

类型定义

class BaseGeometry(BaseModel):
    id: str = Field(default='', 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(BaseModel):
    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)")

实体对象

包含实体对象几何信息,参考EntityGeometry

类型定义

class Entity(BaseGeometry):
    """实体"""
    type: Optional[Literal["entity"]] = Field(default="entity", description="体类型")
    geometry: TINGeometry = Field(default=None, description="三角网模型对象(TIN)")

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)")

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)")