earthengine-api/python/ee/tests/terrain_test.py
Kurt Schwehr 54930b6f2e terrain.py: Add static methods.
PiperOrigin-RevId: 645017579
2024-06-20 07:05:13 -07:00

147 lines
4.2 KiB
Python

#!/usr/bin/env python3
"""Tests for the ee.Terrain module."""
import json
from typing import Any, Dict
import unittest
import ee
from ee import apitestcase
# For an ee.Image(1).
IMAGE_1 = 1
IMAGE_EXPRESSION_1 = {
'functionInvocationValue': {
'functionName': 'Image.constant',
'arguments': {'value': {'constantValue': IMAGE_1}},
}
}
def make_expression_graph(
function_invocation_value: Dict[str, Any],
) -> Dict[str, Any]:
return {
'result': '0',
'values': {'0': {'functionInvocationValue': function_invocation_value}},
}
class TerrainTest(apitestcase.ApiTestCase):
def test_aspect(self):
expect = make_expression_graph({
'functionName': 'Terrain.aspect',
'arguments': {'input': IMAGE_EXPRESSION_1},
})
expression = ee.Terrain.aspect(IMAGE_1)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
expression = ee.Terrain.aspect(input=IMAGE_1)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
def test_fill_minima(self):
border_value = 2
neighborhood = 3
expect = make_expression_graph({
'functionName': 'Terrain.fillMinima',
'arguments': {
'image': IMAGE_EXPRESSION_1,
'borderValue': {'constantValue': border_value},
'neighborhood': {'constantValue': neighborhood},
},
})
expression = ee.Terrain.fillMinima(IMAGE_1, border_value, neighborhood)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
expression = ee.Terrain.fillMinima(
image=IMAGE_1, borderValue=border_value, neighborhood=neighborhood
)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
def test_hill_shadow(self):
azimuth = 2
zenith = 3
neighborhood_size = 4
hysteresis = False
expect = make_expression_graph({
'functionName': 'Terrain.hillShadow',
'arguments': {
'image': IMAGE_EXPRESSION_1,
'azimuth': {'constantValue': azimuth},
'zenith': {'constantValue': zenith},
'neighborhoodSize': {'constantValue': neighborhood_size},
'hysteresis': {'constantValue': hysteresis},
},
})
expression = ee.Terrain.hillShadow(
IMAGE_1, azimuth, zenith, neighborhood_size, hysteresis
)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
expression = ee.Terrain.hillShadow(
image=IMAGE_1,
azimuth=azimuth,
zenith=zenith,
neighborhoodSize=neighborhood_size,
hysteresis=hysteresis,
)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
def test_hillshade(self):
azimuth = 2
elevation = 3
expect = make_expression_graph({
'functionName': 'Terrain.hillshade',
'arguments': {
'input': IMAGE_EXPRESSION_1,
'azimuth': {'constantValue': azimuth},
'elevation': {'constantValue': elevation},
},
})
expression = ee.Terrain.hillshade(IMAGE_1, azimuth, elevation)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
expression = ee.Terrain.hillshade(
input=IMAGE_1, azimuth=azimuth, elevation=elevation
)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
def test_products(self):
expect = make_expression_graph({
'functionName': 'Terrain.products',
'arguments': {'input': IMAGE_EXPRESSION_1},
})
expression = ee.Terrain.products(IMAGE_1)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
expression = ee.Terrain.products(input=IMAGE_1)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
def test_slope(self):
expect = make_expression_graph({
'functionName': 'Terrain.slope',
'arguments': {'input': IMAGE_EXPRESSION_1},
})
expression = ee.Terrain.slope(IMAGE_1)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
expression = ee.Terrain.slope(input=IMAGE_1)
result = json.loads(expression.serialize())
self.assertEqual(expect, result)
if __name__ == '__main__':
unittest.main()