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

from sqlalchemy import Column, Integer, String, ForeignKey, Text, DateTime, Time,Float,Binary
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'))

    relate_service_functions = relationship('ServiceFunction', backref='relate_service', lazy='dynamic')
    relate_tile_service = relationship('TileService', backref='relate_service', lazy='dynamic')
    relate_image_service = relationship('ImageService', 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))

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

    parameter = Column(Text)


class Image(db.Model):
    '''
    影像元数据
    '''
    __tablename__ = 'dmap_image'
    guid = Column(String(256), primary_key=True)
    name = Column(String)
    alias = Column(String)
    raster_y_size = Column(Integer)#图像y 分辨率
    raster_x_size = Column(Integer)#图像x 分辨率
    overview_count = Column(Integer)#金字塔等级
    extent = Column(String)#范围
    # geo_origin_extent = Column(String)
    null_value = Column(Integer)#空值
    available = Column(Integer)#影像是否可用,不可用可能在创建金字塔中
    band_count = Column(Integer)#波段数
    band_view = Column(String)#波段设置
    path = Column(String)
    server = Column(String)

    size = Column(Float)
    #坐标wkt
    crs_wkt = Column(Text) #坐标wkt
    crs_proj4 = Column(Text)#坐标proj
    crs = Column(String)#坐标
    create_time = Column(DateTime)
    update_time = Column(DateTime)
    cell_x_size = Column(Float)#像元x大小
    cell_y_size = Column(Float)#像元y大小
    region = Column(Text)

    collect_time = Column(DateTime) #成像时间年份

    satellite = Column(String)#卫星类型
    type = Column(String(128))


dmap_image_rel = db.Table('dmap_image_rel',
    Column('image_guid',String, ForeignKey('dmap_image.guid')),
    Column('service_guid', String, ForeignKey('dmap_image_service.guid'))
    )



class ImageService(db.Model):
    '''
    影像服务
    '''
    __tablename__ = 'dmap_image_service'
    guid = Column(String(256), primary_key=True)
    name = Column(String,unique = True)
    scheme_guid = Column(String)
    extent = Column(String(256))
    # node = Column(Integer)
    #可视范围geojson
    visual_region = Column(Text)
    crs = Column(String(256))
    create_time = Column(DateTime)
    service_guid = Column(String, ForeignKey('dmap_service.guid'))

    images  = db.relationship('Image',
                              secondary=dmap_image_rel,
                              backref='image_services',
                              lazy='dynamic'
                              )


dmap_image_tag_rel = db.Table('dmap_image_tag_rel',
    Column('image_guid',String, ForeignKey('dmap_image.guid')),
    Column('tag_guid', String, ForeignKey('dmap_image_tag.guid'))
    )

class ImageTag(db.Model):
    '''
    影像标签
    '''
    __tablename__ = 'dmap_image_tag'
    guid = Column(String(256), primary_key=True)
    name=Column(String(256))
    alias = Column(String(256))
    images  = db.relationship('Image',
                              secondary=dmap_image_tag_rel,
                              backref='image_tags',
                              lazy='dynamic'
                              )


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_guid = Column(String,ForeignKey('dmap_tile_scheme.guid'))
    service_guid = Column(String,ForeignKey('dmap_service.guid'))


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

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

    #基本信息
    status = Column(String)
    description = Column(String)
    #厂家
    username = Column(String(256))

    readonly = Column(String)
    updatetime = Column(DateTime)
    sid = Column(Integer)
    stype = Column(String)
    ssupply = Column(String)
    sctime = Column(String)
    company = Column(String)
    abstract = Column(String)
    title = Column(String)
    thumbnail = Column(String)
    layer_style = Column(Text)
    service_guid = Column(String,ForeignKey('dmap_service.guid'))