Skip to content

Commit

Permalink
Fix ftools geometry collection handling
Browse files Browse the repository at this point in the history
  • Loading branch information
mhugent authored and m-kuhn committed Nov 25, 2015
1 parent 8534681 commit 436c30f
Showing 1 changed file with 11 additions and 11 deletions.
22 changes: 11 additions & 11 deletions python/plugins/fTools/tools/doGeoprocessing.py
Expand Up @@ -32,7 +32,7 @@


from PyQt4.QtCore import SIGNAL, QObject, Qt, QFile, QThread, QVariant from PyQt4.QtCore import SIGNAL, QObject, Qt, QFile, QThread, QVariant
from PyQt4.QtGui import QDialog, QDoubleValidator, QDialogButtonBox, QMessageBox from PyQt4.QtGui import QDialog, QDoubleValidator, QDialogButtonBox, QMessageBox
from qgis.core import QGis, QgsVectorFileWriter, QgsFeature, QgsGeometry, QgsFields, QgsField, QgsFeatureRequest, QgsPoint, QgsDistanceArea from qgis.core import QGis, QgsVectorFileWriter, QgsFeature, QgsGeometry, QgsFields, QgsField, QgsFeatureRequest, QgsPoint, QgsDistanceArea, QgsMessageLog, QgsWKBTypes


from ui_frmGeoprocessing import Ui_Dialog from ui_frmGeoprocessing import Ui_Dialog
import ftools_utils import ftools_utils
Expand Down Expand Up @@ -966,7 +966,7 @@ def intersect(self):
if geom.intersects(tmpGeom): if geom.intersects(tmpGeom):
atMapB = inFeatB.attributes() atMapB = inFeatB.attributes()
int_geom = QgsGeometry(geom.intersection(tmpGeom)) int_geom = QgsGeometry(geom.intersection(tmpGeom))
if int_geom.wkbType() == 0: if int_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = geom.combine(tmpGeom) int_com = geom.combine(tmpGeom)
int_sym = geom.symDifference(tmpGeom) int_sym = geom.symDifference(tmpGeom)
int_geom = QgsGeometry(int_com.difference(int_sym)) int_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1001,7 +1001,7 @@ def intersect(self):
if geom.intersects(tmpGeom): if geom.intersects(tmpGeom):
atMapB = inFeatB.attributes() atMapB = inFeatB.attributes()
int_geom = QgsGeometry(geom.intersection(tmpGeom)) int_geom = QgsGeometry(geom.intersection(tmpGeom))
if int_geom.wkbType() == 0: if int_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = geom.combine(tmpGeom) int_com = geom.combine(tmpGeom)
int_sym = geom.symDifference(tmpGeom) int_sym = geom.symDifference(tmpGeom)
int_geom = QgsGeometry(int_com.difference(int_sym)) int_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1040,7 +1040,7 @@ def intersect(self):
if geom.intersects(tmpGeom): if geom.intersects(tmpGeom):
atMapB = inFeatB.attributes() atMapB = inFeatB.attributes()
int_geom = QgsGeometry(geom.intersection(tmpGeom)) int_geom = QgsGeometry(geom.intersection(tmpGeom))
if int_geom.wkbType() == 0: if int_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = geom.combine(tmpGeom) int_com = geom.combine(tmpGeom)
int_sym = geom.symDifference(tmpGeom) int_sym = geom.symDifference(tmpGeom)
int_geom = QgsGeometry(int_com.difference(int_sym)) int_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1072,7 +1072,7 @@ def intersect(self):
if geom.intersects(tmpGeom): if geom.intersects(tmpGeom):
atMapB = inFeatB.attributes() atMapB = inFeatB.attributes()
int_geom = QgsGeometry(geom.intersection(tmpGeom)) int_geom = QgsGeometry(geom.intersection(tmpGeom))
if int_geom.wkbType() == 0: if ( int_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection ):
int_com = geom.combine(tmpGeom) int_com = geom.combine(tmpGeom)
int_sym = geom.symDifference(tmpGeom) int_sym = geom.symDifference(tmpGeom)
int_geom = QgsGeometry(int_com.difference(int_sym)) int_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1161,7 +1161,7 @@ def union(self):
else: else:
int_geom = QgsGeometry(int_geom) int_geom = QgsGeometry(int_geom)


