Although patience and persistence is a painful thing, but it can gradually bring you good.—— Ovid
忍耐和坚持虽是痛苦的事情,但却能渐渐地为你带来好处。——奥维德
一、问题
Earth Engine 中的一个Feature被定义为 GeoJSON 特征。具体来说,a Feature是具有geometry存储 Geometry对象(或 null)的properties属性和存储其他属性字典的属性的对象。
但如何在GEE中创建一个Feature,并为其赋予相应的属性?
二、函数及用法ee.Feature() 三、操作实例 1、创建空Feature
python代码如下:
# Feature不需要 a Geometry并且可以简单地包装一个属性字典# 该情形可应用于数据的分析,以这种方式创建特征对于导出# 具有Dictionary结果(例如image.reduceRegion())的长时间运行的计算很有用。dict = {'foo':ee.Number(8).add(88), 'bar':'nihao'}numFeature = ee.Feature(None, dict)numFeature.getInfo()
2、创建带Geometry及属性的Featurepython代码如下:
# Earth Engine 中的AFeature被定义为 GeoJSON 特征。具体来说,aFeature是具有geometry存储 Geometry对象(或 null)的properties属性和存储其他属性字典的属性的对象。# 要创建 a Feature,请为构造函数提供 Geometry 和(可选)其他属性的字典polygon = ee.Geometry.Polygon([[-35, -10], [35, -10], [35, 10], [-35, 10], [-35, -10]])polyFeature = ee.Feature(polygon, {'foo':42, 'bar':'tart'})Map = geemap.Map()Map.addLayer(polyFeature, {}, 'Feature')Map
结果如下:
3、为Feature添加属性及查询python代码如下:
# 每个Feature都有一个Geometry存储在 geometry属性中的主节点。其他几何图形可以存储在其他属性中。 # Geometry还存在诸如交集和缓冲区之类的方法, Feature以方便获取主对象Geometry,应用操作并将结果设置为新的主对象Geometry。# 结果将保留Feature调用该方法的所有其他属性。还有一些方法可以获取和设置Feature、feature = ee.Feature(ee.Geometry.Point([-122.22599, 37.17605])) .set('genus', 'Pine') .set('species', 'Green')prop1 = feature.get('species')print(prop1.getInfo())# 设置新的属性feature = feature.set('presence', 1)prop2 = feature.get('presence')print(prop2.getInfo())
四、小结 利用ee.Feature()可方便的实现Feature的创建,采用set方法将属性字典添加到属性中,利用get()方法查询相应的属性需要理解创建空Feature的方法,利用该方法结合ee.reduceRegion()能够灵活地实现时间序列结果的处理与分析。参考:
https://developers.google.com/earth-engine/apidocs/ee-feature?hl=enhttps://developers.google.com/earth-engine/guides/featureshttps://github.com/giswqs/earthengine-py-notebooks/blob/master/FeatureCollection/creating_feature.ipynb