@@ -839,6 +839,57 @@ void TestQgsGeometry::point()
839
839
QCOMPARE ( p31 - QgsVector ( 3 , 5 ), QgsPointV2 ( 1 , 2 ) );
840
840
p31 -= QgsVector ( 3 , 5 );
841
841
QCOMPARE ( p31, QgsPointV2 ( 1 , 2 ) );
842
+
843
+ // test projecting a point
844
+ // 2D
845
+ QgsPointV2 p33 = QgsPointV2 ( 1 , 2 );
846
+ QCOMPARE ( p33.project ( 1 , 0 ), QgsPointV2 ( 1 , 3 ) );
847
+ QCOMPARE ( p33.project ( 1 , 0 , 0 ), QgsPointV2 ( QgsWkbTypes::PointZ, 1 , 2 , 1 ) );
848
+ QCOMPARE ( p33.project ( 1.5 , 90 ), QgsPointV2 ( 2.5 , 2 ) );
849
+ QCOMPARE ( p33.project ( 1.5 , 90 , 90 ), QgsPointV2 ( 2.5 , 2 ) ); // stay QgsWkbTypes::Point
850
+ QCOMPARE ( p33.project ( 2 , 180 ), QgsPointV2 ( 1 , 0 ) );
851
+ QCOMPARE ( p33.project ( 2 , 180 , 180 ), QgsPointV2 ( QgsWkbTypes::PointZ, 1 , 2 , -2 ) );
852
+ QCOMPARE ( p33.project ( 5 , 270 ), QgsPointV2 ( -4 , 2 ) );
853
+ QCOMPARE ( p33.project ( 5 , 270 , 270 ), QgsPointV2 ( QgsWkbTypes::PointZ, 6 , 2 , 0 ) );
854
+ QCOMPARE ( p33.project ( 6 , 360 ), QgsPointV2 ( 1 , 8 ) );
855
+ QCOMPARE ( p33.project ( 6 , 360 , 360 ), QgsPointV2 ( QgsWkbTypes::PointZ, 1 , 2 , 6 ) );
856
+ QCOMPARE ( p33.project ( 5 , 450 ), QgsPointV2 ( 6 , 2 ) );
857
+ QCOMPARE ( p33.project ( 5 , 450 , 450 ), QgsPointV2 ( 6 , 2 ) ); // stay QgsWkbTypes::Point
858
+ QCOMPARE ( p33.project ( -1 , 0 ), QgsPointV2 ( 1 , 1 ) );
859
+ QCOMPARE ( p33.project ( -1 , 0 , 0 ), QgsPointV2 ( QgsWkbTypes::PointZ, 1 , 2 , -1 ) );
860
+ QCOMPARE ( p33.project ( 1.5 , -90 ), QgsPointV2 ( -0.5 , 2 ) );
861
+ QCOMPARE ( p33.project ( 1.5 , -90 , -90 ), QgsPointV2 ( QgsWkbTypes::PointZ, 2.5 , 2 , 0 ) );
862
+ // PointM
863
+ p33.addMValue ( 5.0 );
864
+ QCOMPARE ( p33.project ( 1 , 0 ), QgsPointV2 ( QgsWkbTypes::PointM, 1 , 3 , 0 , 5 ) );
865
+ QCOMPARE ( p33.project ( 1 , 0 , 0 ), QgsPointV2 ( QgsWkbTypes::PointZM, 1 , 2 , 1 , 5 ) );
866
+ QCOMPARE ( p33.project ( 5 , 450 , 450 ), QgsPointV2 ( QgsWkbTypes::PointM, 6 , 2 , 0 , 5 ) );
867
+
868
+ // 3D
869
+ QgsPointV2 p34 = QgsPointV2 ( QgsWkbTypes::PointZ, 1 , 2 , 2 );
870
+ QCOMPARE ( p34.project ( 1 , 0 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 3 , 2 ) );
871
+ QCOMPARE ( p34.project ( 1 , 0 , 0 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 2 , 3 ) );
872
+ QCOMPARE ( p34.project ( 1.5 , 90 ), QgsPointV2 (QgsWkbTypes::PointZ, 2.5 , 2 , 2 ) );
873
+ QCOMPARE ( p34.project ( 1.5 , 90 , 90 ), QgsPointV2 (QgsWkbTypes::PointZ, 2.5 , 2 , 2 ) );
874
+ QCOMPARE ( p34.project ( 2 , 180 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 0 , 2 ) );
875
+ QCOMPARE ( p34.project ( 2 , 180 , 180 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 2 , 0 ) );
876
+ QCOMPARE ( p34.project ( 5 , 270 ), QgsPointV2 (QgsWkbTypes::PointZ, -4 , 2 , 2 ) );
877
+ QCOMPARE ( p34.project ( 5 , 270 , 270 ), QgsPointV2 (QgsWkbTypes::PointZ, 6 , 2 , 2 ) );
878
+ QCOMPARE ( p34.project ( 6 , 360 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 8 , 2 ) );
879
+ QCOMPARE ( p34.project ( 6 , 360 , 360 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 2 , 8 ) );
880
+ QCOMPARE ( p34.project ( 5 , 450 ), QgsPointV2 (QgsWkbTypes::PointZ, 6 , 2 , 2 ) );
881
+ QCOMPARE ( p34.project ( 5 , 450 , 450 ), QgsPointV2 (QgsWkbTypes::PointZ, 6 , 2 , 2 ) );
882
+ QCOMPARE ( p34.project ( -1 , 0 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 1 , 2 ) );
883
+ QCOMPARE ( p34.project ( -1 , 0 , 0 ), QgsPointV2 (QgsWkbTypes::PointZ, 1 , 2 , 1 ) );
884
+ QCOMPARE ( p34.project ( 1.5 , -90 ), QgsPointV2 (QgsWkbTypes::PointZ, -0.5 , 2 , 2 ) );
885
+ QCOMPARE ( p34.project ( 1.5 , -90 , -90 ), QgsPointV2 (QgsWkbTypes::PointZ, 2.5 , 2 , 2 ) );
886
+ // PointM
887
+ p34.addMValue ( 5.0 );
888
+ QCOMPARE ( p34.project ( 1 , 0 ), QgsPointV2 (QgsWkbTypes::PointZM, 1 , 3 , 2 , 5 ) );
889
+ QCOMPARE ( p34.project ( 1 , 0 , 0 ), QgsPointV2 (QgsWkbTypes::PointZM, 1 , 2 , 3 , 5 ) );
890
+ QCOMPARE ( p34.project ( 5 , 450 ), QgsPointV2 (QgsWkbTypes::PointZM, 6 , 2 , 2 , 5 ) );
891
+ QCOMPARE ( p34.project ( 5 , 450 , 450 ), QgsPointV2 (QgsWkbTypes::PointZM, 6 , 2 , 2 , 5 ) );
892
+
842
893
}
843
894
844
895
void TestQgsGeometry::lineString ()
0 commit comments