2 changes: 1 addition & 1 deletion python/plugins/processing/algs/ftools/PointDistance.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ def regularMatrix(self, inLayer, inField, targetLayer, targetField, nPoints, pro

first = True
current = 0
features = QGisLayers.features(inLayer)
features = vector.features(inLayer)
total = 100.0 / float(len(features))

for inFeat in features:
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/core/ProcessingConfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,8 @@ class ProcessingConfig():
def initialize():
icon = QtGui.QIcon(os.path.dirname(__file__) + "/../images/alg.png")
ProcessingConfig.settingIcons["General"] = icon
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.USE_THREADS, "Run algorithms in a new thread", True))
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.SHOW_DEBUG_IN_DIALOG, "Show extra info in Log panel (threaded execution only)", True))
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.USE_THREADS, "Run algorithms in a new thread (unstable)", False))
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.SHOW_DEBUG_IN_DIALOG, "Show extra info in Log panel", True))
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.KEEP_DIALOG_OPEN, "Keep dialog open after running an algorithm", False))
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.USE_SELECTED, "Use only selected features", True))
ProcessingConfig.addSetting(Setting("General", ProcessingConfig.TABLE_LIKE_PARAM_PANEL, "Show table-like parameter panels", False))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,11 @@
##Output_table=output table

import os

from processing.raster import *
from osgeo import gdal, ogr, osr

from processing.core.TableWriter import TableWriter
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException

from processing.algs import QGISUtils as utils

raster = gdal.Open(Input_raster)

rasterBaseName = os.path.splitext(os.path.basename(Input_raster))[0]
Expand Down Expand Up @@ -81,7 +78,7 @@
pnt = coordTransform.TransformPoint(x, y, 0)
x = pnt[0]
y = pnt[1]
rX, rY = utils.mapToPixel(x, y, geoTransform)
rX, rY = raster.mapToPixel(x, y, geoTransform)
if rX > rasterXSize or rY > rasterYSize:
feature = layer.GetNextFeature()
continue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,9 @@
##Output_layer=output vector

import os

from osgeo import gdal, ogr, osr

from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException

from processing.algs import QGISUtils as utils
from processing.tools.raster import mapToPixel

raster = gdal.Open(Input_raster)

Expand Down Expand Up @@ -104,7 +101,7 @@
pnt = coordTransform.TransformPoint(x, y, 0)
x = pnt[0]
y = pnt[1]
rX, rY = utils.mapToPixel(x, y, geoTransform)
rX, rY = mapToPixel(x, y, geoTransform)
if rX > rasterXSize or rY > rasterYSize:
feature = layer.GetNextFeature()
continue
Expand Down
73 changes: 70 additions & 3 deletions python/plugins/processing/tools/raster.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
raster.py
---------------------
Date : February 2013
Copyright : (C) 2013 by Victor Olaya
Copyright : (C) 2013 by Victor Olaya and Alexander Bruy
Email : volayaf at gmail dot com
***************************************************************************
* *
Expand All @@ -17,9 +17,9 @@
***************************************************************************
"""

__author__ = 'Victor Olaya'
__author__ = 'Victor Olaya and Alexander Bruy'
__date__ = 'February 2013'
__copyright__ = '(C) 2013, Victor Olaya'
__copyright__ = '(C) 2013, Victor Olaya and Alexander Bruy'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'

Expand All @@ -40,3 +40,70 @@ def scanraster(layer, progress):
if value == nodata:
value = None
yield value

def mapToPixel(mX, mY, geoTransform):
'''Convert map coordinates to pixel coordinates.
@param mX Input map X coordinate (double)
@param mY Input map Y coordinate (double)
@param geoTransform Input geotransform (six doubles)
@return pX, pY Output coordinates (two doubles)
'''
if geoTransform[2] + geoTransform[4] == 0:
pX = (mX - geoTransform[0]) / geoTransform[1]
pY = (mY - geoTransform[3]) / geoTransform[5]
else:
pX, pY = applyGeoTransform(mX, mY, invertGeoTransform(geoTransform))
return int(pX), int(pY)

def pixelToMap(pX, pY, geoTransform):
'''Convert pixel coordinates to map coordinates.
@param pX Input pixel X coordinate (double)
@param pY Input pixel Y coordinate (double)
@param geoTransform Input geotransform (six doubles)
@return mX, mY Output coordinates (two doubles)
'''
mX, mY = applyGeoTransform(pX + 0.5, pY + 0.5, geoTransform)
return mX, mY

def applyGeoTransform(inX, inY, geoTransform):
'''Apply a geotransform to coordinates.
@param inX Input coordinate (double)
@param inY Input coordinate (double)
@param geoTransform Input geotransform (six doubles)
@return outX, outY Output coordinates (two doubles)
'''
outX = geoTransform[0] + inX * geoTransform[1] + inY * geoTransform[2]
outY = geoTransform[3] + inX * geoTransform[4] + inY * geoTransform[5]
return outX, outY

def invertGeoTransform(geoTransform):
'''Invert standard 3x2 set of geotransform coefficients.
@param geoTransform Input GeoTransform (six doubles - unaltered)
@return outGeoTransform Output GeoTransform (six doubles - updated)
on success, None if the equation is uninvertable
'''
# we assume a 3rd row that is [1 0 0]
# compute determinate
det = geoTransform[1] * geoTransform[5] - geoTransform[2] * geoTransform[4]

if abs(det) < 0.000000000000001:
return

invDet = 1.0 / det

# compute adjoint and divide by determinate
outGeoTransform = [0, 0, 0, 0, 0, 0]
outGeoTransform[1] = geoTransform[5] * invDet
outGeoTransform[4] = -geoTransform[4] * invDet

outGeoTransform[2] = -geoTransform[2] * invDet
outGeoTransform[5] = geoTransform[1] * invDet

outGeoTransform[0] = (geoTransform[2] * geoTransform[3] - geoTransform[0] * geoTransform[5]) * invDet
outGeoTransform[3] = (-geoTransform[1] * geoTransform[3] + geoTransform[0] * geoTransform[4]) * invDet

return outGeoTransform