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

    经过一番研究,研究出大概的思路,先将有经纬度的表中的数据筛选出表并生成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

Arcpy多线程热力图的更多相关文章

  1. 多进程使用matplotlib.pyplot绘heatmap(多线程不可以)

    数据格式如下: 8_15/l_eye/2732.png -20.5773 -5.17769 -3.34583 21.5859 9_13_1/l_eye/1211.png -10.1145 34.992 ...

  2. arcpy模块下的并行计算与大规模数据处理

    一个多星期的时间,忍着胃痛一直在做GIS 540: Spatial Programming的课程项目,导致其他方面均毫无进展,可惜可惜.在这个过程当中临时抱佛脚学习了很多Python相关的其他内容,并 ...

  3. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  4. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  5. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  6. Java多线程

    一:进程与线程 概述:几乎任何的操作系统都支持运行多个任务,通常一个任务就是一个程序,而一个程序就是一个进程.当一个进程运行时,内部可能包括多个顺序执行流,每个顺序执行流就是一个线程.   进程:进程 ...

  7. .NET基础拾遗(5)多线程开发基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

  8. Java多线程基础——对象及变量并发访问

    在开发多线程程序时,如果每个多线程处理的事情都不一样,每个线程都互不相关,这样开发的过程就非常轻松.但是很多时候,多线程程序是需要同时访问同一个对象,或者变量的.这样,一个对象同时被多个线程访问,会出 ...

  9. C#多线程之线程池篇3

    在上一篇C#多线程之线程池篇2中,我们主要学习了线程池和并行度以及如何实现取消选项的相关知识.在这一篇中,我们主要学习如何使用等待句柄和超时.使用计时器和使用BackgroundWorker组件的相关 ...

随机推荐

  1. Redis Cluster(集群)

    一.概述 在前面的文章中介绍过了redis的主从和哨兵两种集群方案,redis从3.0版本开始引入了redis-cluster(集群).从主从-哨兵-集群可以看到redis的不断完善:主从复制是最简单 ...

  2. Spring相关问题

    1.什么是 Spring 框架?Spring 框架有哪些主要模块?Spring 框架是一个为 Java 应用程序的开发提供了综合.广泛的基础性支持的 Java 平台.Spring帮助开发者解决了开发中 ...

  3. JavaScript 实现textarea限制输入字数, 输入框字数实时统计更新,输入框实时字数计算移动端bug解决

    textarea称文本域,又称文本区,即有滚动条的多行文本输入控件,在网页的提交表单中经常用到.与单行文本框text控件不同,它不能通过maxlength属性来限制字数,为此必须寻求其他方法来加以限制 ...

  4. 在上线项目中,用Vue写一个星级评价

    先看一下效果: html: <div class="big-star-box"> <img :src="imgNum>0 ? srcStar : ...

  5. Java Bloom filter几种实现比较

    英文原始出处: Bloom filter for Scala, the fastest for JVM 本文介绍的是用Scala实现的Bloom filter. 源代码在github上.依照性能测试结 ...

  6. Java 延迟队列使用

    延时队列,第一他是个队列,所以具有对列功能第二就是延时,这就是延时对列,功能也就是将任务放在该延时对列中,只有到了延时时刻才能从该延时对列中获取任务否则获取不到…… 应用场景比较多,比如延时1分钟发短 ...

  7. 源码级调试的XNU内核

    i春秋翻译小组-FWorldCodeZ 源码级调试的XNU内核 无论你是在开发内核扩展,进行漏洞研究,还是还有其他需要进入macOS / iOS内核,XNU,有时你需要附加调试器.当你这样做时,使用源 ...

  8. storm集群架构

    一.storm何许人也? Storm 是Twitter的一个开源框架.Storm一个分布式的.容错的实时计算系统,它被托管在GitHub上,遵循 Eclipse Public License 1.0. ...

  9. [Swift]LeetCode258. 各位相加 | Add Digits

    Given a non-negative integer num, repeatedly add all its digits until the result has only one digit. ...

  10. 祝雷(依乐祝):一份来自29岁.NET老程序员的自白

    潘老师的文笔果然了得,经过潘老师的妙笔生花后,文章的阅读体验果然好了很多!这里再次感谢潘老师的支持! 祝雷(合肥.NET 俱乐部发起人) [个人介绍] 博客园知名博主(依乐祝).6年以上.NET技术栈 ...