zoukankan      html  css  js  c++  java
  • Arcpy多线程热力图

        起因是这样一段对话,领导:你会用脚本生成热力图图片吗?我:可以研究下。领导:那这个需求就给你了。我:......

        经过一番研究,研究出大概的思路,先将有经纬度的表中的数据筛选出表并生成xy事件,接着利用核密度工具生成栅格,最后呢裁剪栅格通过mapping包出图。

        出图过程比较慢,所以考虑使用多线程(一张图五分钟,十九张图多线程九分钟你说吼不吼)。多线程第一次用,一开始打算用数据库存放数据表和栅格,不过锁表比较难解决,于是选择了简单粗暴地在文件地理数据库(gdb)里处理,每个文件使用一个gdb,这样速度快也不用考虑会被锁表,处理完以后就直接删库(跑路)。多线程中尽量不要有删除操作,容易冲突,把删除都放在单线程中这样不容易出错。

    MyGPpool = multiprocessing.Pool(19)
    results = MyGPpool.map(batch, parameters)
    MyGPpool.close()
    MyGPpool.join()
    

        arcpy.mapping导出格式推荐使用png格式,可以设置透明背景,最重要一点就是可以在浏览器中查看(这个是tif格式难达到的,也可能是我没找到好的方法)。replaceDataSource替换数据源的时候要设置好路径(不是完整路径不是完整路径不是完整路径),数据源类型,数据名称。

    mxd = arcpy.mapping.MapDocument(mxd_file)
    df = arcpy.mapping.ListDataFrames(mxd, '图层')[0]
    lyr = arcpy.mapping.ListLayers(mxd)[0]
    datasetName = os.path.basename(data_raster)
    dataRasterWorkspace = os.path.dirname(data_raster)
    if lyr.supports("DATASOURCE"):
           lyr.replaceDataSource(dataRasterWorkspace,"FILEGDB_WORKSPACE", datasetName)
            df.extent = extent
            df.panToExtent(extent)
            arcpy.mapping.ExportToPNG(mxd, out_file, df, color_mode='24-BIT_TRUE_COLOR', world_file=True,background_color="No Color", transparent_color="No Color")
        else:
            arcpy.AddMessage("error")
        arcpy.RefreshActiveView()
        del mxd, df, lyr
    
  • 相关阅读:
    韩式英语
    Daily dictation 听课笔记
    words with same pronunciation
    you will need to restart eclipse for the changes to take effect. would you like to restart now?
    glottal stop(britain fountain mountain)
    education 的发音
    第一次用Matlab 的lamada语句
    SVN的switch命令
    String的split
    SVN模型仓库中的资源从一个地方移动到另一个地方的办法(很久才解决)
  • 原文地址:https://www.cnblogs.com/polong/p/9831073.html
Copyright © 2011-2022 走看看