Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Felix.Greifeneder/pysmm
1 result
Show changes
Commits on Source (4)
......@@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="jdk" jdkName="Python 3.7 (pysmm_v02)" jdkType="Python SDK" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TemplatesService">
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="24d0b74a-b506-4a90-a641-33ea98f86150" name="Default Changelist" comment="">
<list default="true" id="24d0b74a-b506-4a90-a641-33ea98f86150" name="Default Changelist" comment="uploads the adapted model for estimations in california and implements required changes">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build/lib/pysmm/GEE_wrappers.py" beforeDir="false" afterPath="$PROJECT_DIR$/build/lib/pysmm/GEE_wrappers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/build/lib/pysmm/derive_SM.py" beforeDir="false" afterPath="$PROJECT_DIR$/build/lib/pysmm/derive_SM.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/dist/pysmm-0.6-py3-none-any.whl" beforeDir="false" afterPath="$PROJECT_DIR$/dist/pysmm-0.6-py3-none-any.whl" afterDir="false" />
<change beforePath="$PROJECT_DIR$/dist/pysmm-0.6.tar.gz" beforeDir="false" afterPath="$PROJECT_DIR$/dist/pysmm-0.6.tar.gz" afterDir="false" />
<change beforePath="$PROJECT_DIR$/docs/source/index.rst" beforeDir="false" afterPath="$PROJECT_DIR$/docs/source/index.rst" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pysmm.egg-info/PKG-INFO" beforeDir="false" afterPath="$PROJECT_DIR$/pysmm.egg-info/PKG-INFO" afterDir="false" />
<change beforePath="$PROJECT_DIR$/setup.py" beforeDir="false" afterPath="$PROJECT_DIR$/setup.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pysmm/GEE_wrappers.py" beforeDir="false" afterPath="$PROJECT_DIR$/pysmm/GEE_wrappers.py" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pysmm/derive_SM.py" beforeDir="false" afterPath="$PROJECT_DIR$/pysmm/derive_SM.py" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -17,6 +12,11 @@
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="Git.Settings">
<option name="RECENT_BRANCH_BY_REPOSITORY">
<map>
<entry key="$PROJECT_DIR$" value="master" />
</map>
</option>
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component>
<component name="JupyterTrust" id="09d61194-1865-474b-9500-b85c9f1c3ddf" />
......@@ -24,21 +24,25 @@
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showExcludedFiles" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">
<property name="RunOnceActivity.OpenProjectViewOnStart" value="true" />
<property name="RunOnceActivity.ShowReadmeOnStart" value="true" />
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$USER_HOME$/anaconda3/envs/build_training" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/pysmm" />
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
</component>
<component name="RecentsManager">
<key name="CopyFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$/pysmm" />
</key>
<key name="MoveFile.RECENT_KEYS">
<recent name="$PROJECT_DIR$" />
<recent name="$PROJECT_DIR$/docs/source/old" />
</key>
</component>
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="application-level" UseSingleDictionary="true" transferred="true" />
<component name="SvnConfiguration">
<configuration />
</component>
......@@ -63,6 +67,12 @@
<workItem from="1611128944084" duration="45808000" />
<workItem from="1611346962901" duration="3252000" />
<workItem from="1611432111741" duration="49968000" />
<workItem from="1618303982930" duration="5069000" />
<workItem from="1624268688850" duration="1199000" />
<workItem from="1629881446807" duration="612000" />
<workItem from="1634804046573" duration="836000" />
<workItem from="1638374206811" duration="1581000" />
<workItem from="1639055394319" duration="26144000" />
</task>
<task id="LOCAL-00001" summary="Comminting V2">
<created>1613752669505</created>
......@@ -120,11 +130,36 @@
<option name="project" value="LOCAL" />
<updated>1615978646004</updated>
</task>
<option name="localTasksCounter" value="9" />
<task id="LOCAL-00009" summary="updates documentation">
<created>1615979205565</created>
<option name="number" value="00009" />
<option name="presentableId" value="LOCAL-00009" />
<option name="project" value="LOCAL" />
<updated>1615979205565</updated>
</task>
<task id="LOCAL-00010" summary="uploads the adapted model for estimations in california and implements required changes">
<created>1639064768756</created>
<option name="number" value="00010" />
<option name="presentableId" value="LOCAL-00010" />
<option name="project" value="LOCAL" />
<updated>1639064768756</updated>
</task>
<option name="localTasksCounter" value="11" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
<option name="version" value="3" />
</component>
<component name="Vcs.Log.Tabs.Properties">
<option name="TAB_STATES">
<map>
<entry key="MAIN">
<value>
<State />
</value>
</entry>
</map>
</option>
</component>
<component name="VcsManagerConfiguration">
<MESSAGE value="Comminting V2" />
......@@ -135,91 +170,9 @@
<MESSAGE value="corrects readthedocs settings and creates new build" />
<MESSAGE value="updates the read the docs theme" />
<MESSAGE value="adds the support for time-series extraction back to PYSMM&#10;fixes some bugs in get_map()" />
<option name="LAST_COMMIT_MESSAGE" value="adds the support for time-series extraction back to PYSMM&#10;fixes some bugs in get_map()" />
</component>
<component name="WindowStateProjectService">
<state x="534" y="154" width="896" height="827" key="CommitChangelistDialog2" timestamp="1615978645539">
<screen x="0" y="31" width="1920" height="1057" />
</state>
<state x="534" y="154" width="896" height="827" key="CommitChangelistDialog2/0.31.1920.1057@0.31.1920.1057" timestamp="1615978645539" />
<state x="570" y="156" width="904" height="827" key="CommitChangelistDialog2/0.31.2048.1072@0.31.2048.1072" timestamp="1613772571540" />
<state x="1043" y="479" width="306" height="291" key="FileChooserDialogImpl" timestamp="1615379290368">
<screen x="0" y="31" width="1920" height="1057" />
</state>
<state x="1043" y="479" width="306" height="291" key="FileChooserDialogImpl/0.31.1920.1057@0.31.1920.1057" timestamp="1615379290368" />
<state x="1113" y="485" width="430" height="486" key="FileChooserDialogImpl/0.31.2048.1072@0.31.2048.1072" timestamp="1613769230329" />
<state width="2006" height="264" key="GridCell.Tab.0.bottom" timestamp="1614265484450">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.0.bottom/0.31.1280.640@0.31.1280.640" timestamp="1611349059620" />
<state width="1878" height="274" key="GridCell.Tab.0.bottom/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311399" />
<state width="2006" height="264" key="GridCell.Tab.0.bottom/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484450" />
<state width="2006" height="264" key="GridCell.Tab.0.center" timestamp="1614265484449">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.0.center/0.31.1280.640@0.31.1280.640" timestamp="1611349059619" />
<state width="1878" height="274" key="GridCell.Tab.0.center/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311398" />
<state width="2006" height="264" key="GridCell.Tab.0.center/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484449" />
<state width="2006" height="264" key="GridCell.Tab.0.left" timestamp="1614265484449">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.0.left/0.31.1280.640@0.31.1280.640" timestamp="1611349059619" />
<state width="1878" height="274" key="GridCell.Tab.0.left/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311397" />
<state width="2006" height="264" key="GridCell.Tab.0.left/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484449" />
<state width="2006" height="264" key="GridCell.Tab.0.right" timestamp="1614265484450">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.0.right/0.31.1280.640@0.31.1280.640" timestamp="1611349059620" />
<state width="1878" height="274" key="GridCell.Tab.0.right/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311398" />
<state width="2006" height="264" key="GridCell.Tab.0.right/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484450" />
<state width="2006" height="264" key="GridCell.Tab.1.bottom" timestamp="1614265484453">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.1.bottom/0.31.1280.640@0.31.1280.640" timestamp="1611349059623" />
<state width="1878" height="274" key="GridCell.Tab.1.bottom/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311401" />
<state width="2006" height="264" key="GridCell.Tab.1.bottom/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484453" />
<state width="2006" height="264" key="GridCell.Tab.1.center" timestamp="1614265484452">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.1.center/0.31.1280.640@0.31.1280.640" timestamp="1611349059622" />
<state width="1878" height="274" key="GridCell.Tab.1.center/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311400" />
<state width="2006" height="264" key="GridCell.Tab.1.center/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484452" />
<state width="2006" height="264" key="GridCell.Tab.1.left" timestamp="1614265484451">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.1.left/0.31.1280.640@0.31.1280.640" timestamp="1611349059621" />
<state width="1878" height="274" key="GridCell.Tab.1.left/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311400" />
<state width="2006" height="264" key="GridCell.Tab.1.left/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484451" />
<state width="2006" height="264" key="GridCell.Tab.1.right" timestamp="1614265484452">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state width="1238" height="394" key="GridCell.Tab.1.right/0.31.1280.640@0.31.1280.640" timestamp="1611349059622" />
<state width="1878" height="274" key="GridCell.Tab.1.right/0.31.1920.1057@0.31.1920.1057" timestamp="1611147311401" />
<state width="2006" height="264" key="GridCell.Tab.1.right/0.31.2048.1072@0.31.2048.1072" timestamp="1614265484452" />
<state x="513" y="203" width="1022" height="732" key="SettingsEditor" timestamp="1613769812785">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state x="513" y="203" width="1022" height="732" key="SettingsEditor/0.31.2048.1072@0.31.2048.1072" timestamp="1613769812785" />
<state x="580" y="300" width="806" height="530" key="Vcs.Push.Dialog.v2" timestamp="1615978652202">
<screen x="0" y="31" width="1920" height="1057" />
</state>
<state x="580" y="300" key="Vcs.Push.Dialog.v2/0.31.1920.1057@0.31.1920.1057" timestamp="1615978652202" />
<state x="619" y="304" width="806" height="530" key="Vcs.Push.Dialog.v2/0.31.2048.1072@0.31.2048.1072" timestamp="1613772573312" />
<state x="495" y="125" width="950" height="586" key="com.intellij.execution.console.ConsoleHistoryController$MyBrowseAction$1" timestamp="1615364916386">
<screen x="0" y="31" width="1920" height="1120" />
</state>
<state x="342" y="177" key="com.intellij.execution.console.ConsoleHistoryController$MyBrowseAction$1/0.31.1280.640@0.31.1280.640" timestamp="1611262153624" />
<state x="495" y="125" key="com.intellij.execution.console.ConsoleHistoryController$MyBrowseAction$1/0.31.1920.1120@0.31.1920.1120" timestamp="1615364916386" />
<state x="547" y="276" width="950" height="586" key="com.intellij.execution.console.ConsoleHistoryController$MyBrowseAction$1/0.31.2048.1072@0.31.2048.1072" timestamp="1611245376277" />
<state x="690" y="396" key="com.intellij.ide.util.TipDialog" timestamp="1610094943136">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state x="647" y="391" key="com.intellij.ide.util.TipDialog/0.31.1920.1057@0.31.1920.1057" timestamp="1606731759814" />
<state x="690" y="396" key="com.intellij.ide.util.TipDialog/0.31.2048.1072@0.31.2048.1072" timestamp="1610094943136" />
<state x="687" y="268" width="672" height="678" key="search.everywhere.popup" timestamp="1607632833117">
<screen x="0" y="31" width="2048" height="1072" />
</state>
<state x="687" y="268" width="672" height="678" key="search.everywhere.popup/0.31.2048.1072@0.31.2048.1072" timestamp="1607632833117" />
<MESSAGE value="updates documentation" />
<MESSAGE value="uploads the adapted model for estimations in california and implements required changes" />
<option name="LAST_COMMIT_MESSAGE" value="uploads the adapted model for estimations in california and implements required changes" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
......@@ -244,6 +197,21 @@
<line>216</line>
<option name="timeStamp" value="162" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/pysmm/derive_SM.py</url>
<line>61</line>
<option name="timeStamp" value="163" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/pysmm/GEE_wrappers.py</url>
<line>2513</line>
<option name="timeStamp" value="166" />
</line-breakpoint>
<line-breakpoint enabled="true" suspend="THREAD" type="python-line">
<url>file://$PROJECT_DIR$/pysmm/derive_SM.py</url>
<line>97</line>
<option name="timeStamp" value="167" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
......
......@@ -1672,7 +1672,7 @@ class GEE_extent(object):
mask_snow_frozen_GLDAS=False)
self.get_sand_content()
# self.get_clay_content()
self.get_clay_content()
self.get_bulk_density()
self.OVERWRITE = overwrite
......@@ -1691,9 +1691,10 @@ class GEE_extent(object):
tmp = ee.Image(image)
# Covert to linear
out = ee.Image(10).pow(tmp.select('VV_gamma0vol').divide(10))
out = ee.Image(10).pow(tmp.select(['VV_gamma0vol', 'VH_gamma0vol', 'VV_gamma0surf', 'VH_gamma0surf']).divide(10))
# rename
out = out.select(['constant'], ['VV_gamma0vol'])
#out = out.select(['constant_0', 'constant_2', 'constant_3'],
# ['VV_gamma0vol', 'VV_gamma0surf', 'VH_gamma0surf'])
return out.set('system:time_start', tmp.get('system:time_start'))
......@@ -1743,6 +1744,7 @@ class GEE_extent(object):
doi = self.S1_DATE
s1_selected = ee.Image(gee_s1_filtered.map(getddist).sort('dateDist').first())
s1_g0vol = s1_selected.select(['VV_gamma0vol', 'VH_gamma0vol'])
s1_g0surf = s1_selected.select(['VV_gamma0surf', 'VH_gamma0surf'])
if tempfilter == True:
# despeckle
......@@ -1760,35 +1762,45 @@ class GEE_extent(object):
# extract information
s1_g0vol_vv = s1_g0vol.select('VV_gamma0vol')
s1_g0vol_vh = s1_g0vol.select('VH_gamma0vol')
s1_g0surf_vv = s1_g0surf.select('VV_gamma0surf')
s1_g0surf_vh = s1_g0surf.select('VH_gamma0surf')
# calculate statistical moments
gee_s1_filtered = gee_s1_filtered.filterDate(str(doi.year) + '-01-01', str(doi.year) + '-12-31').select('VV_gamma0vol')
gee_s1_filtered = gee_s1_filtered.filterDate(str(doi.year) + '-01-01', str(doi.year) + '-12-31')#.select('VV_gamma0vol')
gee_s1_lin = gee_s1_filtered.map(tolin)
# check if median was alread computed
tmpcoords = self.roi.getInfo()['coordinates']
mean_asset_path = 's1med_' + str(abs(tmpcoords[0][0][0])) + \
'_' + str(abs(tmpcoords[0][0][1])) + '_' + \
str(abs(tmpcoords[0][2][0])) + \
'_' + str(abs(tmpcoords[0][2][1])) + \
'_' + str(self.sampling) + '_' + str(self.TRACK_NR) + '_' + str(doi.year)
mean_asset_path = mean_asset_path.replace('.', '')
mean_gvv_v = ee.Image('users/felixgreifeneder/' + mean_asset_path)
try:
mean_gvv_v.getInfo()
print('S1 median exists')
except:
# compute median
mean_gvv_v = ee.Image(gee_s1_lin.select('VV_gamma0vol').reduce(ee.Reducer.median(), parallelScale=16))
# export asset
self.GEE_2_asset(raster=mean_gvv_v, name=mean_asset_path, timeout=False, outdir='')
mean_gvv_v = ee.Image('users/felixgreifeneder/' + mean_asset_path)
# tmpcoords = self.roi.getInfo()['coordinates']
# mean_asset_path = 's1med_' + str(abs(tmpcoords[0][0][0])) + \
# '_' + str(abs(tmpcoords[0][0][1])) + '_' + \
# str(abs(tmpcoords[0][2][0])) + \
# '_' + str(abs(tmpcoords[0][2][1])) + \
# '_' + str(self.sampling) + '_' + str(self.TRACK_NR) + '_' + str(doi.year)
# mean_asset_path = mean_asset_path.replace('.', '')
# mean_gvv_v = ee.Image('users/felixgreifeneder/' + mean_asset_path)
# try:
# mean_gvv_v.getInfo()
# print('S1 median exists')
# except:
# compute median
mean_gvv_v = ee.Image(gee_s1_lin.select('VV_gamma0vol').reduce(ee.Reducer.median(), parallelScale=16))
mean_gvh_v = ee.Image(gee_s1_lin.select('VH_gamma0vol').reduce(ee.Reducer.median(), parallelScale=16))
mean_gvv_s = ee.Image(gee_s1_lin.select('VV_gamma0surf').reduce(ee.Reducer.median(), parallelScale=16))
mean_gvh_s = ee.Image(gee_s1_lin.select('VH_gamma0surf').reduce(ee.Reducer.median(), parallelScale=16))
# export asset
# self.GEE_2_asset(raster=mean_gvv_v, name=mean_asset_path, timeout=False, outdir='')
# mean_gvv_v = ee.Image('users/felixgreifeneder/' + mean_asset_path)
# std_gvv_v = ee.Image(gee_s1_lin.select('VV_gamma0vol').reduce(ee.Reducer.stdDev(), parallelScale=24))
# g0 - surf
# k1gvv_s = ee.Image(gee_s1_ln.select('VV_gamma0surf').reduce(ee.Reducer.mean(), parallelScale=24))
# k2gvv_s = ee.Image(gee_s1_ln.select('VV_gamma0surf').reduce(ee.Reducer.stdDev(), parallelScale=24))
k1gvv_v = ee.Image(gee_s1_filtered.select('VV_gamma0vol').reduce(ee.Reducer.mean(), parallelScale=24))
k1gvh_v = ee.Image(gee_s1_filtered.select('VH_gamma0vol').reduce(ee.Reducer.mean(), parallelScale=24))
k2gvv_v = ee.Image(gee_s1_filtered.select('VV_gamma0vol').reduce(ee.Reducer.stdDev(), parallelScale=24))
k1gvh_s = ee.Image(gee_s1_filtered.select('VH_gamma0surf').reduce(ee.Reducer.mean(), parallelScale=24))
k2gvv_s = ee.Image(gee_s1_filtered.select('VV_gamma0surf').reduce(ee.Reducer.stdDev(), parallelScale=24))
k2gvh_s = ee.Image(gee_s1_filtered.select('VH_gamma0surf').reduce(ee.Reducer.stdDev(), parallelScale=24))
# k3gvv_s = ee.Image(gee_s1_ln.select('VV_gamma0surf').reduce(ee.Reducer.skew(), parallelScale=24))
# k4gvv_s = ee.Image(gee_s1_ln.select('VV_gamma0surf').reduce(ee.Reducer.kurtosis(), parallelScale=24))
# mean_gvv_s = ee.Image(gee_s1_lin.select('VV_gamma0surf').reduce(ee.Reducer.mean(), parallelScale=24))
......@@ -1821,45 +1833,87 @@ class GEE_extent(object):
# self.S1_SIG0_VV_db = s1_sig0_vv
self.S1_G0VOL_VV_db = s1_g0vol_vv
self.S1G0VOLMEAN_VV = ee.Image(10).multiply(mean_gvv_v.log10()).copyProperties(mean_gvv_v)
self.S1_G0VOL_VH_db = s1_g0vol_vh
self.S1G0VOLMEAN_VH = ee.Image(10).multiply(mean_gvh_v.log10()).copyProperties(mean_gvh_v)
self.S1_G0SURF_VV_db = s1_g0surf_vv
self.S1_G0SURF_VH_db = s1_g0surf_vh
self.S1G0SURFMEAN_VV = ee.Image(10).multiply(mean_gvv_s.log10()).copyProperties(mean_gvv_s)
self.S1G0SURFMEAN_VH = ee.Image(10).multiply(mean_gvh_s.log10()).copyProperties(mean_gvh_s)
self.K1G0VV_V = k1gvv_v
self.K1G0VH_V = k1gvh_v
self.K2G0VV_V = k2gvv_v
self.K1G0VH_S = k1gvh_s
self.K2G0VV_S = k2gvv_s
self.K2G0VH_S = k2gvh_s
def estimate_SM_GBR_1step(self):
# load GBR models
from pysmm.no_GLDAS_decisiontree_GEE__1step import tree as GBR_tree
from pysmm.no_GLDAS_decisiontree_GEE__1step_w_grapex_data import tree as GBR_tree
import sys
g0_v_vv = self.S1_G0VOL_VV_db
g0_v_vh = self.S1_G0VOL_VH_db
g0_s_vv = self.S1_G0SURF_VV_db
g0_s_vh = self.S1_G0SURF_VH_db
dg0_v_vv = g0_v_vv.subtract(self.S1G0VOLMEAN_VV)
dg0_v_vh = g0_v_vh.subtract(self.S1G0VOLMEAN_VH)
dg0_s_vv = g0_s_vv.subtract(self.S1G0SURFMEAN_VV)
dg0_s_vh = g0_s_vh.subtract(self.S1G0SURFMEAN_VH)
g0_v_vv_k1 = self.K1G0VV_V
g0_v_vh_k1 = self.K1G0VH_V
g0_v_vv_k2 = self.K2G0VV_V
g0_s_vh_k1 = self.K1G0VH_S
g0_s_vv_k2 = self.K2G0VV_S
g0_s_vh_k2 = self.K2G0VH_S
crops = self.CROPS_COVER
grass = self.GRASS_COVER
moss = self.MOSS_COVER
l8b1 = self.L8_IMG.select('B1')
l8b2 = self.L8_IMG.select('B2')
l8b2med = self.L8_MEAN.select('B2_median')
l8b3 = self.L8_IMG.select('B3')
l8b3med = self.L8_MEAN.select('B3_median')
l8b4 = self.L8_IMG.select('B4')
l8b4med = self.L8_MEAN.select('B4_median')
l8b5 = self.L8_IMG.select('B5')
l8b5med = self.L8_MEAN.select('B5_median')
l8b6 = self.L8_IMG.select('B6')
l8b6med = self.L8_MEAN.select('B6_median')
l8b7 = self.L8_IMG.select('B7')
l8b10 = self.L8_IMG.select('B10')
l8b10med = self.L8_MEAN.select('B10_median')
l8b11 = self.L8_IMG.select('B11')
l8b11med = self.L8_MEAN.select('B11_median')
l8dt = self.L8_DDATE
ndvi = self.EVI_IMG
ndvi_med = self.EVI_MEAN
bulk = self.BULK
clay = self.CLAY
sand = self.SAND
input_image1 = ee.Image([dg0_v_vv.toFloat(),
dg0_v_vh.toFloat(),
g0_s_vv.toFloat(),
dg0_s_vv.toFloat(),
g0_v_vv_k1.toFloat(),
g0_s_vh_k2.toFloat(),
crops.toFloat(),
grass.toFloat(),
moss.toFloat(),
l8b1.toFloat(),
l8b4.toFloat(),
l8b4med.toFloat(),
l8b5.toFloat(),
l8b5med.toFloat(),
l8b11.toFloat(),
l8b11med.toFloat(),
l8b6.toFloat(),
l8b6med.toFloat(),
l8dt.toFloat(),
ndvi.toFloat(),
ndvi_med.toFloat(),
bulk.toFloat(),
clay.toFloat(),
sand.toFloat()])
input_image1 = input_image1.rename(['dg0_v_vv', 'crops', 'grass', 'moss', 'l8b4', 'l8b4_med', 'l8b5',
'l8b5_med', 'l8b11', 'l8b11_med', 'ndvi', 'ndvi_med', 'bulk', 'sand'])
input_image1 = input_image1.rename(['dg0_v_vv', 'dg0_v_vh', 'g0_s_vv', 'dg0_s_vv', 'k1_v_vv',
'k2_s_vh', 'crops', 'grass', 'moss', 'l8b1', 'l8b4', 'l8b5',
'l8b6', 'l8b6_med', 'l8dt','ndvi', 'ndvi_med', 'bulk', 'clay', 'sand'])
ipt_img_mask1 = input_image1.mask().reduce(ee.Reducer.allNonZero())
......@@ -2008,7 +2062,12 @@ class GEE_extent(object):
ee.Image(dem),
model)
gee_s1_filtered = gee_s1_fltd_vol
model = 'surface'
gee_s1_fltd_surf = self._slope_correction(gee_s1_filtered,
ee.Image(dem),
model)
gee_s1_filtered = gee_s1_fltd_vol.combine(gee_s1_fltd_surf, overwrite=True)
# apply no data mask
def mask_no_data(image):
......@@ -2143,7 +2202,7 @@ class GEE_extent(object):
gee_l8_collection_all = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
# apply landsat mask
gee_l8_collection_all = gee_l8_collection_all.map(mask).select(['B4', 'B5', 'B11'])
gee_l8_collection_all = gee_l8_collection_all.map(mask)#.select(['B4', 'B5', 'B11'])
def date_mosaic(image):
......@@ -2276,7 +2335,7 @@ class GEE_extent(object):
gee_l8_collection_all = ee.ImageCollection('LANDSAT/LC08/C01/T1_SR')
# apply landsat mask
gee_l8_collection = gee_l8_collection_all.map(mask).select(['B4', 'B5', 'B11'])
gee_l8_collection = gee_l8_collection_all.map(mask)#.select(['B4', 'B5', 'B11'])
if date is None:
doi = self.S1_DATE
......@@ -2291,18 +2350,19 @@ class GEE_extent(object):
'_' + str(abs(tmpcoords[0][2][1])) + \
'_' + str(self.sampling) + '_' + str(doi.year)
mean_asset_path = mean_asset_path.replace('.', '')
gee_l8_mean = ee.Image('users/felixgreifeneder/' + mean_asset_path)
gee_l8_mean = ee.Image('projects/ee-felixgreifeneder/assets/' + mean_asset_path)
try:
gee_l8_mean.getInfo()
print('L8 median exists')
except:
# compute median
gee_l8_mean = gee_l8_collection.filterDate(str(doi.year) + '-01-01', str(doi.year) + '-12-31') \
# TODO l8 median is now based on the current year - 1. This has to be applied also for training
gee_l8_mean = gee_l8_collection.filterDate(str(doi.year-1) + '-01-01', str(doi.year-1) + '-12-31') \
.reduce(ee.Reducer.median(), parallelScale=16)
#export asset
self.GEE_2_asset(raster=gee_l8_mean, name=mean_asset_path, timeout=False, outdir='')
gee_l8_mean = ee.Image('users/felixgreifeneder/' + mean_asset_path)
gee_l8_mean = ee.Image('projects/ee-felixgreifeneder/assets/' + mean_asset_path)
def addDate(image2):
date_img = ee.Image(image2.date().difference(doi.strftime('%Y-%m-%dT%H:%M:%S'), 'second')).abs().float().rename(
......@@ -2310,7 +2370,7 @@ class GEE_extent(object):
return image2.addBands(date_img)
# create mosaic for the doi
gee_l8_date = gee_l8_collection_all.filterDate((doi - dt.timedelta(days=40)).strftime('%Y-%m-%d'),
gee_l8_date = gee_l8_collection_all.filterDate((doi - dt.timedelta(days=90)).strftime('%Y-%m-%d'),
(doi + dt.timedelta(days=40)).strftime('%Y-%m-%d'))
gee_l8_date = gee_l8_date.map(addDate)
gee_l8_date = gee_l8_date.qualityMosaic('Ddate').float()
......@@ -2374,18 +2434,19 @@ class GEE_extent(object):
'_' + str(abs(tmpcoords[0][2][1])) + \
'_' + str(self.sampling) + '_' + str(doi.year)
mean_asset_path = mean_asset_path.replace('.', '')
evi_mean = ee.Image('users/felixgreifeneder/' + mean_asset_path)
evi_mean = ee.Image('projects/ee-felixgreifeneder/assets/' + mean_asset_path)
try:
evi_mean.getInfo()
print('EVI median exists')
except:
# compute avg
evi_mean = evi_collection.filterDate(str(doi.year) + '-01-01', str(doi.year) + '-12-31') \
# TODO median evi is now based on current year-1 - this has to be implemented also for training
evi_mean = evi_collection.filterDate(str(doi.year-1) + '-01-01', str(doi.year-1) + '-12-31') \
.reduce(ee.Reducer.median(), parallelScale=16)
# export asset
self.GEE_2_asset(raster=evi_mean, name=mean_asset_path, timeout=False, outdir='')
evi_mean = ee.Image('users/felixgreifeneder/' + mean_asset_path)
evi_mean = ee.Image('projects/ee-felixgreifeneder/assets/' + mean_asset_path)
# fiter
# filter
......@@ -2447,9 +2508,9 @@ class GEE_extent(object):
outdir = self.workdir
if outdir != '':
impath = 'users/felixgreifeneder/' + outdir + '/' + name
impath = 'projects/ee-felixgreifeneder/assets/' + outdir + '/' + name
else:
impath = 'users/felixgreifeneder/' + name
impath = 'projects/ee-felixgreifeneder/assets/' + name
try:
file_avail = ee.Image(impath)
......@@ -2478,3 +2539,33 @@ class GEE_extent(object):
break
else:
print('Export completed')
def GEE_2_drive(self, outdir=None, raster='ESTIMATED_SM', name='SM', timeout=True):
# Export GEE rasters as asset - specify raster as string
if isinstance(raster, str):
geds = self.__getattribute__(raster)
else:
geds = raster
if outdir is None:
outdir = self.workdir
file_exp = ee.batch.Export.image.toDrive(image=geds, description='fileexp' + name,
folder=outdir,
fileNamePrefix=name,
region=self.roi.getInfo()['coordinates'],
scale=self.sampling,
maxPixels=1000000000000)
file_exp.start()
start = time.time()
while file_exp.active():
time.sleep(2)
if timeout and (time.time() - start) > 4800:
success = 0
break
else:
print('Export completed')
\ No newline at end of file
......@@ -80,7 +80,7 @@ def get_map(minlon, minlat, maxlon, maxlat,
# initialise retrieval
GEE_interface.init_SM_retrieval(dateI.year, dateI.month, dateI.day, hour=dateI.hour, minute=dateI.minute,
track=orbitI)
track=orbitI, overwrite=overwrite)
if GEE_interface.ORBIT == 'ASCENDING':
orbit_prefix = 'A'
......@@ -95,15 +95,16 @@ def get_map(minlon, minlat, maxlon, maxlat,
'{:02d}'.format(GEE_interface.S1_DATE.second) + '_' + \
'{:03d}'.format(math.trunc(GEE_interface.TRACK_NR)) + '_' + orbit_prefix
if overwrite == False and os.path.exists(outpath + outname + '.tif'):
print(outname + ' already done')
continue
# if overwrite == False and os.path.exists(outpath + outname + '.tif'):
# print(outname + ' already done')
# continue
# Estimate soil moisture
GEE_interface.estimate_SM_GBR_1step()
if GEE_interface.ESTIMATED_SM is not None:
GEE_interface.GEE_2_asset(name=outname, timeout=False)
#GEE_interface.GEE_2_asset(name=outname, timeout=False)
GEE_interface.GEE_2_drive(name=outname, timeout=False)
GEE_interface = None
......
This diff is collapsed.