google earth engine随缘学习(二)介绍发布GEE地图

这一篇介绍发布GEE地图,偏摸索向

给几个官方发布的引用GEE的demo例子

官方demo—https://developers.google.com/earth-engine/app_engine_examples

打开可以看见代码,本科毕设时做过这个,那个时候只是简单套用模板,现在多多少少有一点框架的知识,看起来稍微容易一点。

先从灯光例子开始学(因为这个比较炫)
google earth engine随缘学习(二)介绍发布GEE地图_第1张图片
google earth engine随缘学习(二)介绍发布GEE地图_第2张图片
它这里用的是Jinja2框架,我之前用过django框架,反正两者差不多,我就用django来做了。从github下载下来html文件和static里的所有文件放到我的django框架对应的路径里去。
接着修改:

google earth engine随缘学习(二)介绍发布GEE地图_第3张图片
在script.js里面,这里的key要写上自己从谷歌地图申请下来的key,不然会无法加载谷歌地图。

google earth engine随缘学习(二)介绍发布GEE地图_第4张图片
在index.html末尾处,这里要写上eeMapId和eeToken,本demo的两个值要打开示例网页,通过控制台查看,我直接贴出来,复制粘贴替换上述代码就好了。
google earth engine随缘学习(二)介绍发布GEE地图_第5张图片
最后就能完美的在本地运行了~

关于eeMapId和eeToken的获取

本来我以为这个值是图像的ID,在GEE可以直接获取,后来发现不是,原来是在server.py生成并传入js的两组代码,现在我把相关功能源代码贴出来:
注意:token好像是随机生成的。而且是有时间限制的,所以官方例子中token是动态生成的

import ee

def GetTrendyMapId():
    collection = ee.ImageCollection(IMAGE_COLLECTION_ID)
    def CreateTimeBand(img):
        year = ee.Date(img.get('system:time_start')).get('year').subtract(1991)
        return ee.Image(year).byte().addBands(img)

    collection = collection.select('stable_lights').map(CreateTimeBand)
    fit = collection.reduce(ee.Reducer.linearFit())
    return fit.getMapId({
        'min': '0',
        'max': '0.18,20,-0.18',
        'bands': 'scale,offset,scale',
    })

ee.Initialize()
IMAGE_COLLECTION_ID = 'NOAA/DMSP-OLS/NIGHTTIME_LIGHTS'
mapid = GetTrendyMapId()
print(mapid)

这里的代码是对历年灯光数据变化做一个线性拟合,得到offset和scale两个参数波段,并将这两个参数波段通过某种拉伸做可视化,并最后封装成代码。
下面将用上述方法来实现人口密度数据的发布:
修改参数为:

def GetTrendyMapId():
    collection = ee.ImageCollection('CIESIN/GPWv4/population-density')
    collection = collection.select('population-density')
    fit = collection
    return fit.getMapId({
        'min': '-40.585220364507',
        'max': '3423.0576525324904',
        'bands': 'population-density',
        'palette': 'eef3e4,ffa2d1,ff1b64'
    })

得到id和token后去替换,再次运行得到网页:

google earth engine随缘学习(二)介绍发布GEE地图_第6张图片
了解了大致的原理后,就可以通过openlayers发布瓦片地图服务了(不过只是暂时的)~



  
    Simple Map
    
    
    
    
  
  
    

注意: 2019.12.10补充部分

新的earthengine-api包里修改了ee.Initialize()里的默认参数,

google earth engine随缘学习(二)介绍发布GEE地图_第7张图片
当默认为true时,输出的mapid将包括mapid和token,原有的token属性变成空,新的改变怎么去加载地图我并没有研究,,但是如果想实现原有的方法加载地图,只需要修改下面_init_.py里的Initialize()里的use_cloud_api参数即可,这里的参数代表是是否启用谷歌云~
在这里插入图片描述
google earth engine随缘学习(二)介绍发布GEE地图_第8张图片

你可能感兴趣的:(小白的GEE学习)