@@ -982,6 +982,68 @@ def testCreateDGN(self):
982
982
983
983
os .unlink (filename )
984
984
985
+ def testAddZ (self ):
986
+ """Check adding z values to non z input."""
987
+ input = QgsVectorLayer (
988
+ 'Point?crs=epsg:4326&field=name:string(20)' ,
989
+ 'test' ,
990
+ 'memory' )
991
+
992
+ self .assertTrue (input .isValid (), 'Provider not initialized' )
993
+
994
+ ft = QgsFeature ()
995
+ ft .setGeometry (QgsGeometry .fromPointXY (QgsPointXY (10 , 10 )))
996
+ myResult , myFeatures = input .dataProvider ().addFeatures ([ft ])
997
+ self .assertTrue (myResult )
998
+ self .assertTrue (myFeatures )
999
+
1000
+ dest_file_name = os .path .join (str (QDir .tempPath ()), 'add_z.geojson' )
1001
+ options = QgsVectorFileWriter .SaveVectorOptions ()
1002
+ options .overrideGeometryType = QgsWkbTypes .PointZ
1003
+ options .driverName = 'GeoJSON'
1004
+ write_result , error_message = QgsVectorFileWriter .writeAsVectorFormat (
1005
+ input ,
1006
+ dest_file_name ,
1007
+ options )
1008
+ self .assertEqual (write_result , QgsVectorFileWriter .NoError , error_message )
1009
+
1010
+ # Open result and check
1011
+ created_layer = QgsVectorLayer (dest_file_name , 'test' , 'ogr' )
1012
+ self .assertTrue (created_layer .isValid ())
1013
+ f = next (created_layer .getFeatures (QgsFeatureRequest ()))
1014
+ self .assertEqual (f .geometry ().asWkt (), 'PointZ (10 10 0)' )
1015
+
1016
+ def testDropZ (self ):
1017
+ """Check dropping z values input."""
1018
+ input = QgsVectorLayer (
1019
+ 'PointZ?crs=epsg:4326&field=name:string(20)' ,
1020
+ 'test' ,
1021
+ 'memory' )
1022
+
1023
+ self .assertTrue (input .isValid (), 'Provider not initialized' )
1024
+
1025
+ ft = QgsFeature ()
1026
+ ft .setGeometry (QgsGeometry .fromWkt ('PointM(10 10 2)' ))
1027
+ myResult , myFeatures = input .dataProvider ().addFeatures ([ft ])
1028
+ self .assertTrue (myResult )
1029
+ self .assertTrue (myFeatures )
1030
+
1031
+ dest_file_name = os .path .join (str (QDir .tempPath ()), 'drop_z.geojson' )
1032
+ options = QgsVectorFileWriter .SaveVectorOptions ()
1033
+ options .overrideGeometryType = QgsWkbTypes .PointM
1034
+ options .driverName = 'GeoJSON'
1035
+ write_result , error_message = QgsVectorFileWriter .writeAsVectorFormat (
1036
+ input ,
1037
+ dest_file_name ,
1038
+ options )
1039
+ self .assertEqual (write_result , QgsVectorFileWriter .NoError , error_message )
1040
+
1041
+ # Open result and check
1042
+ created_layer = QgsVectorLayer (dest_file_name , 'test' , 'ogr' )
1043
+ self .assertTrue (created_layer .isValid ())
1044
+ f = next (created_layer .getFeatures (QgsFeatureRequest ()))
1045
+ self .assertEqual (f .geometry ().asWkt (), 'Point (10 10)' )
1046
+
985
1047
986
1048
if __name__ == '__main__' :
987
1049
unittest .main ()
0 commit comments