13
13
# --------------------------------------------------------
14
14
15
15
import csv
16
+ import sys
16
17
import time
17
18
import urllib
18
19
import os .path
@@ -47,7 +48,7 @@ def mmqgisx_is_float(s):
47
48
# Cumbersome function to give backward compatibility before python 2.7
48
49
49
50
def format_float (value , separator , decimals ):
50
- formatstring = ("%0." + str (int (decimals )) + "f" )
51
+ formatstring = ("%0." + unicode (int (decimals )) + "f" )
51
52
# print str(value) + ": " + formatstring
52
53
string = formatstring % value
53
54
intend = string .find ('.' )
@@ -209,7 +210,7 @@ def mmqgisx_animate_columns(qgis, layer_name, long_col, lat_col, outdir, frame_c
209
210
# Iterate Frames
210
211
211
212
for frame in range (frame_count + 1 ):
212
- qgis .mainWindow ().statusBar ().showMessage ("Rendering frame " + str (frame ))
213
+ qgis .mainWindow ().statusBar ().showMessage ("Rendering frame " + unicode (frame ))
213
214
214
215
# Read, move and rewrite features
215
216
@@ -268,7 +269,7 @@ def mmqgisx_animate_rows(qgis, layer_names, cumulative, outdir):
268
269
269
270
# Error Checks
270
271
if not os .path .isdir (outdir ):
271
- return "Invalid output directory: " + str (outdir )
272
+ return "Invalid output directory: " + unicode (outdir )
272
273
273
274
layers = []
274
275
for layer_name in layer_names :
@@ -305,7 +306,7 @@ def mmqgisx_animate_rows(qgis, layer_names, cumulative, outdir):
305
306
tempnames = [None ] * len (layers )
306
307
templayers = [None ] * len (layers )
307
308
for layer_index in range (len (layers )):
308
- tempnames [layer_index ] = tempdir + "/mmqgisx_animate" + str (layer_index ) + ".shp"
309
+ tempnames [layer_index ] = tempdir + "/mmqgisx_animate" + unicode (layer_index ) + ".shp"
309
310
tempcrs = layers [layer_index ].dataProvider ().crs ()
310
311
if not tempcrs .isValid ():
311
312
tempcrs .createFromSrid (4326 )
@@ -347,7 +348,7 @@ def mmqgisx_animate_rows(qgis, layer_names, cumulative, outdir):
347
348
# Iterate frames
348
349
349
350
for frame in range (int (frame_count + 1 )):
350
- qgis .mainWindow ().statusBar ().showMessage ("Rendering frame " + str (frame ))
351
+ qgis .mainWindow ().statusBar ().showMessage ("Rendering frame " + unicode (frame ))
351
352
352
353
for layer_index in range (len (layers )):
353
354
if frame < layers [layer_index ].featureCount ():
@@ -429,7 +430,7 @@ def mmqgisx_attribute_export(qgis, outfilename, layername, attribute_names, fiel
429
430
layer .dataProvider ().rewind ()
430
431
while layer .dataProvider ().nextFeature (feature ):
431
432
qgis .mainWindow ().statusBar ().showMessage \
432
- ("Exporting feature " + str (feature .id ()) + " of " + str (feature_count ))
433
+ ("Exporting feature " + unicode (feature .id ()) + " of " + unicode (feature_count ))
433
434
attributes = feature .attributeMap ()
434
435
435
436
row = []
@@ -442,7 +443,7 @@ def mmqgisx_attribute_export(qgis, outfilename, layername, attribute_names, fiel
442
443
443
444
del writer
444
445
445
- qgis .mainWindow ().statusBar ().showMessage (str (feature_count ) + " records exported" )
446
+ qgis .mainWindow ().statusBar ().showMessage (unicode (feature_count ) + " records exported" )
446
447
447
448
return None
448
449
@@ -550,8 +551,8 @@ def mmqgisx_attribute_join(qgis, layername, infilename, joinfield, joinattribute
550
551
layer .dataProvider ().select (layer .dataProvider ().attributeIndexes ())
551
552
layer .dataProvider ().rewind ()
552
553
while layer .dataProvider ().nextFeature (feature ):
553
- qgis .mainWindow ().statusBar ().showMessage ("Joining feature " + str (feature .id ()) + \
554
- " of " + str (feature_count ) + " (" + str (matched_count ) + " matched)" )
554
+ qgis .mainWindow ().statusBar ().showMessage ("Joining feature " + unicode (feature .id ()) + \
555
+ " of " + unicode (feature_count ) + " (" + unicode (matched_count ) + " matched)" )
555
556
attributes = feature .attributeMap ()
556
557
key = unicode (attributes [joinattribute_index ].toString ()).encode ("iso-8859-1" ).lower ()
557
558
@@ -602,8 +603,8 @@ def mmqgisx_attribute_join(qgis, layername, infilename, joinfield, joinattribute
602
603
if addlayer :
603
604
qgis .addVectorLayer (outfilename , os .path .basename (outfilename ), "ogr" )
604
605
605
- qgis .mainWindow ().statusBar ().showMessage (str (matched_count ) + " records joined from " + \
606
- str (feature_count ) + " shape records and " + str (len (csv_data )) + " CSV file records" )
606
+ qgis .mainWindow ().statusBar ().showMessage (unicode (matched_count ) + " records joined from " + \
607
+ unicode (feature_count ) + " shape records and " + unicode (len (csv_data )) + " CSV file records" )
607
608
608
609
return None
609
610
@@ -658,8 +659,8 @@ def mmqgisx_set_color_map(qgis, layername, bandname, lowvalue, midvalue, highval
658
659
os .write (outfile , "<mContrastEnhancementAlgorithm>StretchToMinimumMaximum</mContrastEnhancementAlgorithm>" )
659
660
os .write (outfile , "<contrastEnhancementMinMaxValues>" )
660
661
os .write (outfile , "<minMaxEntry>" )
661
- os .write (outfile , "<min>" + str (lowvalue ) + "</min>" )
662
- os .write (outfile , "<max>" + str (highvalue ) + "</max>" )
662
+ os .write (outfile , "<min>" + unicode (lowvalue ) + "</min>" )
663
+ os .write (outfile , "<max>" + unicode (highvalue ) + "</max>" )
663
664
os .write (outfile , "</minMaxEntry>" )
664
665
os .write (outfile , "</contrastEnhancementMinMaxValues>" )
665
666
os .write (outfile , "<mNoDataValue mValidNoDataValue=\" true\" >-1.000000</mNoDataValue>" )
@@ -678,19 +679,19 @@ def mmqgisx_set_color_map(qgis, layername, bandname, lowvalue, midvalue, highval
678
679
if (interpolate < 0.5 ):
679
680
interpolate = interpolate * 2.0 ;
680
681
value = lowvalue + ((midvalue - lowvalue ) * interpolate )
681
- red = str (int (round (lowred + ((midred - lowred ) * interpolate ))))
682
- green = str (int (round (lowgreen + ((midgreen - lowgreen ) * interpolate ))))
683
- blue = str (int (round (lowblue + ((midblue - lowblue ) * interpolate ))))
682
+ red = unicode (int (round (lowred + ((midred - lowred ) * interpolate ))))
683
+ green = unicode (int (round (lowgreen + ((midgreen - lowgreen ) * interpolate ))))
684
+ blue = unicode (int (round (lowblue + ((midblue - lowblue ) * interpolate ))))
684
685
os .write (outfile , "<colorRampEntry red=\" " + red + "\" blue=\" " + blue +
685
- "\" green=\" " + green + "\" value=\" " + str (value ) + "\" label=\" \" />\n " )
686
+ "\" green=\" " + green + "\" value=\" " + unicode (value ) + "\" label=\" \" />\n " )
686
687
else :
687
688
interpolate = (interpolate - 0.5 ) * 2.0
688
689
value = midvalue + ((highvalue - midvalue ) * interpolate )
689
- red = str (int (round (midred + ((highred - midred ) * interpolate ))))
690
- green = str (int (round (midgreen + ((highgreen - midgreen ) * interpolate ))))
691
- blue = str (int (round (midblue + ((highblue - midblue ) * interpolate ))))
690
+ red = unicode (int (round (midred + ((highred - midred ) * interpolate ))))
691
+ green = unicode (int (round (midgreen + ((highgreen - midgreen ) * interpolate ))))
692
+ blue = unicode (int (round (midblue + ((highblue - midblue ) * interpolate ))))
692
693
os .write (outfile , "<colorRampEntry red=\" " + red + "\" blue=\" " + blue +
693
- "\" green=\" " + green + "\" value=\" " + str (value ) + "\" label=\" \" />\n " )
694
+ "\" green=\" " + green + "\" value=\" " + unicode (value ) + "\" label=\" \" />\n " )
694
695
695
696
#print str(x) + ", " + str(interpolate) + ", " + str(value)
696
697
@@ -722,18 +723,18 @@ def mmqgisx_set_color_map(qgis, layername, bandname, lowvalue, midvalue, highval
722
723
interpolate = x / float (steps )
723
724
if (interpolate < 0.5 ):
724
725
interpolate = interpolate * 2.0
725
- red = str (int (round (lowred + ((midred - lowred ) * interpolate ))))
726
- green = str (int (round (lowgreen + ((midgreen - lowgreen ) * interpolate ))))
727
- blue = str (int (round (lowblue + ((midblue - lowblue ) * interpolate ))))
726
+ red = unicode (int (round (lowred + ((midred - lowred ) * interpolate ))))
727
+ green = unicode (int (round (lowgreen + ((midgreen - lowgreen ) * interpolate ))))
728
+ blue = unicode (int (round (lowblue + ((midblue - lowblue ) * interpolate ))))
728
729
else :
729
730
interpolate = (interpolate - 0.5 ) * 2.0
730
- red = str (int (round (midred + ((highred - midred ) * interpolate ))))
731
- green = str (int (round (midgreen + ((highgreen - midgreen ) * interpolate ))))
732
- blue = str (int (round (midblue + ((highblue - midblue ) * interpolate ))))
731
+ red = unicode (int (round (midred + ((highred - midred ) * interpolate ))))
732
+ green = unicode (int (round (midgreen + ((highgreen - midgreen ) * interpolate ))))
733
+ blue = unicode (int (round (midblue + ((highblue - midblue ) * interpolate ))))
733
734
734
735
os .write (outfile , "<symbol>\n " )
735
- os .write (outfile , "<lowervalue>" + str (values [x ]) + "</lowervalue>\n " )
736
- os .write (outfile , "<uppervalue>" + str (values [x + 1 ]) + "</uppervalue>\n " )
736
+ os .write (outfile , "<lowervalue>" + unicode (values [x ]) + "</lowervalue>\n " )
737
+ os .write (outfile , "<uppervalue>" + unicode (values [x + 1 ]) + "</uppervalue>\n " )
737
738
os .write (outfile , "<label></label>\n " )
738
739
os .write (outfile , "<pointsymbol>hard:circle</pointsymbol>\n " )
739
740
os .write (outfile , "<pointsize>2</pointsize>\n " )
@@ -744,8 +745,8 @@ def mmqgisx_set_color_map(qgis, layername, bandname, lowvalue, midvalue, highval
744
745
os .write (outfile , "<outlinecolor red=\" 128\" blue=\" 128\" green=\" 128\" />\n " )
745
746
os .write (outfile , "<outlinestyle>SolidLine</outlinestyle>\n " )
746
747
os .write (outfile , "<outlinewidth>0.26</outlinewidth>\n " )
747
- os .write (outfile , "<fillcolor red=\" " + str (red ) + "\" blue=\" " +
748
- str (blue ) + "\" green=\" " + str (green ) + "\" />" )
748
+ os .write (outfile , "<fillcolor red=\" " + unicode (red ) + "\" blue=\" " +
749
+ unicode (blue ) + "\" green=\" " + unicode (green ) + "\" />" )
749
750
os .write (outfile , "<fillpattern>SolidPattern</fillpattern>\n " )
750
751
os .write (outfile , "<texturepath></texturepath>\n " )
751
752
os .write (outfile , "</symbol>\n " )
@@ -817,7 +818,7 @@ def mmqgisx_delete_columns(qgis, layername, columns, savename, addlayer):
817
818
818
819
while layer .dataProvider ().nextFeature (feature ):
819
820
qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + \
820
- str (feature .id ()) + " of " + str (featurecount ))
821
+ unicode (feature .id ()) + " of " + unicode (featurecount ))
821
822
822
823
attributes = {}
823
824
for index , field in srcfields .iteritems ():
@@ -831,7 +832,7 @@ def mmqgisx_delete_columns(qgis, layername, columns, savename, addlayer):
831
832
if addlayer :
832
833
vlayer = qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
833
834
834
- qgis .mainWindow ().statusBar ().showMessage (str (len (columns )) + " columns deleted and written to " + savename )
835
+ qgis .mainWindow ().statusBar ().showMessage (unicode (len (columns )) + " columns deleted and written to " + savename )
835
836
836
837
return None
837
838
@@ -875,7 +876,7 @@ def mmqgisx_delete_duplicate_geometries(qgis, layername, savename, addlayer):
875
876
# NULL duplicate geometries
876
877
for x in range (0 , len (geometries ) - 1 ):
877
878
if geometries [x ] != None :
878
- qgis .mainWindow ().statusBar ().showMessage ("Checking feature " + str (x ))
879
+ qgis .mainWindow ().statusBar ().showMessage ("Checking feature " + unicode (x ))
879
880
for y in range (x + 1 , len (geometries )):
880
881
#print "Comparing " + str(x) + ", " + str(y)
881
882
if geometries [x ] == geometries [y ]:
@@ -898,8 +899,8 @@ def mmqgisx_delete_duplicate_geometries(qgis, layername, savename, addlayer):
898
899
if addlayer :
899
900
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
900
901
901
- qgis .mainWindow ().statusBar ().showMessage (str (writecount ) + " of " + \
902
- str (layer .dataProvider ().featureCount ()) + \
902
+ qgis .mainWindow ().statusBar ().showMessage (unicode (writecount ) + " of " + \
903
+ unicode (layer .dataProvider ().featureCount ()) + \
903
904
" unique features written to " + savename )
904
905
905
906
return None
@@ -916,7 +917,7 @@ def mmqgisx_float_to_text(qgis, layername, attributes, separator,
916
917
return "Project has no active vector layer to convert: " + layername
917
918
918
919
if decimals < 0 :
919
- return "Invalid number of decimals: " + str (decimals )
920
+ return "Invalid number of decimals: " + unicode (decimals )
920
921
921
922
if len (savename ) <= 0 :
922
923
return "No output filename given"
@@ -959,7 +960,7 @@ def mmqgisx_float_to_text(qgis, layername, attributes, separator,
959
960
layer .dataProvider ().rewind ()
960
961
while layer .dataProvider ().nextFeature (feature ):
961
962
qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + \
962
- str (feature .id ()) + " of " + str (featurecount ))
963
+ unicode (feature .id ()) + " of " + unicode (featurecount ))
963
964
964
965
attributes = feature .attributeMap ()
965
966
for index , field in layer .dataProvider ().fields ().iteritems ():
@@ -978,7 +979,7 @@ def mmqgisx_float_to_text(qgis, layername, attributes, separator,
978
979
if addlayer :
979
980
vlayer = qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
980
981
981
- qgis .mainWindow ().statusBar ().showMessage (str (changecount ) + " numeric converted to text" )
982
+ qgis .mainWindow ().statusBar ().showMessage (unicode (changecount ) + " numeric converted to text" )
982
983
983
984
return None
984
985
@@ -996,14 +997,18 @@ def mmqgisx_geocode_google(qgis, csvname, shapefilename, notfoundfile, keys, add
996
997
try :
997
998
dialect = csv .Sniffer ().sniff (infile .read (2048 ))
998
999
except :
999
- return "Bad CSV file - verify that your delimiters are consistent : " + unicode (csvname )
1000
+ return "Failure reading " + unicode ( csvname ) + " : " + unicode (sys . exc_info ()[ 1 ] )
1000
1001
1001
- infile .seek (0 )
1002
- reader = csv .reader (infile , dialect )
1003
1002
1004
1003
fields = {}
1005
1004
indices = []
1006
- header = reader .next ()
1005
+ try :
1006
+ infile .seek (0 )
1007
+ reader = csv .reader (infile , dialect )
1008
+ header = reader .next ()
1009
+ except :
1010
+ return "Failure reading " + unicode (csvname ) + ": " + unicode (sys .exc_info ()[1 ])
1011
+
1007
1012
for x in range (0 , len (header )):
1008
1013
for y in range (0 , len (keys )):
1009
1014
if header [x ] == keys [y ]:
@@ -1046,8 +1051,8 @@ def mmqgisx_geocode_google(qgis, csvname, shapefilename, notfoundfile, keys, add
1046
1051
time .sleep (0.5 ) # to avoid Google rate quota limits
1047
1052
1048
1053
recordcount += 1
1049
- qgis .mainWindow ().statusBar ().showMessage ("Geocoding " + str (recordcount ) +
1050
- " (" + str (notfoundcount ) + " not found)" )
1054
+ qgis .mainWindow ().statusBar ().showMessage ("Geocoding " + unicode (recordcount ) +
1055
+ " (" + unicode (notfoundcount ) + " not found)" )
1051
1056
1052
1057
address = ""
1053
1058
for x in indices :
@@ -1101,7 +1106,7 @@ def mmqgisx_geocode_google(qgis, csvname, shapefilename, notfoundfile, keys, add
1101
1106
if addlayer and (recordcount > notfoundcount ) and (recordcount > 0 ):
1102
1107
vlayer = qgis .addVectorLayer (shapefilename , os .path .basename (shapefilename ), "ogr" )
1103
1108
1104
- qgis .mainWindow ().statusBar ().showMessage (str (recordcount - notfoundcount ) + " of " + str (recordcount )
1109
+ qgis .mainWindow ().statusBar ().showMessage (unicode (recordcount - notfoundcount ) + " of " + unicode (recordcount )
1105
1110
+ " addresses geocoded with Google" )
1106
1111
1107
1112
return None
@@ -1138,9 +1143,9 @@ def mmqgisx_geometry_convert(qgis, layername, newtype, splitnodes, savename, add
1138
1143
layer .dataProvider ().select (layer .dataProvider ().attributeIndexes ())
1139
1144
layer .dataProvider ().rewind ()
1140
1145
while layer .dataProvider ().nextFeature (feature ):
1141
- shapeid = str (feature .id ()).strip ()
1146
+ shapeid = unicode (feature .id ()).strip ()
1142
1147
1143
- qgis .mainWindow ().statusBar ().showMessage ("Converting feature " + shapeid + " of " + str (feature_count ))
1148
+ qgis .mainWindow ().statusBar ().showMessage ("Converting feature " + shapeid + " of " + unicode (feature_count ))
1144
1149
1145
1150
if (feature .geometry ().wkbType () == QGis .WKBPoint ) or \
1146
1151
(feature .geometry ().wkbType () == QGis .WKBPoint25D ):
@@ -1332,7 +1337,7 @@ def mmqgisx_geometry_convert(qgis, layername, newtype, splitnodes, savename, add
1332
1337
if addlayer :
1333
1338
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
1334
1339
1335
- qgis .mainWindow ().statusBar ().showMessage (str (feature_count ) + " features converted" )
1340
+ qgis .mainWindow ().statusBar ().showMessage (unicode (feature_count ) + " features converted" )
1336
1341
1337
1342
return None
1338
1343
@@ -1379,16 +1384,16 @@ def mmqgisx_geometry_export_to_csv(qgis, layername, node_filename, attribute_fil
1379
1384
layer .dataProvider ().select (layer .dataProvider ().attributeIndexes ())
1380
1385
layer .dataProvider ().rewind ()
1381
1386
while layer .dataProvider ().nextFeature (feature ):
1382
- shapeid = str (feature .id ()).strip ()
1387
+ shapeid = unicode (feature .id ()).strip ()
1383
1388
1384
- qgis .mainWindow ().statusBar ().showMessage ("Exporting feature " + shapeid + " of " + str (feature_count ))
1389
+ qgis .mainWindow ().statusBar ().showMessage ("Exporting feature " + shapeid + " of " + unicode (feature_count ))
1385
1390
1386
1391
if (feature .geometry () == None ):
1387
1392
return "Cannot export layer with no shape data"
1388
1393
1389
1394
elif (feature .geometry ().type () == QGis .Point ):
1390
1395
point = feature .geometry ().asPoint ()
1391
- row = [ shapeid , str (point .x ()), str (point .y ()) ]
1396
+ row = [ shapeid , unicode (point .x ()), unicode (point .y ()) ]
1392
1397
for attindex , attribute in feature .attributeMap ().iteritems ():
1393
1398
row .append (unicode (attribute .toString ()).encode ("iso-8859-1" ))
1394
1399
node_writer .writerow (row )
@@ -1398,7 +1403,7 @@ def mmqgisx_geometry_export_to_csv(qgis, layername, node_filename, attribute_fil
1398
1403
polyline = feature .geometry ().asPolyline ()
1399
1404
#for point in polyline.iteritems():
1400
1405
for point in polyline :
1401
- row = [ shapeid , str (point .x ()), str (point .y ()) ]
1406
+ row = [ shapeid , unicode (point .x ()), unicode (point .y ()) ]
1402
1407
node_writer .writerow (row )
1403
1408
1404
1409
row = []
@@ -1411,7 +1416,7 @@ def mmqgisx_geometry_export_to_csv(qgis, layername, node_filename, attribute_fil
1411
1416
polygon = feature .geometry ().asPolygon ()
1412
1417
for polyline in polygon :
1413
1418
for point in polyline :
1414
- row = [ shapeid , str (point .x ()), str (point .y ()) ]
1419
+ row = [ shapeid , unicode (point .x ()), unicode (point .y ()) ]
1415
1420
node_writer .writerow (row )
1416
1421
1417
1422
row = [shapeid ]
@@ -1423,7 +1428,7 @@ def mmqgisx_geometry_export_to_csv(qgis, layername, node_filename, attribute_fil
1423
1428
if (layer .geometryType () != QGis .Point ):
1424
1429
del attributefile
1425
1430
1426
- qgis .mainWindow ().statusBar ().showMessage (str (feature_count ) + " records exported" )
1431
+ qgis .mainWindow ().statusBar ().showMessage (unicode (feature_count ) + " records exported" )
1427
1432
1428
1433
return None
1429
1434
@@ -1516,7 +1521,7 @@ def mmqgisx_geometry_import_from_csv(qgis, node_filename, long_colname, lat_coln
1516
1521
if reading and (len (row ) > long_col ) and (len (row ) > lat_col ) and (len (row ) > shapeid_col ) \
1517
1522
and mmqgisx_is_float (row [long_col ]) and mmqgisx_is_float (row [lat_col ]):
1518
1523
node_count += 1
1519
- qgis .mainWindow ().statusBar ().showMessage ("Importing node " + str (node_count ))
1524
+ qgis .mainWindow ().statusBar ().showMessage ("Importing node " + unicode (node_count ))
1520
1525
point = QgsPoint (float (row [long_col ]), float (row [lat_col ]))
1521
1526
else :
1522
1527
point = False
@@ -1577,7 +1582,7 @@ def mmqgisx_geometry_import_from_csv(qgis, node_filename, long_colname, lat_coln
1577
1582
if addlayer :
1578
1583
qgis .addVectorLayer (shapefile_name , os .path .basename (shapefile_name ), "ogr" )
1579
1584
1580
- qgis .mainWindow ().statusBar ().showMessage ("Loaded " + str (shape_count ) + " shapes (" + str (node_count ) + " nodes" )
1585
+ qgis .mainWindow ().statusBar ().showMessage ("Loaded " + unicode (shape_count ) + " shapes (" + unicode (node_count ) + " nodes" )
1581
1586
1582
1587
return None
1583
1588
@@ -1590,10 +1595,10 @@ def mmqgisx_grid(qgis, savename, hspacing, vspacing, width, height, originx, ori
1590
1595
return "No output filename given"
1591
1596
1592
1597
if (hspacing <= 0 ) or (vspacing <= 0 ):
1593
- return "Invalid grid spacing: " + str (hspacing ) + " / " + str (vspacing )
1598
+ return "Invalid grid spacing: " + unicode (hspacing ) + " / " + unicode (vspacing )
1594
1599
1595
1600
if (width <= hspacing ) or (width < vspacing ):
1596
- return "Invalid width / height: " + str (width ) + " / " + str (height )
1601
+ return "Invalid width / height: " + unicode (width ) + " / " + unicode (height )
1597
1602
1598
1603
fields = {
1599
1604
0 : QgsField ("longitude" , QVariant .Double , "real" , 24 , 16 , "Longitude" ),
@@ -1751,7 +1756,7 @@ def mmqgisx_grid(qgis, savename, hspacing, vspacing, width, height, originx, ori
1751
1756
if addlayer :
1752
1757
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
1753
1758
1754
- qgis .mainWindow ().statusBar ().showMessage (str (linecount ) + " feature grid shapefile created" )
1759
+ qgis .mainWindow ().statusBar ().showMessage (unicode (linecount ) + " feature grid shapefile created" )
1755
1760
1756
1761
return None
1757
1762
@@ -1790,7 +1795,7 @@ def mmqgisx_gridify_layer(qgis, layername, hspacing, vspacing, savename, addlaye
1790
1795
1791
1796
feature = QgsFeature ()
1792
1797
while layer .dataProvider ().nextFeature (feature ):
1793
- qgis .mainWindow ().statusBar ().showMessage ("Gridifying feature " + str (feature_number + 1 ))
1798
+ qgis .mainWindow ().statusBar ().showMessage ("Gridifying feature " + unicode (feature_number + 1 ))
1794
1799
1795
1800
geometry = feature .geometry ()
1796
1801
@@ -1870,8 +1875,8 @@ def mmqgisx_gridify_layer(qgis, layername, hspacing, vspacing, savename, addlaye
1870
1875
geometry = geometry .fromMultiPolygon (newmultipolygon )
1871
1876
1872
1877
else :
1873
- return "Unknown geometry type " + str (geometry .wkbType ()) + \
1874
- " on feature " + str (feature_number + 1 )
1878
+ return "Unknown geometry type " + unicode (geometry .wkbType ()) + \
1879
+ " on feature " + unicode (feature_number + 1 )
1875
1880
1876
1881
# print "Closing feature"
1877
1882
@@ -1889,7 +1894,7 @@ def mmqgisx_gridify_layer(qgis, layername, hspacing, vspacing, savename, addlaye
1889
1894
vlayer = qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
1890
1895
1891
1896
qgis .mainWindow ().statusBar ().showMessage ("Gridified shapefile created (" + \
1892
- str (deleted_points ) + " of " + str (point_count ) + " points deleted)" )
1897
+ unicode (deleted_points ) + " of " + unicode (point_count ) + " points deleted)" )
1893
1898
1894
1899
return None
1895
1900
@@ -1953,7 +1958,7 @@ def mmqgisx_hub_distance(qgis, sourcename, destname, nameattributename, units, a
1953
1958
hubslayer .dataProvider ().select (hubslayer .dataProvider ().attributeIndexes ())
1954
1959
hubslayer .dataProvider ().rewind ()
1955
1960
while hubslayer .dataProvider ().nextFeature (feature ):
1956
- qgis .mainWindow ().statusBar ().showMessage ("Reading hub " + str (feature .id ()))
1961
+ qgis .mainWindow ().statusBar ().showMessage ("Reading hub " + unicode (feature .id ()))
1957
1962
hubs .append (mmqgisx_hub (feature .geometry ().boundingBox ().center (), \
1958
1963
feature .attributeMap ()[nameindex ].toString ()))
1959
1964
@@ -2011,8 +2016,8 @@ def mmqgisx_hub_distance(qgis, sourcename, destname, nameattributename, units, a
2011
2016
outfile .addFeature (outfeature )
2012
2017
2013
2018
writecount += 1
2014
- qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + str (writecount ) + \
2015
- " of " + str (sourcelayer .dataProvider ().featureCount ()))
2019
+ qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + unicode (writecount ) + \
2020
+ " of " + unicode (sourcelayer .dataProvider ().featureCount ()))
2016
2021
2017
2022
del outfile
2018
2023
@@ -2077,7 +2082,7 @@ def mmqgisx_hub_lines(qgis, hubname, hubattr, spokename, spokeattr, savename, ad
2077
2082
spokex = spokepoint .geometry ().boundingBox ().center ().x ()
2078
2083
spokey = spokepoint .geometry ().boundingBox ().center ().y ()
2079
2084
spokeid = unicode (spokepoint .attributeMap ()[spokeindex ].toString ())
2080
- qgis .mainWindow ().statusBar ().showMessage ("Reading spoke " + str (spokepoint .id ()))
2085
+ qgis .mainWindow ().statusBar ().showMessage ("Reading spoke " + unicode (spokepoint .id ()))
2081
2086
2082
2087
# Scan hub points to find first matching hub
2083
2088
hubpoint = QgsFeature ()
@@ -2112,7 +2117,7 @@ def mmqgisx_hub_lines(qgis, hubname, hubattr, spokename, spokeattr, savename, ad
2112
2117
if addlayer :
2113
2118
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
2114
2119
2115
- qgis .mainWindow ().statusBar ().showMessage (str (linecount ) + " hub/spoke lines written to " + savename )
2120
+ qgis .mainWindow ().statusBar ().showMessage (unicode (linecount ) + " hub/spoke lines written to " + savename )
2116
2121
2117
2122
return None
2118
2123
@@ -2175,7 +2180,7 @@ def mmqgisx_label_point(qgis, layername, labelattributename, savename, addlayer)
2175
2180
readcount += 1
2176
2181
if not (readcount % 10 ):
2177
2182
qgis .mainWindow ().statusBar ().showMessage ( \
2178
- "Reading feature " + str (readcount ) + " of " + str (feature_count ))
2183
+ "Reading feature " + unicode (readcount ) + " of " + unicode (feature_count ))
2179
2184
2180
2185
2181
2186
@@ -2201,14 +2206,14 @@ def mmqgisx_label_point(qgis, layername, labelattributename, savename, addlayer)
2201
2206
writecount += 1
2202
2207
if not (writecount % 10 ):
2203
2208
qgis .mainWindow ().statusBar ().showMessage ( \
2204
- "Writing feature " + str (writecount ) + " of " + str (len (features )))
2209
+ "Writing feature " + unicode (writecount ) + " of " + unicode (len (features )))
2205
2210
2206
2211
del outfile
2207
2212
2208
2213
if addlayer :
2209
2214
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
2210
2215
2211
- qgis .mainWindow ().statusBar ().showMessage (str (writecount ) + " label shapefile created from " + layername )
2216
+ qgis .mainWindow ().statusBar ().showMessage (unicode (writecount ) + " label shapefile created from " + layername )
2212
2217
2213
2218
return None
2214
2219
@@ -2292,15 +2297,15 @@ def mmqgisx_merge(qgis, layernames, savename, addlayer):
2292
2297
outfile .addFeature (feature )
2293
2298
featurecount += 1
2294
2299
qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + \
2295
- str (featurecount ) + " of " + str (totalfeaturecount ))
2300
+ unicode (featurecount ) + " of " + unicode (totalfeaturecount ))
2296
2301
2297
2302
del outfile
2298
2303
2299
2304
# Add the merged layer to the project
2300
2305
if addlayer :
2301
2306
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
2302
2307
2303
- qgis .mainWindow ().statusBar ().showMessage (str (featurecount ) + " records exported" )
2308
+ qgis .mainWindow ().statusBar ().showMessage (unicode (featurecount ) + " records exported" )
2304
2309
2305
2310
return None
2306
2311
@@ -2344,8 +2349,8 @@ def mmqgisx_select(qgis, layername, selectattributename, comparisonvalue, compar
2344
2349
while layer .dataProvider ().nextFeature (feature ):
2345
2350
if (comparisonname == 'begins with' ) or (comparisonname == 'contains' ) or \
2346
2351
(feature .attributeMap ()[selectindex ].type () == QVariant .String ):
2347
- x = str (feature .attributeMap ()[selectindex ].toString ())
2348
- y = comparisonvalue
2352
+ x = unicode (feature .attributeMap ()[selectindex ].toString ())
2353
+ y = unicode ( comparisonvalue )
2349
2354
else :
2350
2355
# print feature.attributeMap()[selectindex].typeName()
2351
2356
x = float (feature .attributeMap ()[selectindex ].toString ())
@@ -2375,15 +2380,15 @@ def mmqgisx_select(qgis, layername, selectattributename, comparisonvalue, compar
2375
2380
writecount += 1
2376
2381
2377
2382
qgis .mainWindow ().statusBar ().showMessage ("Scanning feature " + \
2378
- str (readcount ) + " of " + str (layer .dataProvider ().featureCount ()) + \
2379
- "(" + str (writecount ) + " selected)" )
2383
+ unicode (readcount ) + " of " + unicode (layer .dataProvider ().featureCount ()) + \
2384
+ "(" + unicode (writecount ) + " selected)" )
2380
2385
2381
2386
del outfile
2382
2387
2383
2388
if addlayer :
2384
2389
vlayer = qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
2385
2390
2386
- qgis .mainWindow ().statusBar ().showMessage ("Selected " + str (writecount ) + " features to " + savename )
2391
+ qgis .mainWindow ().statusBar ().showMessage ("Selected " + unicode (writecount ) + " features to " + savename )
2387
2392
2388
2393
return None
2389
2394
@@ -2432,9 +2437,9 @@ def mmqgisx_sort(qgis, layername, sortattributename, savename, direction, addlay
2432
2437
elif (featuretype == QVariant .Double ):
2433
2438
record = feature .id (), feature .attributeMap ()[sortindex ].toDouble ()
2434
2439
else :
2435
- record = feature .id (), str (feature .attributeMap ()[sortindex ].toString ())
2440
+ record = feature .id (), unicode (feature .attributeMap ()[sortindex ].toString ())
2436
2441
2437
- qgis .mainWindow ().statusBar ().showMessage ("Reading feature " + str (feature .id ()))
2442
+ qgis .mainWindow ().statusBar ().showMessage ("Reading feature " + unicode (feature .id ()))
2438
2443
table .append (record )
2439
2444
2440
2445
if (direction .lower () == "descending" ):
@@ -2448,8 +2453,8 @@ def mmqgisx_sort(qgis, layername, sortattributename, savename, direction, addlay
2448
2453
layer .featureAtId (record [0 ], feature )
2449
2454
outfile .addFeature (feature )
2450
2455
writecount += 1
2451
- qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + str (writecount ) + \
2452
- " of " + str (len (table )))
2456
+ qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + unicode (writecount ) + \
2457
+ " of " + unicode (len (table )))
2453
2458
2454
2459
del outfile
2455
2460
@@ -2566,11 +2571,11 @@ def mmqgisx_geocode_street_layer(qgis, layername, csvname, addressfield, shapefi
2566
2571
while layer .dataProvider ().nextFeature (feature ):
2567
2572
if (feature .id () % 20 ) == 0 :
2568
2573
qgis .mainWindow ().statusBar ().showMessage ("Searching street " + \
2569
- str (feature .id ()) + " of " + str (feature_count ) + \
2570
- " (" + str (matched_count ) + " matched)" )
2574
+ unicode (feature .id ()) + " of " + unicode (feature_count ) + \
2575
+ " (" + unicode (matched_count ) + " matched)" )
2571
2576
2572
2577
attributes = feature .attributeMap ()
2573
- key = mmqgisx_searchable_streetname (str (attributes [streetname_attribute ].toString ()))
2578
+ key = mmqgisx_searchable_streetname (unicode (attributes [streetname_attribute ].toString ()))
2574
2579
2575
2580
# Check each address against this feature
2576
2581
for row in range (0 , len (csv_attributes )):
@@ -2654,8 +2659,8 @@ def mmqgisx_geocode_street_layer(qgis, layername, csvname, addressfield, shapefi
2654
2659
if matched_count and addlayer :
2655
2660
vlayer = qgis .addVectorLayer (shapefilename , os .path .basename (shapefilename ), "ogr" )
2656
2661
2657
- qgis .mainWindow ().statusBar ().showMessage (str (matched_count ) + " of " + str (len (csv_attributes )) \
2658
- + " addresses geocoded from " + str (feature_count ) + " street records" )
2662
+ qgis .mainWindow ().statusBar ().showMessage (unicode (matched_count ) + " of " + unicode (len (csv_attributes )) \
2663
+ + " addresses geocoded from " + unicode (feature_count ) + " street records" )
2659
2664
2660
2665
return None
2661
2666
@@ -2748,12 +2753,12 @@ def mmqgisx_text_to_float(qgis, layername, attributes, savename, addlayer):
2748
2753
layer .dataProvider ().rewind ()
2749
2754
while layer .dataProvider ().nextFeature (feature ):
2750
2755
qgis .mainWindow ().statusBar ().showMessage ("Writing feature " + \
2751
- str (feature .id ()) + " of " + str (featurecount ))
2756
+ unicode (feature .id ()) + " of " + unicode (featurecount ))
2752
2757
2753
2758
attributes = feature .attributeMap ()
2754
2759
for index , field in layer .dataProvider ().fields ().iteritems ():
2755
2760
if (field .type () != destfields [index ].type ()):
2756
- string = str (attributes [index ].toString ())
2761
+ string = unicode (attributes [index ].toString ())
2757
2762
multiplier = 1.0
2758
2763
if string .find ("%" ) >= 0 :
2759
2764
multiplier = 1 / 100.0
@@ -2779,7 +2784,7 @@ def mmqgisx_text_to_float(qgis, layername, attributes, savename, addlayer):
2779
2784
if addlayer :
2780
2785
vlayer = qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
2781
2786
2782
- qgis .mainWindow ().statusBar ().showMessage (str (changecount ) + " text converted to numeric" )
2787
+ qgis .mainWindow ().statusBar ().showMessage (unicode (changecount ) + " text converted to numeric" )
2783
2788
2784
2789
return None
2785
2790
@@ -2819,7 +2824,7 @@ def mmqgisx_voronoi_diagram(qgis, sourcelayer, savename, addlayer):
2819
2824
# Re-read by feature ID because nextFeature() doesn't always seem to read attributes
2820
2825
layer .featureAtId (feature .id (), feature )
2821
2826
geometry = feature .geometry ()
2822
- qgis .mainWindow ().statusBar ().showMessage ("Reading feature " + str (feature .id ()))
2827
+ qgis .mainWindow ().statusBar ().showMessage ("Reading feature " + unicode (feature .id ()))
2823
2828
# print str(feature.id()) + ": " + str(geometry.wkbType())
2824
2829
if geometry .wkbType () == QGis .WKBPoint :
2825
2830
points .append ( (geometry .asPoint ().x (), geometry .asPoint ().y (), feature .attributeMap ()) )
@@ -2839,7 +2844,7 @@ def mmqgisx_voronoi_diagram(qgis, sourcelayer, savename, addlayer):
2839
2844
# for center in [ points[17] ]:
2840
2845
# print "\nCenter, " + str(center[0]) + ", " + str(center[1])
2841
2846
qgis .mainWindow ().statusBar ().showMessage ("Processing point " + \
2842
- str (center [0 ]) + ", " + str (center [1 ]))
2847
+ unicode (center [0 ]) + ", " + unicode (center [1 ]))
2843
2848
2844
2849
# Borders are tangents to midpoints between all neighbors
2845
2850
tangents = []
@@ -2981,7 +2986,7 @@ def mmqgisx_voronoi_diagram(qgis, sourcelayer, savename, addlayer):
2981
2986
if addlayer :
2982
2987
qgis .addVectorLayer (savename , os .path .basename (savename ), "ogr" )
2983
2988
2984
- qgis .mainWindow ().statusBar ().showMessage ("Created " + str (len (points )) + " polygon Voronoi diagram" )
2989
+ qgis .mainWindow ().statusBar ().showMessage ("Created " + unicode (len (points )) + " polygon Voronoi diagram" )
2985
2990
2986
2991
return None
2987
2992
@@ -2993,8 +2998,8 @@ def __init__(self, x, y):
2993
2998
self .distance = 0
2994
2999
2995
3000
def list (self , title ):
2996
- print title + ", " + str (self .x ) + ", " + str (self .y ) + \
2997
- ", angle " + str (self .angle * 180 / pi ) + ", distance " + str (self .distance )
3001
+ print title + ", " + unicode (self .x ) + ", " + unicode (self .y ) + \
3002
+ ", angle " + unicode (self .angle * 180 / pi ) + ", distance " + unicode (self .distance )
2998
3003
2999
3004
def angleval (self ):
3000
3005
return self .angle
0 commit comments