File: prepare_datastack.py

package info (click to toggle)
doris 5.0.3~beta%2Bdfsg-14
  • links: PTS, VCS
  • area: contrib
  • in suites: bullseye
  • size: 6,668 kB
  • sloc: cpp: 43,593; python: 8,213; csh: 3,636; sh: 2,527; ansic: 649; makefile: 346; xml: 208
file content (64 lines) | stat: -rw-r--r-- 2,925 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# Function created by Gert Mulder
# Institute TU Delft
# Date 9-11-2016
# Part of Doris 5.0

# This function makes a setup of the processing folder, based on a single shapefile.
# Inputs are
# - the satellite sensor used
# - the shapefile
# - the processing folder we want to create
# - the dem source folder where the intermediate DEM data is stored

import os
from .create_dem import CreateDem
from .create_inputfiles import CreateInputFiles
from .create_doris_input_xml import CreateDorisInputXml
from .create_datastack_bash import CreateBash
import xml.etree.ElementTree as ET

class PrepareDatastack(object):

    def __init__(self):
        return

    def prepare(self, inputfile):

        # This will first create the framework with data folders the stackfolder should contain
        # a dorisparameters file.

        doris_input_xml = CreateDorisInputXml(inputfile)

        folders = ['input_files', 'stack', 'dem']
        for foldername in folders:
            if not os.path.exists(os.path.join(doris_input_xml.get_value('datastack_folder'), foldername)):
                os.mkdir(os.path.join(doris_input_xml.get_value('datastack_folder'), foldername))

        # Then create the dem file
        # password_file = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))),'install', 'doris_config.xml')
        password_file = os.environ.get('DORIS_CONFIG_FILE', os.path.expanduser('~/.doris_config.xml'))
        if not os.path.isfile(password_file):
            password_file = '/etc/doris_config.xml'
        tree_doris = ET.parse(password_file)
        settings_doris = tree_doris.getroot()
        srtm_username = settings_doris.find('.usgs_username').text
        srtm_password = settings_doris.find('.usgs_password').text
        dem_out = os.path.join(doris_input_xml.get_value('dem_folder'), 'dem.raw')
        dem_var = dem_out + '.var'

        dem = CreateDem()
        if doris_input_xml.get_value('generate_dem'.lower())=='yes':
            dem.create(doris_input_xml.get_value('shape_file_path'), dem_out, dem_var, resample=None,
                                    doris_input=True, rounding=0.1, border=1.5,
                                    data_folder=doris_input_xml.get_value('dem_processing_folder'), quality='SRTM3',
                                    password=srtm_password, username=srtm_username)

        ## Then create the inputfiles
        inputfiles_folder = os.path.join(doris_input_xml.get_value('datastack_folder'), 'input_files')
        xml_file = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'inputfile_template.xml')
        satellite = 'sentinel-1'
        CreateInputFiles(dem_var, xml_file, satellite).create(inputfiles_folder)

        root_folder = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
        CreateBash().create(doris_input_xml.get_value('datastack_folder'), root_folder, doris_input_xml.get_value('cores'))