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
    
  • 相关阅读:
    Flink实时数仓(数据可视化)
    Hive调优
    面试(涉及技术一)
    启动Flink的yarnsession模式出错
    面试(涉及技术二)
    Filnk实时数仓(DWS层)
    Filnk实时数仓(Clickhouse)
    Filnk实时数仓(Prometheus监控)
    Filnk实时数仓(DWM层)
    Centos7下杀毒软件clamav的安装和使用
  • 原文地址:https://www.cnblogs.com/polong/p/9831073.html
Copyright © 2011-2022 走看看