(二)基于Python的Geotrellis实现-栅格切片的简单案例

直接使用geopyspark提供的测试代码,我这里稍微进行了改造,步骤如下:

1、pycharm创建python项目geotrellis-python-temple。

2、创建py文件:geotrellis-hello.py

3、代码如下:

#引入以下三个包
import geopyspark as gps
from pyspark import SparkContext
from shapely.geometry import box

def test():
    #创建spark配置及上下文
    conf = gps.geopyspark_conf(appName="geopyspark-example")
    sc = SparkContext(conf=conf)

    #获取GeoTiff文件并加载
    #注意路径,windows使用绝对路径并输入file:///标识,linux不需要盘符,由于spark使用本地模式,不需要hdfs
    #如果使用hdfs,则使用hdfs://l目录
    raster_layer = gps.geotiff.get(layer_type=gps.LayerType.SPATIAL,
                                   uri='file:///D:/geotrellis/data/hum_daily_2003152.tif',
                                   #uri='file:///D:/geotrellis/data/MODIS_MODIS_EFinst_250m_2003.tif',                     #local
                                   num_partitions=100)

    # 切片图层设置,坐标系设为wgs84,这个建议和输入tif的坐标一致。
    tiled_layer = raster_layer.tile_to_layout(layout=gps.GlobalLayout(), target_crs=4326)

    #坐标裁剪范围,按照输入tif的extent设置
    #area_of_interest = box(138.833923847899, 34.9568230249776, 141.45036774169,37.109457868982)
    area_of_interest = box(0, -90.25, 360, 90)                            #hum_daily_2003152
    #area_of_interest = box(87.5781665097915, 29.10363837291, 103.055919463787, 39.3026410747203)                            #MODIS_MODIS_EFinst_250m_2003

    # 根据范围创建切片
    masked = tiled_layer.mask(geometries=area_of_interest)

    # 创建金字塔
    pyramided_mask = masked.pyramid()

    # 根据金字塔进行切片
    #注意输出路径,要求同输入路径
    for pyramid in pyramided_mask.levels.values():
        gps.write(#uri='file:///D:/geotrellis/data/python_tem1/output',
                  uri='file:///D:/geotrellis/data/python_tem1/output_1',   #local
                  layer_name='north-west-philly',
                  tiled_raster_layer=pyramid)

if __name__ == '__main__':
    test()

4、提交给spark执行

由于我是在windows下部署的spark,所以只能使用local模式进行测试。如下:

spark-submit

--jars D:\pythonSystem\Python37\Lib\site-packages\geopyspark\jars\geotrellis-backend-assembly-0.2.0.jar

—master local

--py-files D:\geotrellis\geotrellis-python-temple\build\geotrellis_hello\base_library.zip

D:\geotrellis\geotrellis-python-temple\geotrellis_hello.py

注意:提交的时候需要同时提交geopyspark的jar包,否则报错。

执行结果如下:

(二)基于Python的Geotrellis实现-栅格切片的简单案例_第1张图片

(二)基于Python的Geotrellis实现-栅格切片的简单案例_第2张图片

说明切片成功。如果需要展示的话还需要进一步渲染。

你可能感兴趣的:(geotrellis,geotrellis)