1-- POINT -- 2SELECT g, 3 ST_AsText(g::geometry), 4 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 5'POINT EMPTY' 6::text as g ) as foo; 7 8SELECT g, 9 ST_AsText(g::geometry), 10 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 11'POINT(EMPTY)' 12::text as g ) as foo; 13 14SELECT g, 15 ST_AsText(g::geometry), 16 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 17'POINT(0 0)' 18::text as g ) as foo; 19 20SELECT g, 21 ST_AsText(g::geometry), 22 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 23'POINT Z (0 0 0)' 24::text as g ) as foo; 25 26SELECT g, 27 ST_AsText(g::geometry), 28 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 29'POINT M (0 0 0)' 30::text as g ) as foo; 31 32SELECT g, 33 ST_AsText(g::geometry), 34 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 35'POINT ZM (0 0 0 0)' 36::text as g ) as foo; 37 38SELECT g, 39 ST_AsText(g::geometry), 40 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 41'POINT ZM (0 0 0)' -- broken, misses an ordinate value 42::text as g ) as foo; 43 44SELECT g, 45 ST_AsText(g::geometry), 46 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 47'POINT((0 0))' 48::text as g ) as foo; 49 50-- MULTIPOINT -- 51 52SELECT g, 53 ST_AsText(g::geometry), 54 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 55'MULTIPOINT EMPTY' 56::text as g ) as foo; 57 58SELECT g, 59 ST_AsText(g::geometry), 60 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 61'MULTIPOINT(EMPTY)' 62::text as g ) as foo; 63 64-- This is supported for backward compatibility 65SELECT g, 66 ST_AsText(g::geometry), 67 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 68'MULTIPOINT(0 0, 2 0)' 69::text as g ) as foo; 70 71SELECT g, 72 ST_AsText(g::geometry), 73 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 74'MULTIPOINT((0 0), (2 0))' 75::text as g ) as foo; 76 77SELECT g, 78 ST_AsText(g::geometry), 79 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 80'MULTIPOINT((0 0), (2 0), EMPTY)' 81::text as g ) as foo; 82 83SELECT g, 84 ST_AsText(g::geometry), 85 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 86'MULTIPOINT Z ((0 0 0), (2 0 0))' 87::text as g ) as foo; 88 89SELECT g, 90 ST_AsText(g::geometry), 91 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 92'MULTIPOINT M ((0 0 0), (2 0 0))' 93::text as g ) as foo; 94 95SELECT g, 96 ST_AsText(g::geometry), 97 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 98'MULTIPOINT ZM ((0 0 0 0), (2 0 0 0))' 99::text as g ) as foo; 100 101-- LINESTRING -- 102 103SELECT g, 104 ST_AsText(g::geometry), 105 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 106'LINESTRING EMPTY' 107::text as g ) as foo; 108 109SELECT g, 110 ST_AsText(g::geometry), 111 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 112'LINESTRING(EMPTY)' 113::text as g ) as foo; 114 115SELECT g, 116 ST_AsText(g::geometry), 117 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 118'LINESTRING(0 0, 1 1)' 119::text as g ) as foo; 120 121SELECT g, 122 ST_AsText(g::geometry), 123 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 124'LINESTRING((0 0, 1 1))' 125::text as g ) as foo; 126 127SELECT g, 128 ST_AsText(g::geometry), 129 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 130'LINESTRING((0 0), (1 1))' 131::text as g ) as foo; 132 133SELECT g, 134 ST_AsText(g::geometry), 135 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 136'LINESTRING Z (0 0 0, 1 1 0)' 137::text as g ) as foo; 138 139SELECT g, 140 ST_AsText(g::geometry), 141 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 142'LINESTRING M (0 0 0, 1 1 0)' 143::text as g ) as foo; 144 145SELECT g, 146 ST_AsText(g::geometry), 147 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 148'LINESTRING ZM (0 0 0 0, 1 1 0 0)' 149::text as g ) as foo; 150 151-- MULTILINESTRING -- 152 153SELECT g, 154 ST_AsText(g::geometry), 155 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 156'MULTILINESTRING EMPTY' 157::text as g ) as foo; 158 159SELECT g, 160 ST_AsText(g::geometry), 161 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 162'MULTILINESTRING(EMPTY)' 163::text as g ) as foo; 164 165SELECT g, 166 ST_AsText(g::geometry), 167 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 168'MULTILINESTRING(0 0, 2 0)' 169::text as g ) as foo; 170 171SELECT g, 172 ST_AsText(g::geometry), 173 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 174'MULTILINESTRING((0 0, 2 0))' 175::text as g ) as foo; 176 177SELECT g, 178 ST_AsText(g::geometry), 179 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 180'MULTILINESTRING((0 0, 2 0), (1 1, 2 2))' 181::text as g ) as foo; 182 183SELECT g, 184 ST_AsText(g::geometry), 185 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 186'MULTILINESTRING((0 0, 2 0), (1 1, 2 2), EMPTY)' 187::text as g ) as foo; 188 189SELECT g, 190 ST_AsText(g::geometry), 191 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 192'MULTILINESTRING((0 0, 2 0), (1 1, 2 2), (EMPTY))' 193::text as g ) as foo; 194 195SELECT g, 196 ST_AsText(g::geometry), 197 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 198'MULTILINESTRING Z ((0 0 0, 2 0 0), (1 1 0, 2 2 0))' 199::text as g ) as foo; 200 201SELECT g, 202 ST_AsText(g::geometry), 203 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 204'MULTILINESTRING M ((0 0 0, 2 0 0), (1 1 0, 2 2 0))' 205::text as g ) as foo; 206 207SELECT g, 208 ST_AsText(g::geometry), 209 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 210'MULTILINESTRING ZM ((0 0 0 0, 2 0 0 0), (1 1 0 0, 2 2 0 0))' 211::text as g ) as foo; 212 213-- POLYGON -- 214 215SELECT g, 216 ST_AsText(g::geometry), 217 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 218'POLYGON EMPTY' 219::text as g ) as foo; 220 221SELECT g, 222 ST_AsText(g::geometry), 223 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 224'POLYGON(EMPTY)' 225::text as g ) as foo; 226 227SELECT g, 228 ST_AsText(g::geometry), 229 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 230'POLYGON((0 0,1 0,1 1,0 1,0 0))' 231::text as g ) as foo; 232 233SELECT g, 234 ST_AsText(g::geometry), 235 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 236'POLYGON((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))' 237::text as g ) as foo; 238 239SELECT g, 240 ST_AsText(g::geometry), 241 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 242'POLYGON Z ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))' 243::text as g ) as foo; 244 245SELECT g, 246 ST_AsText(g::geometry), 247 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 248'POLYGON M ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(2 2 0,2 5 0,5 5 0,5 2 0,2 2 0))' 249::text as g ) as foo; 250 251SELECT g, 252 ST_AsText(g::geometry), 253 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 254'POLYGON ZM ((0 0 0 2,10 0 0 2,10 10 0 2,0 10 0 2,0 0 0 2),(2 2 0 2,2 5 0 2,5 5 0 2,5 2 0 2,2 2 0 2))' 255::text as g ) as foo; 256 257-- MULTIPOLYGON -- 258 259SELECT g, 260 ST_AsText(g::geometry), 261 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 262'MULTIPOLYGON EMPTY' 263::text as g ) as foo; 264 265SELECT g, 266 ST_AsText(g::geometry), 267 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 268'MULTIPOLYGON(EMPTY)' 269::text as g ) as foo; 270 271SELECT g, 272 ST_AsText(g::geometry), 273 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 274'MULTIPOLYGON((EMPTY))' 275::text as g ) as foo; 276 277SELECT g, 278 ST_AsText(g::geometry), 279 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 280'MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2)))' 281::text as g ) as foo; 282 283SELECT g, 284 ST_AsText(g::geometry), 285 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 286'MULTIPOLYGON Z (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))' 287::text as g ) as foo; 288 289SELECT g, 290 ST_AsText(g::geometry), 291 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 292'MULTIPOLYGON M (((0 0 2,10 0 2,10 10 2,0 10 2,0 0 2),(2 2 2,2 5 2,5 5 2,5 2 2,2 2 2)))' 293::text as g ) as foo; 294 295SELECT g, 296 ST_AsText(g::geometry), 297 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 298'MULTIPOLYGON ZM (((0 0 2 5,10 0 2 5,10 10 2 5,0 10 2 5,0 0 2 5),(2 2 2 5,2 5 2 5,5 5 2 5,5 2 2 5,2 2 2 5)))' 299::text as g ) as foo; 300 301-- GEOMETRYCOLLECTION -- 302 303SELECT g, 304 ST_AsText(g::geometry), 305 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 306'GEOMETRYCOLLECTION EMPTY' 307::text as g ) as foo; 308 309-- This is supported for backward compatibility 310SELECT g, 311 ST_AsText(g::geometry), 312 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 313'GEOMETRYCOLLECTION(EMPTY)' 314::text as g ) as foo; 315 316SELECT g, 317 ST_AsText(g::geometry), 318 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 319'GEOMETRYCOLLECTION((EMPTY))' 320::text as g ) as foo; 321 322SELECT g, 323 ST_AsText(g::geometry), 324 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 325'GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0),(2 2,2 5,5 5,5 2,2 2))),POINT(0 0),MULTILINESTRING((0 0, 2 0),(1 1, 2 2)))' 326::text as g ) as foo; 327 328SELECT g, 329 ST_AsText(g::geometry), 330 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 331'GEOMETRYCOLLECTION Z (MULTIPOLYGON Z (((0 0 5,10 0 5,10 10 5,0 10 5,0 0 5),(2 2 5,2 5 5,5 5 5,5 2 5,2 2 5))),POINT Z (0 0 5),MULTILINESTRING Z ((0 0 5, 2 0 5),(1 1 5, 2 2 5)))' 332::text as g ) as foo; 333 334SELECT g, 335 ST_AsText(g::geometry), 336 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 337'GEOMETRYCOLLECTION M (MULTIPOLYGON M (((0 0 5,10 0 5,10 10 5,0 10 5,0 0 5),(2 2 5,2 5 5,5 5 5,5 2 5,2 2 5))),POINT M (0 0 5),MULTILINESTRING M ((0 0 5, 2 0 5),(1 1 5, 2 2 5)))' 338::text as g ) as foo; 339 340SELECT g, 341 ST_AsText(g::geometry), 342 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 343'GEOMETRYCOLLECTION ZM (MULTIPOLYGON ZM (((0 0 5 4,10 0 5 4,10 10 5 4,0 10 5 4,0 0 5 4),(2 2 5 4,2 5 5 4,5 5 5 4,5 2 5 4,2 2 5 4))),POINT ZM (0 0 5 4),MULTILINESTRING ZM ((0 0 5 4, 2 0 5 4),(1 1 5 4, 2 2 5 4)))' 344::text as g ) as foo; 345 346-- CIRCULARSTRING -- 347 348SELECT g, -- invalid 349 ST_AsText(g::geometry), 350 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 351'CIRCULARSTRING(EMPTY)' 352::text as g ) as foo; 353 354SELECT g, -- invalid 355 ST_AsText(g::geometry), 356 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 357'CIRCULARSTRING((0 0, 1 1, 2 2))' 358::text as g ) as foo; 359 360SELECT g, -- invalid 361 ST_AsText(g::geometry), 362 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 363'CIRCULARSTRING(0 0, 1 1)' 364::text as g ) as foo; 365 366SELECT g, 367 ST_AsText(g::geometry), 368 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 369'CIRCULARSTRING EMPTY' 370::text as g ) as foo; 371 372SELECT g, 373 ST_AsText(g::geometry), 374 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 375'CIRCULARSTRING(0 0, 1 1, 3 3)' 376::text as g ) as foo; 377 378SELECT g, 379 ST_AsText(g::geometry), 380 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 381'CIRCULARSTRING Z (0 0 0, 1 1 0, 2 3 4)' 382::text as g ) as foo; 383 384SELECT g, 385 ST_AsText(g::geometry), 386 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 387'CIRCULARSTRING M (0 0 0, 1 1 0, 3 4 5)' 388::text as g ) as foo; 389 390SELECT g, 391 ST_AsText(g::geometry), 392 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 393'CIRCULARSTRING ZM (0 0 0 0, 1 1 0 0, 1 2 3 4)' 394::text as g ) as foo; 395 396-- COMPOUNDCURVE -- 397 398SELECT g, -- invalid (missing point) 399 ST_AsText(g::geometry), 400 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 401'COMPOUNDCURVE(CIRCULARSTRING(0 0,1 0),(1 0,0 1))' 402::text as g ) as foo; 403 404SELECT g, -- invalid (non continuous curve) 405 ST_AsText(g::geometry), 406 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 407'COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 2,0 1))' 408::text as g ) as foo; 409 410SELECT g, 411 ST_AsText(g::geometry), 412 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 413'COMPOUNDCURVE EMPTY' 414::text as g ) as foo; 415 416SELECT g, 417 ST_AsText(g::geometry), 418 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 419'COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1))' 420::text as g ) as foo; 421 422SELECT g, 423 ST_AsText(g::geometry), 424 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 425'COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))' 426::text as g ) as foo; 427 428SELECT g, 429 ST_AsText(g::geometry), 430 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 431'COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2))' 432::text as g ) as foo; 433 434SELECT g, 435 ST_AsText(g::geometry), 436 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 437'COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5), (1 0 2 3,0 1 2 2), (0 1 2 2,30 1 2 2), CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5))' 438::text as g ) as foo; 439 440-- CURVEPOLYGON -- 441 442SELECT g, -- invalid (non continuous curve) 443 ST_AsText(g::geometry), 444 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 445'CURVEPOLYGON (COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 2,0 1)))' 446::text as g ) as foo; 447 448SELECT g, -- invalid (requires more points -- is this correct?) 449 ST_AsText(g::geometry), 450 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 451'CURVEPOLYGON (COMPOUNDCURVE EMPTY)' 452::text as g ) as foo; 453 454SELECT g, -- invalid (non-closed rings) 455 ST_AsText(g::geometry), 456 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 457'CURVEPOLYGON (COMPOUNDCURVE(CIRCULARSTRING(0 0,1 1,1 0),(1 0,0 1)))' 458::text as g ) as foo; 459 460SELECT g, 461 ST_AsText(g::geometry), 462 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 463'CURVEPOLYGON EMPTY' 464::text as g ) as foo; 465 466SELECT g, 467 ST_AsText(g::geometry), 468 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 469'CURVEPOLYGON (COMPOUNDCURVE M (CIRCULARSTRING M (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2),(0 1 2, 0 0 2)))' 470::text as g ) as foo; 471 472SELECT g, 473 ST_AsText(g::geometry), 474 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 475'CURVEPOLYGON (COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 2,1 1 2,1 0 2),(1 0 2,0 1 2, 0 0 2)))' 476::text as g ) as foo; 477 478SELECT g, 479 ST_AsText(g::geometry), 480 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 481'CURVEPOLYGON (COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 2 5,1 1 2 6,1 0 2 5), (1 0 2 3,0 1 2 2), (0 1 2 2,30 1 2 2), CIRCULARSTRING ZM (30 1 2 2,12 1 2 6,1 10 2 5, 1 10 3 5, 0 0 2 5)))' 482::text as g ) as foo; 483 484SELECT g, 485 ST_AsText(g::geometry), 486 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 487'CURVEPOLYGON(COMPOUNDCURVE((5 5 1 0,5 0 1 1,0 0 1 2,0 5 1 3), CIRCULARSTRING(0 5 1 3,1.5 7.5 1 4,5 5 1 0)),(1.5 5 2 0,2.5 6 3 1,3.5 5 2 2,1.5 5 2 0), COMPOUNDCURVE(CIRCULARSTRING(1.5 2 2 0,1 2.5 3 1,3.5 2 2 2),(3.5 2 2 2,3.5 4 1 3,1.5 4 1 4,1.5 2 2 0)))' 488::text as g ) as foo; 489 490-- MULTICURVE -- 491 492SELECT g, 493 ST_AsText(g::geometry), 494 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 495'MULTICURVE EMPTY' 496::text as g ) as foo; 497 498SELECT g, 499 ST_AsText(g::geometry), 500 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 501'MULTICURVE ((5 5, 3 5, 3 3, 0 3), CIRCULARSTRING (0 0, 0.2 1, 0.5 1.4), COMPOUNDCURVE (CIRCULARSTRING (0 0,1 1,1 0),(1 0,0 1)))' 502::text as g ) as foo; 503 504SELECT g, 505 ST_AsText(g::geometry), 506 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 507'MULTICURVE M ((5 5 1, 3 5 2, 3 3 3, 0 3 1), CIRCULARSTRING M (0 0 0, 0.2 1 3, 0.5 1.4 1), COMPOUNDCURVE M (CIRCULARSTRING M (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))' 508::text as g ) as foo; 509 510SELECT g, 511 ST_AsText(g::geometry), 512 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 513'MULTICURVE Z ((5 5 1, 3 5 2, 3 3 3, 0 3 1), CIRCULARSTRING Z (0 0 0, 0.2 1 3, 0.5 1.4 1), COMPOUNDCURVE Z (CIRCULARSTRING Z (0 0 0,1 1 1,1 0 0),(1 0 0,0 1 5)))' 514::text as g ) as foo; 515 516SELECT g, 517 ST_AsText(g::geometry), 518 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 519'MULTICURVE ZM ((5 5 1 3, 3 5 2 2, 3 3 3 1, 0 3 1 1), CIRCULARSTRING ZM (0 0 0 0, 0.2 1 3 -2, 0.5 1.4 1 2), COMPOUNDCURVE ZM (CIRCULARSTRING ZM (0 0 0 0,1 1 1 2,1 0 0 1),(1 0 0 1,0 1 5 4)))' 520::text as g ) as foo; 521 522-- MULTISURFACE -- 523 524SELECT g, 525 ST_AsText(g::geometry), 526 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 527'MULTISURFACE EMPTY' 528::text as g ) as foo; 529 530SELECT g, 531 ST_AsText(g::geometry), 532 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 533'MULTISURFACE (CURVEPOLYGON (CIRCULARSTRING (-2 0, -1 -1, 0 0, 1 -1, 2 0, 0 2, -2 0), (-1 0, 0 0.5, 1 0, 0 1, -1 0)), ((7 8, 10 10, 6 14, 4 11, 7 8)))' 534::text as g ) as foo; 535 536SELECT g, 537 ST_AsText(g::geometry), 538 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 539'MULTISURFACE M (CURVEPOLYGON M (CIRCULARSTRING M (-2 0 0, -1 -1 1, 0 0 2, 1 -1 3, 2 0 4, 0 2 2, -2 0 0), (-1 0 1, 0 0.5 2, 1 0 3, 0 1 3, -1 0 1)), ((7 8 7, 10 10 5, 6 14 3, 4 11 4, 7 8 7)))' 540::text as g ) as foo; 541 542SELECT g, 543 ST_AsText(g::geometry), 544 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 545'MULTISURFACE Z (CURVEPOLYGON Z (CIRCULARSTRING Z (-2 0 0, -1 -1 1, 0 0 2, 1 -1 3, 2 0 4, 0 2 2, -2 0 0), (-1 0 1, 0 0.5 2, 1 0 3, 0 1 3, -1 0 1)), ((7 8 7, 10 10 5, 6 14 3, 4 11 4, 7 8 7)))' 546::text as g ) as foo; 547 548SELECT g, 549 ST_AsText(g::geometry), 550 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 551'MULTISURFACE ZM (CURVEPOLYGON ZM (CIRCULARSTRING ZM (-2 0 0 0, -1 -1 1 2, 0 0 2 4, 1 -1 3 6, 2 0 4 8, 0 2 2 4, -2 0 0 0), (-1 0 1 2, 0 0.5 2 4, 1 0 3 6, 0 1 3 4, -1 0 1 2)), ((7 8 7 8, 10 10 5 5, 6 14 3 1, 4 11 4 6, 7 8 7 8)))' 552::text as g ) as foo; 553 554-- POLYHEDRALSURFACE -- 555 556SELECT g, 557 ST_AsText(g::geometry), 558 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 559'POLYHEDRALSURFACE EMPTY' 560::text as g ) as foo; 561 562SELECT g, 563 ST_AsText(g::geometry), 564 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 565'POLYHEDRALSURFACE (((0 0,0 0,0 1,0 0)),((0 0,0 1,1 0,0 0)),((0 0,1 0,0 0,0 0)),((1 0,0 1,0 0,1 0)))' 566::text as g ) as foo; 567 568SELECT g, 569 ST_AsText(g::geometry), 570 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 571'POLYHEDRALSURFACE M (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))' 572::text as g ) as foo; 573 574SELECT g, 575 ST_AsText(g::geometry), 576 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 577'POLYHEDRALSURFACE Z (((0 0 0,0 0 1,0 1 0,0 0 0)),((0 0 0,0 1 0,1 0 0,0 0 0)),((0 0 0,1 0 0,0 0 1,0 0 0)),((1 0 0,0 1 0,0 0 1,1 0 0)))' 578::text as g ) as foo; 579 580SELECT g, 581 ST_AsText(g::geometry), 582 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 583'POLYHEDRALSURFACE ZM (((0 0 0 0,0 0 1 0,0 1 0 2,0 0 0 0)),((0 0 0 0,0 1 0 0,1 0 0 4,0 0 0 0)),((0 0 0 0,1 0 0 0,0 0 1 6,0 0 0 0)),((1 0 0 0,0 1 0 0,0 0 1 0,1 0 0 0)))' 584::text as g ) as foo; 585 586-- TRIANGLE -- 587 588SELECT g, -- invalid (non-closed ring) 589 ST_AsText(g::geometry), 590 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 591'TRIANGLE ((1 2 3,4 5 6,7 8 9,1 2 0))' 592::text as g ) as foo; 593 594SELECT g, 595 ST_AsText(g::geometry), 596 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 597'TRIANGLE EMPTY' 598::text as g ) as foo; 599 600SELECT g, 601 ST_AsText(g::geometry), 602 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 603'TRIANGLE ((1 2 3,4 5 6,7 8 9,1 2 3))' 604::text as g ) as foo; 605 606SELECT g, 607 ST_AsText(g::geometry), 608 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 609'TRIANGLE M ((1 2 3,4 5 6,7 8 9,1 2 3))' 610::text as g ) as foo; 611 612SELECT g, 613 ST_AsText(g::geometry), 614 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 615'TRIANGLE Z ((1 2 3,4 5 6,7 8 9,1 2 3))' 616::text as g ) as foo; 617 618SELECT g, 619 ST_AsText(g::geometry), 620 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 621'TRIANGLE ZM ((1 2 3 -1,4 5 6 -2,7 8 9 -3,1 2 3 -1))' 622::text as g ) as foo; 623 624-- TIN -- 625 626SELECT g, -- invalid (non-closed ring) 627 ST_AsText(g::geometry), 628 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 629'TIN ZM ( ((0 0 0 0, 0 0 1 0, 0 1 0 4, 0 0 0 0)), ((0 0 0 1, 0 1 0 2, 1 1 0 3, 0 1 0 1)) )' 630::text as g ) as foo; 631 632SELECT g, 633 ST_AsText(g::geometry), 634 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 635'TIN EMPTY' 636::text as g ) as foo; 637 638SELECT g, 639 ST_AsText(g::geometry), 640 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 641'TIN ( ((0 0, 0 0, 0 1, 0 0)), ((0 0, 0 1, 1 1, 0 0)) )' 642::text as g ) as foo; 643 644SELECT g, 645 ST_AsText(g::geometry), 646 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 647'TIN Z ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )' 648::text as g ) as foo; 649 650SELECT g, 651 ST_AsText(g::geometry), 652 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 653'TIN M ( ((0 0 0, 0 0 1, 0 1 0, 0 0 0)), ((0 0 0, 0 1 0, 1 1 0, 0 0 0)) )' 654::text as g ) as foo; 655 656SELECT g, 657 ST_AsText(g::geometry), 658 ST_OrderingEquals(g::geometry, St_GeomFromText(ST_AsText(g::geometry))) FROM ( SELECT 659'TIN ZM ( ((0 0 0 0, 0 0 1 0, 0 1 0 4, 0 0 0 0)), ((0 0 0 1, 0 1 0 2, 1 1 0 3, 0 0 0 1)) )' 660::text as g ) as foo; 661 662