@@ -25,11 +25,20 @@ public void TestSTArea()
2525 {
2626 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
2727 {
28- const string ewkt = "SRID=2249;POLYGON((743238 2967416,743238 2967450, 743265 2967450,743265.625 2967416,743238 2967416))" ;
29- db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt ) ) . Insert ( ) ;
28+ const string ewkt1 = "SRID=2249;POLYGON((743238 2967416,743238 2967450, 743265 2967450,743265.625 2967416,743238 2967416))" ;
29+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt1 ) ) . Insert ( ) ;
30+ const string wkt2 = "LINESTRING(0 0, 1 1)" ;
31+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromText ( wkt2 ) ) . Insert ( ) ;
32+ db . TestGeometries . Value ( g => g . Id , 3 ) . Value ( p => p . Geometry , ( ) => null ) . Insert ( ) ;
33+
34+ var area1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STArea ( ) ) . Single ( ) ;
35+ Assert . AreEqual ( 928.625 , area1 ) ;
36+
37+ var area2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STArea ( ) ) . Single ( ) ;
38+ Assert . AreEqual ( 0.0 , area2 ) ;
3039
31- var area = db . TestGeometries . Select ( g => g . Geometry . STArea ( ) ) . Single ( ) ;
32- Assert . AreEqual ( 928.625 , area ) ;
40+ var area3 = db . TestGeometries . Where ( g => g . Id == 3 ) . Select ( g => g . Geometry . STArea ( ) ) . Single ( ) ;
41+ Assert . IsNull ( area3 ) ;
3342 }
3443 }
3544
@@ -39,8 +48,8 @@ public void TestSTDistance()
3948 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
4049 {
4150 var point = new NTSG . Point ( new NTSG . Coordinate ( - 72.1235 , 42.3521 ) ) { SRID = SRID4326 } ;
42- var lineString = new NTSG . LineString ( new [ ] { new NTSG . Coordinate ( - 72.1260 , 42.45 ) , new NTSG . Coordinate ( - 72.123 , 42.1546 ) } ) { SRID = SRID4326 } ;
4351 db . Insert ( new TestGeometryEntity ( 1 , point ) ) ;
52+ var lineString = new NTSG . LineString ( new [ ] { new NTSG . Coordinate ( - 72.1260 , 42.45 ) , new NTSG . Coordinate ( - 72.123 , 42.1546 ) } ) { SRID = SRID4326 } ;
4453 db . Insert ( new TestGeometryEntity ( 2 , lineString ) ) ;
4554
4655 // Geometry example - units in planar degrees 4326 is WGS 84 long lat, units are degrees.
@@ -56,6 +65,9 @@ public void TestSTDistance()
5665 Assert . AreEqual ( 2 , distances3857 . Count ) ;
5766 Assert . AreEqual ( 0.0 , distances3857 [ 0 ] ) ;
5867 Assert . AreEqual ( 167.441410065196 , distances3857 [ 1 ] , 1.0E9 ) ;
68+
69+ var nullDistance = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STDistance ( null ) ) . Single ( ) ;
70+ Assert . IsNull ( nullDistance ) ;
5971 }
6072 }
6173
@@ -64,12 +76,20 @@ public void TestSTLength()
6476 {
6577 using ( var db = new PostGisTestDataConnection ( TestDatabaseConnectionString ) )
6678 {
67- const string ewkt = "SRID=2249;LINESTRING(743238 2967416,743238 2967450,743265 2967450, 743265.625 2967416,743238 2967416)" ;
68- db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt ) ) . Insert ( ) ;
79+ const string ewkt1 = "SRID=2249;LINESTRING(743238 2967416,743238 2967450,743265 2967450, 743265.625 2967416,743238 2967416)" ;
80+ db . TestGeometries . Value ( g => g . Id , 1 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt1 ) ) . Insert ( ) ;
81+ const string ewkt2 = "SRID=2249;POINT(0 0)" ;
82+ db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt2 ) ) . Insert ( ) ;
83+ db . TestGeometries . Value ( g => g . Id , 3 ) . Value ( p => p . Geometry , ( ) => null ) . Insert ( ) ;
84+
85+ var length1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STLength ( ) ) . Single ( ) ;
86+ Assert . AreEqual ( 122.630744000095 , length1 , 0.000000000001 ) ;
6987
70- var length = db . TestGeometries . Select ( g => g . Geometry . STLength ( ) ) . Single ( ) ;
88+ var length2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STLength ( ) ) . Single ( ) ;
89+ Assert . AreEqual ( 0.0 , length2 ) ;
7190
72- Assert . AreEqual ( 122.630744000095 , length , 0.000000000001 ) ;
91+ var length3 = db . TestGeometries . Where ( g => g . Id == 3 ) . Select ( g => g . Geometry . STLength ( ) ) . Single ( ) ;
92+ Assert . IsNull ( length3 ) ;
7393 }
7494 }
7595
@@ -95,17 +115,21 @@ public void TestSTPerimeter()
95115 763104.471273676 2949418.44119003)))" ;
96116 db . TestGeometries . Value ( g => g . Id , 2 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt2 ) ) . Insert ( ) ;
97117
98- var perimeter1 = db . TestGeometries
99- . Where ( g => g . Id == 1 )
100- . Select ( g => g . Geometry . STPerimeter ( ) )
101- . Single ( ) ;
118+ const string ewkt3 = "SRID=2249;POINT(0 0)" ;
119+ db . TestGeometries . Value ( g => g . Id , 3 ) . Value ( p => p . Geometry , ( ) => GeometryInput . STGeomFromEWKT ( ewkt3 ) ) . Insert ( ) ;
120+ db . TestGeometries . Value ( g => g . Id , 4 ) . Value ( p => p . Geometry , ( ) => null ) . Insert ( ) ;
121+
122+ var perimeter1 = db . TestGeometries . Where ( g => g . Id == 1 ) . Select ( g => g . Geometry . STPerimeter ( ) ) . Single ( ) ;
102123 Assert . AreEqual ( 122.630744000095 , perimeter1 , 0.000000000001 ) ;
103124
104- var perimeter2 = db . TestGeometries
105- . Where ( g => g . Id == 2 )
106- . Select ( g => g . Geometry . STPerimeter ( ) )
107- . Single ( ) ;
125+ var perimeter2 = db . TestGeometries . Where ( g => g . Id == 2 ) . Select ( g => g . Geometry . STPerimeter ( ) ) . Single ( ) ;
108126 Assert . AreEqual ( 845.227713366825 , perimeter2 , 0.000000000001 ) ;
127+
128+ var perimeter3 = db . TestGeometries . Where ( g => g . Id == 3 ) . Select ( g => g . Geometry . STPerimeter ( ) ) . Single ( ) ;
129+ Assert . AreEqual ( 0.0 , perimeter3 ) ;
130+
131+ var perimeter4 = db . TestGeometries . Where ( g => g . Id == 4 ) . Select ( g => g . Geometry . STPerimeter ( ) ) . Single ( ) ;
132+ Assert . IsNull ( perimeter4 ) ;
109133 }
110134 }
111135 }
0 commit comments