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及属性的Feature
python代码如下:
# 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/earth-engine/apidocs/ee-feature?hl=en
- https://developers.google/earth-engine/guides/features
- https://github/giswqs/earthengine-py-notebooks/blob/master/FeatureCollection/creating_feature.ipynb
更多推荐
GEE:创建新的Feature并设置相应属性
发布评论