Source code for gsshapy.orm.pro

"""
********************************************************************************
* Name: ProjectionFileModel
* Author: Nathan Swain
* Created On: August 2, 2013
* Copyright: (c) Brigham Young University 2013
* License: BSD 2-Clause
********************************************************************************
"""

__all__ = ['ProjectionFile']

from io import open as io_open
import os

from builtins import str as text
from sqlalchemy import Column
from sqlalchemy.types import Integer, String
from sqlalchemy.orm import relationship

from mapkit import lookupSpatialReferenceID

from . import DeclarativeBase
from ..base.file_base import GsshaPyFileObjectBase


[docs]class ProjectionFile(DeclarativeBase, GsshaPyFileObjectBase): """ Object interface for the Projection File. The projection file contains the Well Known Text version of the spatial reference system for the GSSHA model. This file contains a single line, so the file contents is stored in the file object. No supporting objects are needed. See: http://www.geoapi.org/3.0/javadoc/org/opengis/referencing/doc-files/WKT.html http://spatialreference.org/ """ __tablename__ = 'pro_projection_files' tableName = __tablename__ #: Database tablename # Primary and Foreign Keys id = Column(Integer, autoincrement=True, primary_key=True) #: PK # Value Columns projection = Column(String) #: STRING fileExtension = Column(String, default='pro') #: STRING # Relationship Properties projectFile = relationship('ProjectFile', uselist=False, back_populates='projectionFile') #: RELATIONSHIP def __init__(self): """ Constructor """ GsshaPyFileObjectBase.__init__(self) def __repr__(self): return '<ProjectionFile: Projection=%s>' % self.projection
[docs] @classmethod def lookupSpatialReferenceID(cls, directory, filename): """ Look up spatial reference system using the projection file. Args: directory (str): filename (str): Return: int: Spatial Reference ID """ path = os.path.join(directory, filename) with open(path, 'r') as f: srid = lookupSpatialReferenceID(f.read()) return srid
def _read(self, directory, filename, session, path, name, extension, spatial, spatialReferenceID, replaceParamFile): """ Projection File Read from File Method """ # Set file extension property self.fileExtension = extension # Open file and parse into a data structure with io_open(path, 'r') as f: self.projection = f.read() def _write(self, session, openFile, replaceParamFile): """ Projection File Write to File Method """ # Write lines openFile.write(text(self.projection)) def _namePreprocessor(self, name): """ Preprocess Name Method """ if '_prj' not in name: name += '_prj' return name