if int_geom.wkbType() == 0: if int_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
# intersection produced different geometry types # intersection produced different geometry types
temp_list = int_geom.asGeometryCollection() temp_list = int_geom.asGeometryCollection()
for i in temp_list: for i in temp_list:
Expand Down Expand Up @@ -1197,7 +1197,7 @@ def union(self):
intB = QgsGeometry.unaryUnion(lstIntersectingB) intB = QgsGeometry.unaryUnion(lstIntersectingB)
diff_geom = diff_geom.difference(intB) diff_geom = diff_geom.difference(intB)


if diff_geom.wkbType() == 0: if diff_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
temp_list = diff_geom.asGeometryCollection() temp_list = diff_geom.asGeometryCollection()
for i in temp_list: for i in temp_list:
if i.type() == geom.type(): if i.type() == geom.type():
Expand Down Expand Up @@ -1415,7 +1415,7 @@ def clip(self):
try: try:
cur_geom = QgsGeometry(outFeat.geometry()) cur_geom = QgsGeometry(outFeat.geometry())
new_geom = QgsGeometry(geom.intersection(cur_geom)) new_geom = QgsGeometry(geom.intersection(cur_geom))
if new_geom.wkbType() == 0: if new_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = QgsGeometry(geom.combine(cur_geom)) int_com = QgsGeometry(geom.combine(cur_geom))
int_sym = QgsGeometry(geom.symDifference(cur_geom)) int_sym = QgsGeometry(geom.symDifference(cur_geom))
new_geom = QgsGeometry(int_com.difference(int_sym)) new_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1459,7 +1459,7 @@ def clip(self):
try: try:
cur_geom = QgsGeometry(outFeat.geometry()) cur_geom = QgsGeometry(outFeat.geometry())
new_geom = QgsGeometry(geom.intersection(cur_geom)) new_geom = QgsGeometry(geom.intersection(cur_geom))
if new_geom.wkbType() == 0: if new_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = QgsGeometry(geom.combine(cur_geom)) int_com = QgsGeometry(geom.combine(cur_geom))
int_sym = QgsGeometry(geom.symDifference(cur_geom)) int_sym = QgsGeometry(geom.symDifference(cur_geom))
new_geom = QgsGeometry(int_com.difference(int_sym)) new_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1511,7 +1511,7 @@ def clip(self):
try: try:
cur_geom = QgsGeometry(outFeat.geometry()) cur_geom = QgsGeometry(outFeat.geometry())
new_geom = QgsGeometry(geom.intersection(cur_geom)) new_geom = QgsGeometry(geom.intersection(cur_geom))
if new_geom.wkbType() == 0: if new_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = QgsGeometry(geom.combine(cur_geom)) int_com = QgsGeometry(geom.combine(cur_geom))
int_sym = QgsGeometry(geom.symDifference(cur_geom)) int_sym = QgsGeometry(geom.symDifference(cur_geom))
new_geom = QgsGeometry(int_com.difference(int_sym)) new_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down Expand Up @@ -1557,7 +1557,7 @@ def clip(self):
try: try:
cur_geom = QgsGeometry(outFeat.geometry()) cur_geom = QgsGeometry(outFeat.geometry())
new_geom = QgsGeometry(geom.intersection(cur_geom)) new_geom = QgsGeometry(geom.intersection(cur_geom))
if new_geom.wkbType() == 0: if new_geom.wkbType() == 0 or QgsWKBTypes.flatType( int_geom.geometry().wkbType() ) == QgsWKBTypes.GeometryCollection:
int_com = QgsGeometry(geom.combine(cur_geom)) int_com = QgsGeometry(geom.combine(cur_geom))
int_sym = QgsGeometry(geom.symDifference(cur_geom)) int_sym = QgsGeometry(geom.symDifference(cur_geom))
new_geom = QgsGeometry(int_com.difference(int_sym)) new_geom = QgsGeometry(int_com.difference(int_sym))
Expand Down

0 comments on commit 436c30f

Please sign in to comment.