Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Browse the repository at this point in the history
Severql bug fixes qnd smqll improvements in qgis bindings
git-svn-id: http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin@43 881b9c09-3ef8-f3c2-ec3d-21d735c97f4d
- Loading branch information
volayaf
committed
Mar 17, 2012
1 parent
1865097
commit e4554d5
Showing
42 changed files
with
574 additions
and
300 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
from PyQt4 import QtCore, QtGui, QtWebKit | ||
from PyQt4.QtCore import * | ||
from PyQt4.QtGui import * | ||
import os | ||
|
||
class AboutDialog(QtGui.QDialog): | ||
|
||
def __init__(self): | ||
QtGui.QDialog.__init__(self) | ||
self.setModal(True) | ||
self.setupUi() | ||
|
||
def setupUi(self): | ||
self.setObjectName("AboutDialog") | ||
self.resize(500, 400) | ||
self.webView = QtWebKit.QWebView() | ||
self.webView.setObjectName("webView") | ||
self.setWindowTitle("About SEXTANTE") | ||
self.horizontalLayout= QtGui.QHBoxLayout() | ||
self.horizontalLayout.setSpacing(2) | ||
self.horizontalLayout.setMargin(0) | ||
self.horizontalLayout.setObjectName("horizontalLayout") | ||
self.horizontalLayout.addWidget(self.webView) | ||
self.setLayout(self.horizontalLayout) | ||
filename = os.path.dirname(__file__) + "/about.htm" | ||
url = QtCore.QUrl(filename) | ||
self.webView.load(url) | ||
|
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> | ||
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"><head> | ||
<title>SEXTANTE Spatial Data Analysis Library</title> | ||
</head> | ||
<body> | ||
<img src="sextante_logo.png" /> | ||
<h2>SEXTANTE for QGIS</h2> | ||
<p>SEXTANTE, a geoprocessing platform for QGIS</p> | ||
<p>A development by Victor Olaya (volayaf@gmail.com)</p> | ||
<p>You are currently using SEXTANTE v1.0</p> | ||
<p>For more information, please visit our website at <a href="http://sextantegis.com">http://sextantegis.com</a></p> | ||
</body> | ||
</html> |
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
from sextante.core.GeoAlgorithm import GeoAlgorithm | ||
import os.path | ||
from PyQt4 import QtGui | ||
from PyQt4.QtCore import * | ||
from PyQt4.QtGui import * | ||
from qgis.core import * | ||
from sextante.parameters.ParameterVector import ParameterVector | ||
from sextante.core.QGisLayers import QGisLayers | ||
from sextante.outputs.OutputVector import OutputVector | ||
|
||
class ExtentFromLayer(GeoAlgorithm): | ||
|
||
INPUT = "INPUT" | ||
OUTPUT = "OUTPUT" | ||
|
||
def getIcon(self): | ||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/layer_extent.png") | ||
|
||
def processAlgorithm(self, progress): | ||
settings = QSettings() | ||
systemEncoding = settings.value( "/UI/encoding", "System" ).toString() | ||
output = self.getOutputValue(ExtentFromLayer.OUTPUT) | ||
vlayer = QGisLayers.getObjectFromUri(self.getParameterValue(ExtentFromLayer.INPUT)) | ||
fields = { | ||
0 : QgsField( "MINX", QVariant.Double ), | ||
1 : QgsField( "MINY", QVariant.Double ), | ||
2 : QgsField( "MAXX", QVariant.Double ), | ||
3 : QgsField( "MAXY", QVariant.Double ), | ||
4 : QgsField( "CNTX", QVariant.Double ), | ||
5 : QgsField( "CNTY", QVariant.Double ), | ||
6 : QgsField( "AREA", QVariant.Double ), | ||
7 : QgsField( "PERIM", QVariant.Double ), | ||
8 : QgsField( "HEIGHT", QVariant.Double ), | ||
9 : QgsField( "WIDTH", QVariant.Double ) } | ||
|
||
writer = QgsVectorFileWriter(output, systemEncoding, fields, QGis.WKBPolygon, vlayer.crs() ) | ||
rect = vlayer.extent() | ||
minx = rect.xMinimum() | ||
miny = rect.yMinimum() | ||
maxx = rect.xMaximum() | ||
maxy = rect.yMaximum() | ||
height = rect.height() | ||
width = rect.width() | ||
cntx = minx + ( width / 2.0 ) | ||
cnty = miny + ( height / 2.0 ) | ||
area = width * height | ||
perim = ( 2 * width ) + (2 * height ) | ||
rect = [ | ||
QgsPoint( minx, miny ), | ||
QgsPoint( minx, maxy ), | ||
QgsPoint( maxx, maxy ), | ||
QgsPoint( maxx, miny ), | ||
QgsPoint( minx, miny ) ] | ||
geometry = QgsGeometry().fromPolygon( [ rect ] ) | ||
feat = QgsFeature() | ||
feat.setGeometry( geometry ) | ||
feat.setAttributeMap( { | ||
0 : QVariant( minx ), | ||
1 : QVariant( miny ), | ||
2 : QVariant( maxx ), | ||
3 : QVariant( maxy ), | ||
4 : QVariant( cntx ), | ||
5 : QVariant( cnty ), | ||
6 : QVariant( area ), | ||
7 : QVariant( perim ), | ||
8 : QVariant( height ), | ||
9 : QVariant( width ) } ) | ||
writer.addFeature( feat ) | ||
del writer | ||
|
||
|
||
def defineCharacteristics(self): | ||
self.name = "Extent from layer" | ||
self.group = "Research tools" | ||
self.addParameter(ParameterVector(ExtentFromLayer.INPUT, "Input layer", ParameterVector.VECTOR_TYPE_ANY)) | ||
self.addOutput(OutputVector(ExtentFromLayer.OUTPUT, "Extent layer")) | ||
#========================================================= |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
from sextante.core.GeoAlgorithm import GeoAlgorithm | ||
import os.path | ||
from PyQt4 import QtGui | ||
from PyQt4.QtCore import * | ||
from PyQt4.QtGui import * | ||
from qgis.core import * | ||
from sextante.parameters.ParameterVector import ParameterVector | ||
from sextante.core.QGisLayers import QGisLayers | ||
from sextante.outputs.OutputVector import OutputVector | ||
from sextante.parameters.ParameterSelection import ParameterSelection | ||
from sextante.parameters.ParameterNumber import ParameterNumber | ||
import random | ||
|
||
class RandomSelection(GeoAlgorithm): | ||
|
||
INPUT = "INPUT" | ||
OUTPUT = "OUTPUT" | ||
METHOD = "METHOD" | ||
NUMBER = "NUMBER" | ||
PERCENTAGE = "PERCENTAGE" | ||
|
||
def getIcon(self): | ||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/random_selection.png") | ||
|
||
def processAlgorithm(self, progress): | ||
filename = self.getParameterValue(RandomSelection.INPUT) | ||
layer = QGisLayers.getObjectFromUri(filename) | ||
method = self.getParameterValue(self.METHOD) | ||
if method == 0: | ||
value = int(self.getParameterValue(self.NUMBER)) | ||
else: | ||
value = self.getParameterValue(self.PERCENTAGE) | ||
value = int(round((value / 100.0000), 4) * layer.featureCount()) | ||
selran = random.sample(xrange(0, layer.featureCount()), value) | ||
layer.setSelectedFeatures(selran) | ||
self.setOutputValue(self.OUTPUT, filename) | ||
|
||
|
||
def defineCharacteristics(self): | ||
self.name = "Random selection" | ||
self.group = "Research tools" | ||
self.addParameter(ParameterVector(RandomSelection.INPUT, "Input layer", ParameterVector.VECTOR_TYPE_ANY)) | ||
self.addParameter(ParameterSelection(RandomSelection.METHOD, "Method", ["Number of selected features", "Percentage of selected features"])) | ||
self.addParameter(ParameterNumber(RandomSelection.NUMBER, "Number of selected features", 1, None, 10)) | ||
self.addParameter(ParameterNumber(RandomSelection.PERCENTAGE, "Percentage of selected features", 0, 100, 50)) | ||
self.addOutput(OutputVector(RandomSelection.OUTPUT, "Selection", True)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
from sextante.core.GeoAlgorithm import GeoAlgorithm | ||
import os.path | ||
from PyQt4 import QtGui | ||
from PyQt4.QtCore import * | ||
from PyQt4.QtGui import * | ||
from qgis.core import * | ||
from sextante.parameters.ParameterVector import ParameterVector | ||
from sextante.core.QGisLayers import QGisLayers | ||
from sextante.outputs.OutputVector import OutputVector | ||
from sextante.parameters.ParameterSelection import ParameterSelection | ||
from sextante.parameters.ParameterNumber import ParameterNumber | ||
import random | ||
from sextante.parameters.ParameterTableField import ParameterTableField | ||
from sextante.ftools import ftools_utils | ||
|
||
class RandomSelectionWithinSubsets(GeoAlgorithm): | ||
|
||
INPUT = "INPUT" | ||
OUTPUT = "OUTPUT" | ||
METHOD = "METHOD" | ||
NUMBER = "NUMBER" | ||
PERCENTAGE = "PERCENTAGE" | ||
FIELD = "FIELD" | ||
|
||
def getIcon(self): | ||
return QtGui.QIcon(os.path.dirname(__file__) + "/icons/random_selection.png") | ||
|
||
def processAlgorithm(self, progress): | ||
method = self.getParameterValue(self.METHOD) | ||
field = self.getParameterValue(RandomSelectionWithinSubsets.FIELD) | ||
filename = self.getParameterValue(RandomSelectionWithinSubsets.INPUT) | ||
vlayer = QGisLayers.getObjectFromUri(filename) | ||
vlayer.removeSelection(True) | ||
vprovider = vlayer.dataProvider() | ||
allAttrs = vprovider.attributeIndexes() | ||
vprovider.select(allAttrs) | ||
index = vprovider.fieldNameIndex(field) | ||
unique = ftools_utils.getUniqueValues(vprovider, int(index)) | ||
inFeat = QgsFeature() | ||
selran = [] | ||
nFeat = vprovider.featureCount() * len(unique) | ||
nElement = 0 | ||
if not len(unique) == vlayer.featureCount(): | ||
for i in unique: | ||
vprovider.rewind() | ||
FIDs= [] | ||
while vprovider.nextFeature(inFeat): | ||
atMap = inFeat.attributeMap() | ||
if atMap[index] == QVariant(i): | ||
FID = inFeat.id() | ||
FIDs.append(FID) | ||
nElement += 1 | ||
progress.setPercentage(nElement/nFeat * 100) | ||
if method == 0: | ||
value = int(self.getParameterValue(self.NUMBER)) | ||
else: | ||
value = self.getParameterValue(self.PERCENTAGE) | ||
value = int(round((value / 100.0000) * len(FIDs), 0)) | ||
if value >= len(FIDs): | ||
selFeat = FIDs | ||
else: | ||
selFeat = random.sample(FIDs, value) | ||
selran.extend(selFeat) | ||
vlayer.setSelectedFeatures(selran) | ||
else: | ||
vlayer.setSelectedFeatures(range(0, vlayer.featureCount())) | ||
self.setOutputValue(RandomSelectionWithinSubsets.OUTPUT, filename) | ||
|
||
|
||
def defineCharacteristics(self): | ||
self.name = "Random selection within subsets" | ||
self.group = "Research tools" | ||
self.addParameter(ParameterVector(RandomSelectionWithinSubsets.INPUT, "Input layer", ParameterVector.VECTOR_TYPE_ANY)) | ||
self.addParameter(ParameterTableField(RandomSelectionWithinSubsets.FIELD, "ID Field", RandomSelectionWithinSubsets.INPUT)) | ||
self.addParameter(ParameterSelection(RandomSelectionWithinSubsets.METHOD, "Method", ["Number of selected features", "Percentage of selected features"])) | ||
self.addParameter(ParameterNumber(RandomSelectionWithinSubsets.NUMBER, "Number of selected features", 1, None, 10)) | ||
self.addParameter(ParameterNumber(RandomSelectionWithinSubsets.PERCENTAGE, "Percentage of selected features", 0, 100, 50)) | ||
self.addOutput(OutputVector(RandomSelectionWithinSubsets.OUTPUT, "Selection", True)) |
Oops, something went wrong.