Skip to content

Commit 3c7354e

Browse files
committed
fix geometry column export when used calculation on ellipsoid
1 parent 8459b58 commit 3c7354e

File tree

1 file changed

+29
-50
lines changed

1 file changed

+29
-50
lines changed

python/plugins/fTools/tools/doGeometry.py

+29-50
Original file line numberDiff line numberDiff line change
@@ -508,44 +508,48 @@ def lines_to_polygons( self ):
508508
return True
509509

510510
def export_geometry_info( self ):
511+
ellips = None
512+
crs = None
513+
coordTransform = None
514+
515+
# calculate with:
516+
# 0 - layer CRS
517+
# 1 - project CRS
518+
# 2 - ellipsoidal
519+
if self.myCalcType == 2:
520+
settings = QSettings()
521+
ellips = settings.value( "/qgis/measure/ellipsoid", "WGS84" ).toString()
522+
crs = self.vlayer.crs().srsid()
523+
elif self.myCalcType == 1:
524+
mapCRS = self.parent.iface.mapCanvas().mapRenderer().destinationCrs()
525+
layCRS = self.vlayer.crs()
526+
coordTransform = QgsCoordinateTransform( layCRS, mapCRS )
527+
528+
inFeat = QgsFeature()
529+
outFeat = QgsFeature()
530+
inGeom = QgsGeometry()
531+
nElement = 0
532+
533+
vprovider = self.vlayer.dataProvider()
534+
535+
self.emit( SIGNAL( "runStatus( PyQt_PyObject )" ), 0)
536+
self.emit( SIGNAL( "runRange( PyQt_PyObject )" ), ( 0, vprovider.featureCount() ) )
537+
511538
if self.writeShape:
512-
vprovider = self.vlayer.dataProvider()
513539
allAttrs = vprovider.attributeIndexes()
514540
vprovider.select( allAttrs )
515541
( fields, index1, index2 ) = self.checkGeometryFields( self.vlayer )
516542
writer = QgsVectorFileWriter( self.myName, self.myEncoding, fields,
517543
vprovider.geometryType(), vprovider.crs() )
518-
inFeat = QgsFeature()
519-
outFeat = QgsFeature()
520-
inGeom = QgsGeometry()
521-
nFeat = vprovider.featureCount()
522-
nElement = 0
523-
524-
# calculate with:
525-
# 0 - layer CRS
526-
# 1 - project CRS
527-
# 2 - ellipsoidal
528-
ellips = None
529-
crs = None
530-
coordTransform = None
531-
if self.myCalcType == 2:
532-
settings = QSettings()
533-
ellips = settings.value( "/qgis/measure/ellipsoid", "WGS84" ).toString()
534-
crs = self.parent.iface.mapCanvas().mapRenderer().destinationCrs().srsid()
535-
elif self.myCalcType == 1:
536-
mapCRS = self.parent.iface.mapCanvas().mapRenderer().destinationCrs()
537-
layCRS = self.vlayer.crs()
538-
coordTransform = QgsCoordinateTransform( layCRS, mapCRS )
539-
540-
self.emit( SIGNAL( "runStatus( PyQt_PyObject )" ), 0)
541-
self.emit( SIGNAL( "runRange( PyQt_PyObject )" ), ( 0, nFeat ) )
544+
542545
while vprovider.nextFeature(inFeat):
543546
self.emit( SIGNAL( "runStatus( PyQt_PyObject )" ), nElement )
544547
nElement += 1
545548
inGeom = inFeat.geometry()
546549

547550
if self.myCalcType == 1:
548551
inGeom.transform( coordTransform )
552+
549553
( attr1, attr2 ) = self.simpleMeasure( inGeom, self.myCalcType, ellips, crs )
550554

551555
outFeat.setGeometry( inGeom )
@@ -558,34 +562,9 @@ def export_geometry_info( self ):
558562
return True
559563
else: # update existing file
560564
newFields = []
561-
vprovider = self.vlayer.dataProvider()
562565
geomType = self.vlayer.geometryType()
563566
( index1, index2 ) = self.findOrCreateFields()
564567

565-
inFeat = QgsFeature()
566-
inGeom = QgsGeometry()
567-
nFeat = vprovider.featureCount()
568-
nElement = 0
569-
570-
# calculate with:
571-
# 0 - layer CRS
572-
# 1 - project CRS
573-
# 2 - ellipsoidal
574-
ellips = None
575-
crs = None
576-
coordTransform = None
577-
if self.myCalcType == 2:
578-
settings = QSettings()
579-
ellips = settings.value( "/qgis/measure/ellipsoid", "WGS84" ).toString()
580-
crs = self.parent.iface.mapCanvas().mapRenderer().destinationCrs().srsid()
581-
elif self.myCalcType == 1:
582-
mapCRS = self.parent.iface.mapCanvas().mapRenderer().destinationCrs()
583-
layCRS = self.vlayer.crs()
584-
coordTransform = QgsCoordinateTransform( layCRS, mapCRS )
585-
586-
self.emit( SIGNAL( "runStatus( PyQt_PyObject )" ), 0)
587-
self.emit( SIGNAL( "runRange( PyQt_PyObject )" ), ( 0, nFeat ) )
588-
589568
while vprovider.nextFeature(inFeat):
590569
self.emit( SIGNAL( "runStatus( PyQt_PyObject )" ), nElement )
591570
nElement += 1

0 commit comments

Comments
 (0)