Skip to content

Instantly share code, notes, and snippets.

View NathanW2's full-sized avatar

Nathan Woodrow NathanW2

View GitHub Profile
from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import QApplication
from PyQt4.QtXml import *
import sys
import xml.etree.ElementTree as ET
QGISAPP = QgsApplication(sys.argv, True)
@NathanW2
NathanW2 / gist:4029400
Created November 7, 2012 03:21
Print composer
from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import *
from PyQt4.QtGui import QApplication
from PyQt4.QtXml import *
import sys
import xml.etree.ElementTree as ET
app = QgsApplication([], True)
@NathanW2
NathanW2 / gist:4063620
Created November 13, 2012 02:33
azimuth
@qgsfunction(2, "Geometry")
def azimuth(values, feature, *args):
geom = feature.geometry()
if geom is None: return None
if geom.type() == QGis.Line:
xy = geom.asPolyline()
p1 = xy[values[0].toInt()[0]]
p2 = xy[values[1].toInt()[0]]
return p1.azimuth(p2)
@NathanW2
NathanW2 / gist:4094707
Created November 17, 2012 10:24
Buffer
lyr = qgis.utils.iface.activeLayer()
lyr.select([])
for feature in lyr:
buff = feat.geometry().buffer(5,2)
lyr.dataProvider().changeGeometryValues({feat.id(): buff})
@NathanW2
NathanW2 / gist:4263732
Created December 12, 2012 00:24
Create instance of all subclasses of type
class geo():
pass
class fTools(geo):
pass
class fTools2(geo):
pass
class fTools3(geo):
@NathanW2
NathanW2 / sum.py
Created January 2, 2013 00:49
Sum and list all neighbour features in pyqgis
from PyQt4.QtCore import *
name_field = 'NAME'
sum_field = 'POP_EST'
neighbors_field = 'Neighbors'
total_field = 'Sum'
layer = qgis.utils.iface.activeLayer()
provider = layer.dataProvider()
layer.startEditing()
neighbor_name_index = provider.fieldNameIndex(neighbors_field)
def where(layer, expression):
for f in layer:
if expression.evaluate(f).toBool():
yield f
exp = QgsExpressin('"Col" = 99')
exp.prepare(layer.fields())
items = where(layer, exp)
computeFieldIndex = layer.fieldNameIndex('population')
allFieldsMap = layer.pendingFields()
expression = QgsExpression('"affected" = 1')
expression.prepare(allFieldsMap)
if expression.hasParserError():
raise Exception('Parser error !!')
def getFeatures():
if self.selectedOnly:
@NathanW2
NathanW2 / gist:4481693
Created January 8, 2013 06:23
Canvas in form
from qgis.gui import QgsMapCanvas, QgsMapCanvasLayer
from PyQt4.QtGui import QFrame
def formOpen(dialog, layer, feature):
canvas = QgsMapCanvas()
canvas.setCanvasColor(QColor(255,255,255))
frame = dialog.findChild(QFrame,"frame")
frame.layout().addWidget(canvas)
c_layer = QgsMapCanvasLayer(layer)
@NathanW2
NathanW2 / gist:4554068
Created January 17, 2013 06:12
Load Aptana Studio 3 with QGIS libs
@echo off
set OSGEO4W_ROOT=C:\OSGeo4W
set OSGEO4W_ROOT=%OSGEO4W_ROOT:\\=\%
set PATH=%OSGEO4W_ROOT%\bin;%PATH%
for %%f in ("%OSGEO4W_ROOT%\etc\ini\*.bat") do call "%%f"
set PYTHONPATH=C:\OSGeo4W\apps\qgis-dev\python
Set PATH=C:\OSGeo4W\apps\qgis-dev\bin;%PATH%
set QGISHOME=C:\OSGeo4W\apps\qgis-dev\