数据类型说明
数采文件信息
类型定义
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)")