__init__.py 4.5 KB
# coding=utf-8
#author:        4N
#createtime:    2021/10/26
#email:         nheweijun@sina.com

from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime
from sqlalchemy.orm import relationship
from app.models import db


class Service(db.Model):
    '''
    '''
    __tablename__ = 'dmap_service'
    guid = Column(String(256), primary_key=True)
    name = Column(String(256),unique = True)
    title = Column(String(256))
    #服务状态
    state= Column(Integer)
    create_time = Column(DateTime)
    update_time = Column(DateTime)
    #服务描述
    description = Column(Text)
    #服务节点
    node = Column(Integer)
    #服务缩略图
    overview = Column(Text)
    #服务类型
    type = Column(String(256)) #地图服务,影像服务,切片服务
    # 目录外键
    catalog_guid = Column(String(256), ForeignKey('dmap_service_catalog.guid'))
    # 创建者
    creator = Column(String(256))
    url = Column(String(256))

    relate_service_functions = relationship('ServiceFunction', backref='relate_service', lazy='dynamic')
    relate_tile_service = relationship('TileService', backref='relate_service', lazy='dynamic')
    relate_map_service = relationship('MapService', backref='relate_service', lazy='dynamic')

class ServiceFunction(db.Model):
    '''
    细分功能
    '''
    __tablename__ = 'dmap_service_function'
    guid = Column(String(256), primary_key=True)
    type = Column(String(256)) # 功能类别,WMTS,WMS,WFS,等等等
    url = Column(String(1024))
    service_guid = Column(String(256), ForeignKey('dmap_service.guid'))

class ServiceCatalog(db.Model):
    '''
    目录表
    '''
    __tablename__ = 'dmap_service_catalog'
    guid = Column(String(256), primary_key=True)
    pguid = Column(String(256))
    path = Column(Text)
    name = Column(String(256))
    sort = Column(Integer)
    description = Column(Text)
    relate_services = relationship('Service', backref='relate_catalog', lazy='dynamic')



class TileScheme(db.Model):
    '''
    切片方案表
    '''
    __tablename__ = 'dmap_tile_scheme'
    guid = Column(String(256), primary_key=True)
    name = Column(String(256))
    alias = Column(String(256))
    description = Column(Text)
    crs = Column(String(256))
    crs_wkt = Column(Text)

    extent = Column(Text)
    top_left = Column(String(256))

    # 创建者
    creator = Column(String(256))

    levels = Column(Text)
    dpi = Column(Integer)
    rows = Column(Integer)
    cols = Column(Integer)
    update_time = Column(DateTime)

    parameter = Column(Text)


class TileService(db.Model):
    '''
    切片元数据
    '''
    __tablename__ = 'dmap_tile_service'

    guid = Column(String(256), primary_key=True)

    #基本信息
    name = Column(String,unique = True)

    tile_type  = Column(String(256))
    #厂家
    vendor = Column(String(256))
    create_time = Column(DateTime)
    #坐标系
    crs = Column(String(256))
    #切片路径
    datasource = Column(String)
    #调用地址
    metadata_url = Column(String)
    #描述
    description = Column(String)

    #图层信息
    #图层名
    layer_name = Column(String(256))
    #图层别名
    layer_alias = Column(String(256))
    #图层title
    layer_title = Column(String(256))
    #图层样式
    layer_style = Column(String(256))
    #图片格式
    layer_format = Column(String(256))
    #图层范围
    layer_extent = Column(String)
    #图层描述
    layer_description = Column(String)

    #切片方案,scheme 优先scheme_guid,因为切片方案有可能被删掉了
    scheme = Column(Text)

    scheme_guid = Column(String,ForeignKey('dmap_tile_scheme.guid'))
    service_guid = Column(String,ForeignKey('dmap_service.guid'))


class MapService(db.Model):
    '''
    MapService元数据
    '''
    __tablename__ = 'dmap_map_service'

    guid = Column(String(256), primary_key=True)
    name = Column(String, unique=True)

    title = Column(String(256))
    type = Column(String(256))
    capabilities = Column(Integer)
    project = Column(Text)

    service_guid = Column(String,ForeignKey('dmap_service.guid'))

class ServiceEngine(db.Model):
    '''
    服务引擎
    '''
    __tablename__ = 'dmap_service_engine'

    guid = Column(String(256), primary_key=True)
    name = Column(String)
    url = Column(String(256), unique=True)
    out_url = Column(String(256))
    type = Column(String(256))
    create_time = Column(DateTime)