qgis cookbook-QgsMapRendererJob学习】的更多相关文章

Qgis源码中的拖拽.zoomin/out等各个基础功能插件的实现位于qgis_app工程中. 具体头文件为: \QGIS\src\app\qgisapp.h 根据此类可以逐个找到Qgis的基础插件的源代码,对于理解和学习一些方法十分有帮助.…
2016.5.3 第8章  类与对象 8.1 改变对象的字符串显示 __str__ 和 __repr__   %s 和 %r,提到了eval,我没有用过 8.2 自定义字符串的格式化  __format__ 8.3 让对象支持上下文管理,__enter__和__exit__,可以使用with 8.4 创建大量对象时节省内存的方法  __slot__,__slot__更多的是做用作内存优化工具,而不是作为封装工具防止用户给实例添加新的属性. 8.5 在类中封装属性名,属性或方法用下划线开头, _和…
书籍: 目前在看两本 <Essential.ActionScript.3.0> <Flex 4 In Action> 还有两本当手册翻阅,非常喜欢Cookbook这种题材的书,对于初学者里面的例子可以直接拿来现学现卖 <Flex.4.Cookbook> <ActionScript 3.0 Cookbook> 学习网站 http://www.adobe.com/cn/devnet/flex.html Adobe Flex开发人员中心 http://www.ad…
学习到渲染(QgsMapRendererJob),按照教程所讲总是输出不了图像,看了一下qgis的测试源码,发现少了一句话,加上后就可以输出了! from qgis.core import * from qgis.gui import * from qgis.PyQt.QtCore import * from qgis.PyQt.QtWidgets import * from qgis.PyQt.QtGui import * if __name__ == "__main__": vLa…
python cookbook学习笔记 第一章 文本(1) 1.1每次处理一个字符(即每次处理一个字符的方式处理字符串) print list('theString') #方法一,转列表 结果:['t', 'h', 'e', 'S', 't', 'r', 'i', 'n', 'g'] for c in 'theString':#方法二,for循环 print c, 结果:t h e S t r i n g print [c for c in 'theString'] #方法三,列表推导式 结果:…
pig cookbook学习 Overview 近期需要用pig做一些统计,由于没有系统学习,问题出现一些问题,且不容易调试,执行效率也不高.所以打算看一些官方文档,在此做些笔记. pig性能提升 指定类型 如果在load文件时不指定类型,pig在计算时会指定为double类型,而在很多时候,数据本应是整形等,指定为double类型会增加广计算量.另外,指定类型也会使错误提早暴露出来. --Query 1 A = load 'myfile' as (t, u, v); B = foreach A…
matplotlib 是Python下的一个高质量的画图库,可以简单的类似于MATLAB方法构建高质量的图表. 原始文章地址:http://zanyongli.i.sohu.com/blog/view/195717824.htm 学习心得: 笔记参照<用Python做科学计算>的matplotlib部分. 凡例:a. [float]表示对象类型是float,用时不用加'['和']'.b. 代码中的跳格表示换行. Chap 5 matplotlib-绘制精美的图表 1. artist对象的set…
原文作者:suhanyujie 永久链接:https://github.com/suhanyujie/rust-cookbook-note 博客链接:https://ishenghuo.cnblogs.com 学习 Rust cookbook 之算法篇(algorithm) 前言 一直以来,我都沉迷于如何学好 Rust 而无法自拔,以至于"想"的时间比"做"的时间还多.chrome 上日积月累的 tab 数量,是我愈发的焦躁,当我尝试从其中一个 tab 下手时,go…
目录 打开的地图变扁了 修改投影坐标系 等角圆锥投影 Web墨卡托投影 一些要注意的地方 打开的地图变扁了 记得初学GIS软件时,用ArcGIS或QGIS打开省级地图的时候(shp或geojson等格式文件.经纬度坐标系),经常会看到显示的地图变扁了,此时的投影坐标系一般是EPSG:4326 WGS84,或EPSG:4490 CGCS2000. 正常的地图显示应当和 标准地图 显示成一样的才正确,但对于我这个初学者来讲这方面的知识储备完全不够用,当时搜索了很久才能找到比较靠谱的答案. 对应的sh…
简介 装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用.概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能,我们也称之为AOP(面向切面编程) 原理 实现装饰器的最主要的原因是python中一切皆为对象,我们会把方法看做一个对…
1.1现在有一个包含N个元素的元组或者是序列,怎样将它里面的值解压后同时赋值给N个变量 代码: >>>p = (4,5) >>>x,y = p >>>x 4 >>>y 5 >>>data = ['ACME',50,91.1,(2012,12,21)] >>>name,shares,price,data = data >>>name 'ACME' >>>data (…
类和对象: 我们经常会对打印一个对象来得到对象的某些信息. class pair:     def __init__(self,x,y):         self.x=x         self.y=y if __name__=='__main__':     p=pair(3,4)     print p E:\python2.7.11\python.exe E:/py_prj/python_cookbook/chapter8.py <__main__.pair instance at 0…
在演示实际代码前,先说明我们的目标:能对函数参数类型进行断言,类似下面这样: @typeassert(int, int) ... def add(x, y): ...     return x + y add(2, 'hello') Traceback (most recent call last):     File "<stdin>", line 1, in <module>     File "contract.py", line 33…
我们想在访问实例的属性时能够将其委托到一个内部持有的对象上,这经常用到代理机制上 class A:     def spam(self,x):         print("class_A:"+str(x))     def foo(self):         pass class B:     def __init__(self):         self._a=A()     def bar(self):         pass     def __getattr__(sel…
假设一个工程中有多个类,每个类都通过__init__来初始化参数.但是可能有很多高度重复且样式相同的__init__.为了减少代码.我们可以将初始化数据结构的步骤归纳到一个单独的__init__函数中,并将其定义在一个公共的基类中.示例如下: class structre(): fileds=[] def __init__(self,*args): if len(args) != len(self.fileds): raise TypeError('Expected {} arguments'.…
8.5 私有属性: 在python中,如果想将私有数据封装到类的实例上,有两种方法:1 单下划线.2 双下划线 1 单下划线一般认为是内部实现,但是如果想从外部访问的话也是可以的 2 双下划线是则无法通过外部访问且不能被继承覆盖 来看下面的这个例子: class B: def __init__(self): self.__private=0 def __private_method(self): print("__private method") def public_method(s…
过滤序列元素: 有一个序列,想从其中过滤出想要的元素.最常用的办法就是列表过滤:比如下面的形式:这个表达式的意义是从1000个随机数中选出大于400的数据 test=[] for i in range(1000):     test.append(random.randint(1,1000)) ret=[n for n in test if n >400] 根据cookbook书上的描述,这个方法适用于小数据的方式.如果数据集非常的大,而且要考虑内存的话建议使用生成器的方式ret=(n for…
本文完整代码及数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 QGIS随着近些年的发展,得益于其开源免费的特点,功能不断被世界各地的贡献者们开发完善,运算速度也非常出色,使得越来越多的Giser们从臃肿缓慢的Arcgis等传统平台转向QGIS. 图1 最重要的是,QGIS面向Python的接口PyQgis不仅可以用来开发QGIS插件,还可以配合Conda完美地避开路径配置的过程,直接与Conda虚拟环…
1.5怎样实现一个按优先级排序的队列?并且在这个队列上面每次pop操作总是返回优先级最高的那个元素 带有双下划线的方法,会在需要被调用的位置自动被调用 带有单下划线的变量是私有变量 下面利用类heapq模块实现一个简单的优先级队列: import heapq class PriorityQUeue: def __init__(self): self._queue = [] self._index = 0 def push(self,item,priority): heapq.heappush(s…
1.1每次处理一个字符(即每次处理一个字符的方式处理字符串) print list('theString') #方法一,转列表 结果:['t', 'h', 'e', 'S', 't', 'r', 'i', 'n', 'g'] for c in 'theString':#方法二,for循环 print c, 结果:t h e S t r i n g print [c for c in 'theString'] #方法三,列表推导式 结果:['t', 'h', 'e', 'S', 't', 'r',…
1.6合并字符串 ka=list('kaluoc') #字符串转成字符串列表 print ''.join(ka) #大量的字符串相连,join是最高效的 print '%s%s something %s '% (ka[0],ka[1],ka[2]) #这种来自C语言的方式也不错,也能进行变量的格式化 print ka[0]+ka[1]+ka[2] #这种是最自然的方式,但效率低下 结果: kaluoc ka something l kal 1.7将字符串逐字符或逐词反转 print 'kaluo…
数据结构 假设有M个元素的列表,需要从中分解出N个对象,N<M,这会导致分解的值过多的异常.如下: record=['zhf','zhf@163.com','775-555-1212','847-555-1212'] name,email,=record E:\python2.7.11\python.exe E:/py_prj/python_cookbook.py Traceback (most recent call last): File "E:/py_prj/python_cookb…
先介绍几个类中的应用__getattr__,__setattr__,__get__,__set__,__getattribute__,. __getattr__:当在类中找不到attribute的时候,会调用__getattr__,并执行其中的自定义代码.所有在类中定义的属性都包含在__dict__中,也就是说如果在__dict__中找不到对应的属性名,则__getattr__被触发. class get_try(object):     def __init__(self,value):   …
__get__以及__set__:假设T是一个类,t是他的实例,d是它的一个描述器属性.读取属性的时候T.d返回的是d.__get__(None,T),t.d返回的是d.__get__(t,T).说法比较绕,我们来看一个实例: class Descriptor(object):     def __get__(self, instance, owner):         return 'get',self,instance,owner class T(object):     d=Descri…
1.减少可调用对象的参数个数,使用functools.partial冻结参数 使用functools.partial(),可以固定一个或者多个值,减少调用参数. >>> def spam(a, b, c, d): ... print(a, b, c, d) ... >>> from functools import partial >>> s1 = partial(spam, 1) # 把a 的值设为 1 >>> s1(2, 3, 4…
1.函数的默认参数必须不可变 如果函数的默认参数为可变的对象,那么默认参数在函数外被修改也会影响到函数本身的. >>> def spam(a, b=None): # b要为不可变参数,不能使用空列表 [] 等可变参数 ... if b is None: ... b = [] ... 2.匿名函数 1.想不出函数名时,或想要一种短小的操作,可以使用匿名函数 >>> sum = lambda x, y: x + y >>> sum(2, 3) 5 >…
1.读写压缩数据文件 使用 gzip 和 bz2 模块来读写压缩文件,不过需要注意文件的模式,默认格式为二进制. # 读取压缩文件 import gzip with gzip.open('somefile.gz', 'rt') as f: text = f.read() import bz2 with bz2.open('somefile.bz2', 'rt') as f: text = f.read() # 写入压缩数据 import gzip with gzip.open('somefile…
1.同时迭代多个序列(zip(函数)) 使用zip()函数可以同时迭代多个序列. >>> X = [1, 2, 3, 4, 5, 6] >>> Y = [121, 223, 116, 666, 919, 2333] >>> for x, y in zip(X, Y): ... print(x, y) ... 1 121 2 223 3 116 4 666 5 919 6 2333 zip(a, b)的作用是创建一个迭代器,产生元组(x, y),x取自a…
1.随机选择 python中生成随机数使用random模块. 1.从序列中随机挑选元素,使用random.choice() >>> import random >>> values = [1, 2, 3, 4, 5, 6] >>> random.choice(values) 3 >>> random.choice(values) 3 >>> random.choice(values) 1 >>> r…
1.数字的四舍五入 对于简单的舍入运算,使用内置的 round(value, ndigits) 函数即可. round 函数返回离它最近的偶数.也就是说,对 1.5 或者 2.5 的舍入运算都会得到 2. >>> round(2.5) 2 >>> round(1.5) 2 round()的参数ndigits可以是负数,取整到十位,百位,千位, 效果如下: >>> a = 13123213 >>> round(a, -1) 131232…