Skip to content

Instantly share code, notes, and snippets.

@rutgerhofste
Created September 7, 2017 19:24
Show Gist options
  • Save rutgerhofste/b5e3ff7862e727a17d1bc77c941bef97 to your computer and use it in GitHub Desktop.
Save rutgerhofste/b5e3ff7862e727a17d1bc77c941bef97 to your computer and use it in GitHub Desktop.
ee question
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Calculate average PCRGlobWB supply using EE\n",
"\n",
"* Purpose of script: This script will calculate baseline supply based on runoff for 1960-2014 at 5min resolution\n",
"* Author: Rutger Hofste\n",
"* Kernel used: python27\n",
"* Date created: 20170830"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import os\n",
"import ee\n",
"import folium\n",
"from folium_gee import *\n",
"import subprocess"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"ee.Initialize()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"EE_INPUT_PATH = \"projects/WRI-Aquaduct/PCRGlobWB20V07/\"\n",
"\n",
"# Unfortunately specifying the dimensions caused the script to crash (internal error on Google's side) Specify scale instead.\n",
"\n",
"DIMENSION5MIN = {}\n",
"DIMENSION5MIN[\"x\"] = 4320\n",
"DIMENSION5MIN[\"y\"] = 2160\n",
"\n",
"INPUT_FILE_NAME_ANNUAL = \"global_historical_runoff_year_myear_5min_1958_2014\"\n",
"INPUT_FILE_NAME_MONTH = \"global_historical_runoff_month_mmonth_5min_1958_2014\"\n",
"\n",
"EE_IC_NAME_ANNUAL = \"global_historical_reducedmeanrunoff_year_myear_5min_1960_2014\"\n",
"EE_IC_NAME_MONTH = \"global_historical_reducedmeanrunoff_month_mmonth_5min_1960_2014\"\n",
"\n",
"EE_I_NAME_ANNUAL = EE_IC_NAME_ANNUAL\n",
"EE_I_NAME_MONTH = EE_IC_NAME_MONTH\n",
"\n",
"YEAR_MIN = 1960\n",
"YEAR_MAX = 2014\n",
"\n",
"ANNUAL_UNITS = \"m/year\"\n",
"MONTHLY_UNITS = \"m/month\"\n",
"\n",
"ANNUAL_EXPORTDESCRIPTION = \"reducedmeanrunoff_year\" #final format reducedmeanrunoff_yearY1960Y2014\n",
"MONTHLY_EXPORTDESCRIPTION = \"reducedmeanrunoff_month\" #final format reducedmeanrunoff_monthY1960Y2014M01\n",
"VERSION = 15\n",
"\n",
"MAXPIXELS =1e10"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The Standardized format to store assets on Earth Engine is EE_INPUT_PATH / EE_IC_NAME / EE_I_NAME and every image should have the property expertdescription that would allow to export the data to a table header. "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dimensions = \"%sx%s\" %(DIMENSION5MIN[\"x\"],DIMENSION5MIN[\"y\"])"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4320x2160\n"
]
}
],
"source": [
"print(dimensions)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"projection = ee.Image(ee.ImageCollection(os.path.join(EE_INPUT_PATH,INPUT_FILE_NAME_ANNUAL)).first()).projection().getInfo()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"crs = ee.Image(ee.ImageCollection(os.path.join(EE_INPUT_PATH,INPUT_FILE_NAME_ANNUAL)).first()).projection().crs().getInfo()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"crsTransform = ee.Image(ee.ImageCollection(os.path.join(EE_INPUT_PATH,INPUT_FILE_NAME_ANNUAL)).first()).projection().transform().getInfo()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"{u'crs': u'EPSG:4326', u'type': u'Projection', u'transform': [0.0833333309780367, 0.0, -179.99999491255934, 0.0, -0.0833333309780367, 90.00000254430942]}\n"
]
}
],
"source": [
"print(projection)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"scale = ee.Image(ee.ImageCollection(os.path.join(EE_INPUT_PATH,INPUT_FILE_NAME_ANNUAL)).first()).projection().nominalScale().getInfo()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"def geometryFromProj(projection,dimensions):\n",
" coords = {}\n",
" coords[\"xmin\"]=projection[\"transform\"][2]\n",
" coords[\"xmax\"]=projection[\"transform\"][2]+dimensions[\"x\"]*projection[\"transform\"][0]\n",
" coords[\"ymin\"]=projection[\"transform\"][5]+dimensions[\"y\"]*projection[\"transform\"][4]\n",
" coords[\"ymax\"]=projection[\"transform\"][5]\n",
" geometry = ee.Geometry.Polygon(coords=[[coords[\"xmin\"], coords[\"ymin\"]], \n",
" [coords[\"xmax\"], coords[\"ymin\"]],\n",
" [coords[\"xmax\"], coords[\"ymax\"]],\n",
" [coords[\"xmin\"], coords[\"ymax\"]]],\n",
" proj= ee.Projection('EPSG:4326'),geodesic=False )\n",
" return geometry\n",
"\n",
"def reduceMean(ic,yearMin,yearMax):\n",
" dateFilterMin = ee.Filter.gte(\"year\",yearMin)\n",
" dateFilterMax = ee.Filter.lte(\"year\",yearMax)\n",
" filteredIc = ee.ImageCollection(ic.filter(dateFilterMin).filter(dateFilterMax))\n",
" reducedImage = ee.Image(filteredIc.reduce(ee.Reducer.mean()))\n",
" return reducedImage\n",
"\n",
"def exportToAsset(image,description,assetId,dimensions,region,maxPixels):\n",
" print(dimensions)\n",
" task = ee.batch.Export.image.toAsset(\n",
" image = ee.Image(image),\n",
" description = description,\n",
" assetId = assetId,\n",
" dimensions = dimensions,\n",
" #scale = scale,\n",
" crs = crs,\n",
" crsTransform = crsTransform,\n",
" #region = geometry.bounds().getInfo()['coordinates'][0],\n",
" maxPixels = maxPixels\n",
" )\n",
" print(assetId)\n",
" task.start()\n",
" return 1\n",
"\n",
"def addValidProperties(image,d):\n",
" nestedNewDict = {}\n",
" #remove non string or real properties\n",
" for nestedKey, nestedValue in d.iteritems():\n",
" if isinstance(nestedValue,str) or isinstance(nestedValue,int):\n",
" newDict[nestedKey] = nestedValue\n",
" else:\n",
" pass\n",
" #print(\"removing property: \",nestedKey )\n",
" image = ee.Image(image).set(nestedNewDict)\n",
" return image\n",
"\n",
"def createImageCollections(d):\n",
" command = (\"earthengine create collection %s%s\") %(EE_INPUT_PATH,d[\"ic_name\"])\n",
" response = subprocess.check_output(command,shell=True)\n",
" print(response)\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"geometry = geometryFromProj(projection,DIMENSION5MIN)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"d = {}"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"d[\"annual\"] = {\"ic\": ee.ImageCollection(os.path.join(EE_INPUT_PATH,INPUT_FILE_NAME_ANNUAL)),\n",
" \"ic_name\": EE_IC_NAME_ANNUAL+\"V%0.2d\" %(VERSION) ,\n",
" \"image_name\": EE_IC_NAME_ANNUAL+\"V%0.2d\" %(VERSION),\n",
" \"temporal_resolution\":\"year\",\n",
" \"rangeMin\":YEAR_MIN,\n",
" \"rangeMax\":YEAR_MAX,\n",
" \"units\":ANNUAL_UNITS,\n",
" \"exportdescription\": ANNUAL_EXPORTDESCRIPTION + \"Y%sY%s\" %(YEAR_MIN,YEAR_MAX),\n",
" \"creation\":\"RutgerHofste_20170901_Python27\",\n",
" \"nodata_value\":-9999,\n",
" \"reducer\":\"mean\",\n",
" \"time_start\": \"%04d-%0.2d-%0.2d\" %(YEAR_MAX,12,1),\n",
" \"version\":VERSION\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"d[\"monthly\"] = {\"ic\": ee.ImageCollection(os.path.join(EE_INPUT_PATH,INPUT_FILE_NAME_MONTH)),\n",
" \"ic_name\": EE_IC_NAME_MONTH +\"V%0.2d\" %(VERSION),\n",
" \"temporal_resolution\":\"month\",\n",
" \"rangeMin\":YEAR_MIN,\n",
" \"rangeMax\":YEAR_MAX,\n",
" \"units\":MONTHLY_UNITS,\n",
" \"creation\":\"RutgerHofste_20170901_Python27\",\n",
" \"nodata_value\":-9999,\n",
" \"reducer\":\"mean\", \n",
" \"version\":VERSION,\n",
" # add month , image_name and exportdexription\n",
" }"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Asset projects/WRI-Aquaduct/PCRGlobWB20V07/global_historical_reducedmeanrunoff_month_mmonth_5min_1960_2014V15 already exists\n",
"\n",
"Asset projects/WRI-Aquaduct/PCRGlobWB20V07/global_historical_reducedmeanrunoff_year_myear_5min_1960_2014V15 already exists\n",
"\n"
]
}
],
"source": [
"for key, value in d.iteritems():\n",
" createImageCollections(value)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4320x2160\n",
"projects/WRI-Aquaduct/PCRGlobWB20V07/global_historical_reducedmeanrunoff_month_mmonth_5min_1960_2014V15/global_historical_reducedmeanrunoff_month_mmonth_5min_1960_2014M01V15\n"
]
},
{
"ename": "EEException",
"evalue": "Malformed JSON: 'PARAM_MT[\"Affine\", \n PARAMETER[\"num_row\", 3], \n PARAMETER[\"num_col\", 3], \n PARAMETER[\"elt_0_0\", 0.0833333309780367], \n PARAMETER[\"elt_0_2\", -179.99999491255934], \n PARAMETER[\"elt_1_1\", -0.0833333309780367], \n PARAMETER[\"elt_1_2\", 90.00000254430942]]'.",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mEEException\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-17-844d9bff3744>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 18\u001b[0m \u001b[0mvalidImage\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0maddValidProperties\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mreducedImage\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 19\u001b[0m \u001b[0massetId\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mEE_INPUT_PATH\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mnewDict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"ic_name\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"/\"\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mnewDict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"image_name\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 20\u001b[0;31m \u001b[0mexportToAsset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalidImage\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"exportdescription\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m\"V%s\"\u001b[0m \u001b[0;34m%\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnewDict\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"version\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0massetId\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdimensions\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mgeometry\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mMAXPIXELS\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 21\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 22\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m<ipython-input-11-1e9ed77a567b>\u001b[0m in \u001b[0;36mexportToAsset\u001b[0;34m(image, description, assetId, dimensions, region, maxPixels)\u001b[0m\n\u001b[1;32m 33\u001b[0m )\n\u001b[1;32m 34\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0massetId\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 35\u001b[0;31m \u001b[0mtask\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstart\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 36\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 37\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/anaconda3/envs/python27/lib/python2.7/site-packages/ee/batch.pyc\u001b[0m in \u001b[0;36mstart\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 71\u001b[0m raise ee_exception.EEException(\n\u001b[1;32m 72\u001b[0m 'Task config must be specified for tasks to be started.')\n\u001b[0;32m---> 73\u001b[0;31m \u001b[0mdata\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstartProcessing\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mid\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconfig\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 74\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstatus\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/anaconda3/envs/python27/lib/python2.7/site-packages/ee/data.pyc\u001b[0m in \u001b[0;36mstartProcessing\u001b[0;34m(taskId, params)\u001b[0m\n\u001b[1;32m 536\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mparams\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcopy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 537\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'id'\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtaskId\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 538\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msend_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'/processingrequest'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 539\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 540\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m/opt/anaconda3/envs/python27/lib/python2.7/site-packages/ee/data.pyc\u001b[0m in \u001b[0;36msend_\u001b[0;34m(path, params, opt_method, opt_raw)\u001b[0m\n\u001b[1;32m 781\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mee_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mEEException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Invalid JSON: %s'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 782\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'error'\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mjson_content\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 783\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mee_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mEEException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mjson_content\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'error'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'message'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 784\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;34m'data'\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mcontent\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 785\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mee_exception\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mEEException\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'Malformed response: '\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcontent\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mEEException\u001b[0m: Malformed JSON: 'PARAM_MT[\"Affine\", \n PARAMETER[\"num_row\", 3], \n PARAMETER[\"num_col\", 3], \n PARAMETER[\"elt_0_0\", 0.0833333309780367], \n PARAMETER[\"elt_0_2\", -179.99999491255934], \n PARAMETER[\"elt_1_1\", -0.0833333309780367], \n PARAMETER[\"elt_1_2\", 90.00000254430942]]'."
]
}
],
"source": [
"newDict = {}\n",
"for key, value in d.iteritems():\n",
" newDict[key] = value\n",
" reducedImage = reduceMean(value[\"ic\"],YEAR_MIN,YEAR_MAX)\n",
" if value[\"temporal_resolution\"] == \"year\":\n",
" reducedImage = reduceMean(value[\"ic\"],value[\"rangeMin\"],newDict[key][\"rangeMax\"])\n",
" validImage = addValidProperties(reducedImage,value)\n",
" assetId = EE_INPUT_PATH+newDict[key][\"ic_name\"]+\"/\"+newDict[key][\"image_name\"]\n",
" exportToAsset(validImage,newDict[key][\"exportdescription\"]+\"V%s\"%(newDict[key][\"version\"]),assetId,dimensions,geometry,MAXPIXELS)\n",
" \n",
" if value[\"temporal_resolution\"] == \"month\":\n",
" for month in range(1,2):\n",
" newDict[key][\"month\"] = month\n",
" newDict[key][\"image_name\"] = EE_IC_NAME_MONTH +\"M%0.2dV%0.2d\" %(month,VERSION)\n",
" newDict[key][\"exportdescription\"] = ANNUAL_EXPORTDESCRIPTION + \"Y%sY%sM%0.d\" %(YEAR_MIN,YEAR_MAX,month)\n",
" \n",
" reducedImage = reduceMean(value[\"ic\"],newDict[key][\"rangeMin\"],newDict[key][\"rangeMax\"])\n",
" validImage = addValidProperties(reducedImage,value)\n",
" assetId = EE_INPUT_PATH+newDict[key][\"ic_name\"]+\"/\"+newDict[key][\"image_name\"]\n",
" exportToAsset(validImage,value[\"exportdescription\"]+\"V%s\" %(newDict[key][\"version\"]),assetId,dimensions,geometry,MAXPIXELS) \n",
" pass\n",
" \n",
" \n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 27",
"language": "python",
"name": "python27"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment