1451 lines
65 KiB
JavaScript
1451 lines
65 KiB
JavaScript
import Feature from '../../../../../src/ol/Feature.js';
|
|
import GeometryCollection from '../../../../../src/ol/geom/GeometryCollection.js';
|
|
import Point from '../../../../../src/ol/geom/Point.js';
|
|
import SimpleGeometry from '../../../../../src/ol/geom/SimpleGeometry.js';
|
|
import WKB from '../../../../../src/ol/format/WKB.js';
|
|
import WKT from '../../../../../src/ol/format/WKT.js';
|
|
import {transform} from '../../../../../src/ol/proj.js';
|
|
|
|
const patterns = [
|
|
[
|
|
'010100000000000000000024400000000000002440',
|
|
'POINT(10 10)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000140240000000000004024000000000000',
|
|
'POINT(10 10)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'01020000000300000000000000000024400000000000002440000000000000344000000000000034400000000000003e400000000000004440',
|
|
'LINESTRING(10 10,20 20,30 40)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'0000000002000000034024000000000000402400000000000040340000000000004034000000000000403e0000000000004044000000000000',
|
|
'LINESTRING(10 10,20 20,30 40)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'0103000000010000000500000000000000000024400000000000002440000000000000244000000000000034400000000000003440000000000000344000000000000034400000000000002e4000000000000024400000000000002440',
|
|
'POLYGON((10 10,10 20,20 20,20 15,10 10))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000300000001000000054024000000000000402400000000000040240000000000004034000000000000403400000000000040340000000000004034000000000000402e00000000000040240000000000004024000000000000',
|
|
'POLYGON((10 10,10 20,20 20,20 15,10 10))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010400000002000000010100000000000000000024400000000000002440010100000000000000000034400000000000003440',
|
|
'MULTIPOINT(10 10,20 20)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000400000002000000000140240000000000004024000000000000000000000140340000000000004034000000000000',
|
|
'MULTIPOINT(10 10,20 20)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'01050000000200000001020000000200000000000000000024400000000000002440000000000000344000000000000034400102000000020000000000000000002e400000000000002e400000000000003e400000000000002e40',
|
|
'MULTILINESTRING((10 10,20 20),(15 15,30 15))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'0000000005000000020000000002000000024024000000000000402400000000000040340000000000004034000000000000000000000200000002402e000000000000402e000000000000403e000000000000402e000000000000',
|
|
'MULTILINESTRING((10 10,20 20),(15 15,30 15))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'0106000000020000000103000000010000000500000000000000000024400000000000002440000000000000244000000000000034400000000000003440000000000000344000000000000034400000000000002e4000000000000024400000000000002440010300000001000000040000000000000000004e400000000000004e400000000000805140000000000080514000000000000054400000000000004e400000000000004e400000000000004e40',
|
|
'MULTIPOLYGON(((10 10,10 20,20 20,20 15,10 10)),((60 60,70 70,80 60,60 60)))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000600000002000000000300000001000000054024000000000000402400000000000040240000000000004034000000000000403400000000000040340000000000004034000000000000402e0000000000004024000000000000402400000000000000000000030000000100000004404e000000000000404e000000000000405180000000000040518000000000004054000000000000404e000000000000404e000000000000404e000000000000',
|
|
'MULTIPOLYGON(((10 10,10 20,20 20,20 15,10 10)),((60 60,70 70,80 60,60 60)))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'01070000000300000001010000000000000000002440000000000000244001010000000000000000003e400000000000003e400102000000020000000000000000002e400000000000002e4000000000000034400000000000003440',
|
|
'GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'0000000007000000030000000001402400000000000040240000000000000000000001403e000000000000403e000000000000000000000200000002402e000000000000402e00000000000040340000000000004034000000000000',
|
|
'GEOMETRYCOLLECTION(POINT(10 10),POINT(30 30),LINESTRING(15 15,20 20))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
|
|
[
|
|
'01e9030000000000000000244000000000000024400000000000001440',
|
|
'POINT Z (10 10 5)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003e9402400000000000040240000000000004014000000000000',
|
|
'POINT Z (10 10 5)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0101000080000000000000244000000000000024400000000000001440',
|
|
'POINT Z (10 10 5)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0080000001402400000000000040240000000000004014000000000000',
|
|
'POINT Z (10 10 5)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ea030000030000000000000000002440000000000000244000000000000014400000000000003440000000000000344000000000000010400000000000003e4000000000000044400000000000000840',
|
|
'LINESTRING Z (10 10 5,20 20 4,30 40 3)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ea00000003402400000000000040240000000000004014000000000000403400000000000040340000000000004010000000000000403e00000000000040440000000000004008000000000000',
|
|
'LINESTRING Z (10 10 5,20 20 4,30 40 3)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0102000080030000000000000000002440000000000000244000000000000014400000000000003440000000000000344000000000000010400000000000003e4000000000000044400000000000000840',
|
|
'LINESTRING Z (10 10 5,20 20 4,30 40 3)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000200000003402400000000000040240000000000004014000000000000403400000000000040340000000000004010000000000000403e00000000000040440000000000004008000000000000',
|
|
'LINESTRING Z (10 10 5,20 20 4,30 40 3)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01eb030000010000000500000000000000000024400000000000002440000000000000144000000000000024400000000000003440000000000000104000000000000034400000000000003440000000000000084000000000000034400000000000002e40000000000000004000000000000024400000000000002440000000000000f03f',
|
|
'POLYGON Z ((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003eb00000001000000054024000000000000402400000000000040140000000000004024000000000000403400000000000040100000000000004034000000000000403400000000000040080000000000004034000000000000402e0000000000004000000000000000402400000000000040240000000000003ff0000000000000',
|
|
'POLYGON Z ((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0103000080010000000500000000000000000024400000000000002440000000000000144000000000000024400000000000003440000000000000104000000000000034400000000000003440000000000000084000000000000034400000000000002e40000000000000004000000000000024400000000000002440000000000000f03f',
|
|
'POLYGON Z ((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000300000001000000054024000000000000402400000000000040140000000000004024000000000000403400000000000040100000000000004034000000000000403400000000000040080000000000004034000000000000402e0000000000004000000000000000402400000000000040240000000000003ff0000000000000',
|
|
'POLYGON Z ((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ec0300000200000001e903000000000000000024400000000000002440000000000000144001e9030000000000000000344000000000000034400000000000001440',
|
|
'MULTIPOINT Z (10 10 5,20 20 5)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ec0000000200000003e940240000000000004024000000000000401400000000000000000003e9403400000000000040340000000000004014000000000000',
|
|
'MULTIPOINT Z (10 10 5,20 20 5)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01040000800200000001010000800000000000002440000000000000244000000000000014400101000080000000000000344000000000000034400000000000001440',
|
|
'MULTIPOINT Z (10 10 5,20 20 5)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00800000040000000200800000014024000000000000402400000000000040140000000000000080000001403400000000000040340000000000004014000000000000',
|
|
'MULTIPOINT Z (10 10 5,20 20 5)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ed0300000200000001ea0300000200000000000000000024400000000000002440000000000000144000000000000034400000000000003440000000000000104001ea030000020000000000000000002e400000000000002e4000000000000008400000000000003e400000000000002e400000000000000040',
|
|
'MULTILINESTRING Z ((10 10 5,20 20 4),(15 15 3,30 15 2))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ed0000000200000003ea0000000240240000000000004024000000000000401400000000000040340000000000004034000000000000401000000000000000000003ea00000002402e000000000000402e0000000000004008000000000000403e000000000000402e0000000000004000000000000000',
|
|
'MULTILINESTRING Z ((10 10 5,20 20 4),(15 15 3,30 15 2))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0105000080020000000102000080020000000000000000002440000000000000244000000000000014400000000000003440000000000000344000000000000010400102000080020000000000000000002e400000000000002e4000000000000008400000000000003e400000000000002e400000000000000040',
|
|
'MULTILINESTRING Z ((10 10 5,20 20 4),(15 15 3,30 15 2))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000500000002008000000200000002402400000000000040240000000000004014000000000000403400000000000040340000000000004010000000000000008000000200000002402e000000000000402e0000000000004008000000000000403e000000000000402e0000000000004000000000000000',
|
|
'MULTILINESTRING Z ((10 10 5,20 20 4),(15 15 3,30 15 2))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ee0300000200000001eb030000010000000500000000000000000024400000000000002440000000000000144000000000000024400000000000003440000000000000104000000000000034400000000000003440000000000000084000000000000034400000000000002e40000000000000004000000000000024400000000000002440000000000000f03f01eb03000001000000040000000000000000004e400000000000004e40000000000000144000000000008051400000000000805140000000000000104000000000000054400000000000004e4000000000000008400000000000004e400000000000004e400000000000000040',
|
|
'MULTIPOLYGON Z (((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1)),((60 60 5,70 70 4,80 60 3,60 60 2)))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ee0000000200000003eb00000001000000054024000000000000402400000000000040140000000000004024000000000000403400000000000040100000000000004034000000000000403400000000000040080000000000004034000000000000402e0000000000004000000000000000402400000000000040240000000000003ff000000000000000000003eb0000000100000004404e000000000000404e00000000000040140000000000004051800000000000405180000000000040100000000000004054000000000000404e0000000000004008000000000000404e000000000000404e0000000000004000000000000000',
|
|
'MULTIPOLYGON Z (((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1)),((60 60 5,70 70 4,80 60 3,60 60 2)))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0106000080020000000103000080010000000500000000000000000024400000000000002440000000000000144000000000000024400000000000003440000000000000104000000000000034400000000000003440000000000000084000000000000034400000000000002e40000000000000004000000000000024400000000000002440000000000000f03f010300008001000000040000000000000000004e400000000000004e40000000000000144000000000008051400000000000805140000000000000104000000000000054400000000000004e4000000000000008400000000000004e400000000000004e400000000000000040',
|
|
'MULTIPOLYGON Z (((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1)),((60 60 5,70 70 4,80 60 3,60 60 2)))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000600000002008000000300000001000000054024000000000000402400000000000040140000000000004024000000000000403400000000000040100000000000004034000000000000403400000000000040080000000000004034000000000000402e0000000000004000000000000000402400000000000040240000000000003ff000000000000000800000030000000100000004404e000000000000404e00000000000040140000000000004051800000000000405180000000000040100000000000004054000000000000404e0000000000004008000000000000404e000000000000404e0000000000004000000000000000',
|
|
'MULTIPOLYGON Z (((10 10 5,10 20 4,20 20 3,20 15 2,10 10 1)),((60 60 5,70 70 4,80 60 3,60 60 2)))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ef0300000300000001e903000000000000000024400000000000002440000000000000144001e90300000000000000003e400000000000003e40000000000000144001ea030000020000000000000000002e400000000000002e400000000000001440000000000000344000000000000034400000000000001440',
|
|
'GEOMETRYCOLLECTION Z (POINT Z (10 10 5),POINT Z (30 30 5),LINESTRING Z (15 15 5,20 20 5))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ef0000000300000003e940240000000000004024000000000000401400000000000000000003e9403e000000000000403e000000000000401400000000000000000003ea00000002402e000000000000402e0000000000004014000000000000403400000000000040340000000000004014000000000000',
|
|
'GEOMETRYCOLLECTION Z (POINT Z (10 10 5),POINT Z (30 30 5),LINESTRING Z (15 15 5,20 20 5))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010700008003000000010100008000000000000024400000000000002440000000000000144001010000800000000000003e400000000000003e4000000000000014400102000080020000000000000000002e400000000000002e400000000000001440000000000000344000000000000034400000000000001440',
|
|
'GEOMETRYCOLLECTION Z (POINT Z (10 10 5),POINT Z (30 30 5),LINESTRING Z (15 15 5,20 20 5))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00800000070000000300800000014024000000000000402400000000000040140000000000000080000001403e000000000000403e0000000000004014000000000000008000000200000002402e000000000000402e0000000000004014000000000000403400000000000040340000000000004014000000000000',
|
|
'GEOMETRYCOLLECTION Z (POINT Z (10 10 5),POINT Z (30 30 5),LINESTRING Z (15 15 5,20 20 5))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
|
|
[
|
|
'01d1070000000000000000244000000000000024400000000000804640',
|
|
'POINT M (10 10 45)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d1402400000000000040240000000000004046800000000000',
|
|
'POINT M (10 10 45)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0101000040000000000000244000000000000024400000000000804640',
|
|
'POINT M (10 10 45)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0040000001402400000000000040240000000000004046800000000000',
|
|
'POINT M (10 10 45)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d2070000030000000000000000002440000000000000244000000000008046400000000000003440000000000000344000000000000046400000000000003e4000000000000044400000000000804540',
|
|
'LINESTRING M (10 10 45,20 20 44,30 40 43)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d200000003402400000000000040240000000000004046800000000000403400000000000040340000000000004046000000000000403e00000000000040440000000000004045800000000000',
|
|
'LINESTRING M (10 10 45,20 20 44,30 40 43)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0102000040030000000000000000002440000000000000244000000000008046400000000000003440000000000000344000000000000046400000000000003e4000000000000044400000000000804540',
|
|
'LINESTRING M (10 10 45,20 20 44,30 40 43)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000200000003402400000000000040240000000000004046800000000000403400000000000040340000000000004046000000000000403e00000000000040440000000000004045800000000000',
|
|
'LINESTRING M (10 10 45,20 20 44,30 40 43)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d3070000010000000500000000000000000024400000000000002440000000000080464000000000000024400000000000003440000000000000464000000000000034400000000000003440000000000080454000000000000034400000000000002e400000000000004540000000000000244000000000000024400000000000804440',
|
|
'POLYGON M ((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d300000001000000054024000000000000402400000000000040468000000000004024000000000000403400000000000040460000000000004034000000000000403400000000000040458000000000004034000000000000402e0000000000004045000000000000402400000000000040240000000000004044800000000000',
|
|
'POLYGON M ((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0103000040010000000500000000000000000024400000000000002440000000000080464000000000000024400000000000003440000000000000464000000000000034400000000000003440000000000080454000000000000034400000000000002e400000000000004540000000000000244000000000000024400000000000804440',
|
|
'POLYGON M ((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000300000001000000054024000000000000402400000000000040468000000000004024000000000000403400000000000040460000000000004034000000000000403400000000000040458000000000004034000000000000402e0000000000004045000000000000402400000000000040240000000000004044800000000000',
|
|
'POLYGON M ((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d40700000200000001d107000000000000000024400000000000002440000000000080464001d1070000000000000000344000000000000034400000000000804640',
|
|
'MULTIPOINT M (10 10 45,20 20 45)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d40000000200000007d140240000000000004024000000000000404680000000000000000007d1403400000000000040340000000000004046800000000000',
|
|
'MULTIPOINT M (10 10 45,20 20 45)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01040000400200000001010000400000000000002440000000000000244000000000008046400101000040000000000000344000000000000034400000000000804640',
|
|
'MULTIPOINT M (10 10 45,20 20 45)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00400000040000000200400000014024000000000000402400000000000040468000000000000040000001403400000000000040340000000000004046800000000000',
|
|
'MULTIPOINT M (10 10 45,20 20 45)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d50700000200000001d20700000200000000000000000024400000000000002440000000000080464000000000000034400000000000003440000000000000464001d2070000020000000000000000002e400000000000002e4000000000008045400000000000003e400000000000002e400000000000004540',
|
|
'MULTILINESTRING M ((10 10 45,20 20 44),(15 15 43,30 15 42))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d50000000200000007d20000000240240000000000004024000000000000404680000000000040340000000000004034000000000000404600000000000000000007d200000002402e000000000000402e0000000000004045800000000000403e000000000000402e0000000000004045000000000000',
|
|
'MULTILINESTRING M ((10 10 45,20 20 44),(15 15 43,30 15 42))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0105000040020000000102000040020000000000000000002440000000000000244000000000008046400000000000003440000000000000344000000000000046400102000040020000000000000000002e400000000000002e4000000000008045400000000000003e400000000000002e400000000000004540',
|
|
'MULTILINESTRING M ((10 10 45,20 20 44),(15 15 43,30 15 42))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000500000002004000000200000002402400000000000040240000000000004046800000000000403400000000000040340000000000004046000000000000004000000200000002402e000000000000402e0000000000004045800000000000403e000000000000402e0000000000004045000000000000',
|
|
'MULTILINESTRING M ((10 10 45,20 20 44),(15 15 43,30 15 42))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d60700000200000001d3070000010000000500000000000000000024400000000000002440000000000080464000000000000024400000000000003440000000000000464000000000000034400000000000003440000000000080454000000000000034400000000000002e40000000000000454000000000000024400000000000002440000000000080444001d307000001000000040000000000000000004e400000000000004e40000000000080464000000000008051400000000000805140000000000000464000000000000054400000000000004e4000000000008045400000000000004e400000000000004e400000000000004540',
|
|
'MULTIPOLYGON M (((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41)),((60 60 45,70 70 44,80 60 43,60 60 42)))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d60000000200000007d300000001000000054024000000000000402400000000000040468000000000004024000000000000403400000000000040460000000000004034000000000000403400000000000040458000000000004034000000000000402e000000000000404500000000000040240000000000004024000000000000404480000000000000000007d30000000100000004404e000000000000404e00000000000040468000000000004051800000000000405180000000000040460000000000004054000000000000404e0000000000004045800000000000404e000000000000404e0000000000004045000000000000',
|
|
'MULTIPOLYGON M (((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41)),((60 60 45,70 70 44,80 60 43,60 60 42)))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0106000040020000000103000040010000000500000000000000000024400000000000002440000000000080464000000000000024400000000000003440000000000000464000000000000034400000000000003440000000000080454000000000000034400000000000002e400000000000004540000000000000244000000000000024400000000000804440010300004001000000040000000000000000004e400000000000004e40000000000080464000000000008051400000000000805140000000000000464000000000000054400000000000004e4000000000008045400000000000004e400000000000004e400000000000004540',
|
|
'MULTIPOLYGON M (((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41)),((60 60 45,70 70 44,80 60 43,60 60 42)))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000600000002004000000300000001000000054024000000000000402400000000000040468000000000004024000000000000403400000000000040460000000000004034000000000000403400000000000040458000000000004034000000000000402e000000000000404500000000000040240000000000004024000000000000404480000000000000400000030000000100000004404e000000000000404e00000000000040468000000000004051800000000000405180000000000040460000000000004054000000000000404e0000000000004045800000000000404e000000000000404e0000000000004045000000000000',
|
|
'MULTIPOLYGON M (((10 10 45,10 20 44,20 20 43,20 15 42,10 10 41)),((60 60 45,70 70 44,80 60 43,60 60 42)))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d70700000300000001d107000000000000000024400000000000002440000000000080464001d10700000000000000003e400000000000003e40000000000080464001d2070000020000000000000000002e400000000000002e400000000000804640000000000000344000000000000034400000000000804640',
|
|
'GEOMETRYCOLLECTION M (POINT M (10 10 45),POINT M (30 30 45),LINESTRING M (15 15 45,20 20 45))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d70000000300000007d140240000000000004024000000000000404680000000000000000007d1403e000000000000403e000000000000404680000000000000000007d200000002402e000000000000402e0000000000004046800000000000403400000000000040340000000000004046800000000000',
|
|
'GEOMETRYCOLLECTION M (POINT M (10 10 45),POINT M (30 30 45),LINESTRING M (15 15 45,20 20 45))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010700004003000000010100004000000000000024400000000000002440000000000080464001010000400000000000003e400000000000003e4000000000008046400102000040020000000000000000002e400000000000002e400000000000804640000000000000344000000000000034400000000000804640',
|
|
'GEOMETRYCOLLECTION M (POINT M (10 10 45),POINT M (30 30 45),LINESTRING M (15 15 45,20 20 45))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00400000070000000300400000014024000000000000402400000000000040468000000000000040000001403e000000000000403e0000000000004046800000000000004000000200000002402e000000000000402e0000000000004046800000000000403400000000000040340000000000004046800000000000',
|
|
'GEOMETRYCOLLECTION M (POINT M (10 10 45),POINT M (30 30 45),LINESTRING M (15 15 45,20 20 45))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
|
|
[
|
|
'01b90b00000000000000002440000000000000244000000000000014400000000000804640',
|
|
'POINT ZM (10 10 5 45)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bb94024000000000000402400000000000040140000000000004046800000000000',
|
|
'POINT ZM (10 10 5 45)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01010000c00000000000002440000000000000244000000000000014400000000000804640',
|
|
'POINT ZM (10 10 5 45)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000014024000000000000402400000000000040140000000000004046800000000000',
|
|
'POINT ZM (10 10 5 45)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01ba0b000003000000000000000000244000000000000024400000000000001440000000000080464000000000000034400000000000003440000000000000104000000000000046400000000000003e40000000000000444000000000000008400000000000804540',
|
|
'LINESTRING ZM (10 10 5 45,20 20 4 44,30 40 3 43)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bba0000000340240000000000004024000000000000401400000000000040468000000000004034000000000000403400000000000040100000000000004046000000000000403e000000000000404400000000000040080000000000004045800000000000',
|
|
'LINESTRING ZM (10 10 5 45,20 20 4 44,30 40 3 43)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01020000c003000000000000000000244000000000000024400000000000001440000000000080464000000000000034400000000000003440000000000000104000000000000046400000000000003e40000000000000444000000000000008400000000000804540',
|
|
'LINESTRING ZM (10 10 5 45,20 20 4 44,30 40 3 43)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000020000000340240000000000004024000000000000401400000000000040468000000000004034000000000000403400000000000040100000000000004046000000000000403e000000000000404400000000000040080000000000004045800000000000',
|
|
'LINESTRING ZM (10 10 5 45,20 20 4 44,30 40 3 43)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bb0b0000010000000500000000000000000024400000000000002440000000000000144000000000008046400000000000002440000000000000344000000000000010400000000000004640000000000000344000000000000034400000000000000840000000000080454000000000000034400000000000002e400000000000000040000000000000454000000000000024400000000000002440000000000000f03f0000000000804440',
|
|
'POLYGON ZM ((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbb00000001000000054024000000000000402400000000000040140000000000004046800000000000402400000000000040340000000000004010000000000000404600000000000040340000000000004034000000000000400800000000000040458000000000004034000000000000402e00000000000040000000000000004045000000000000402400000000000040240000000000003ff00000000000004044800000000000',
|
|
'POLYGON ZM ((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01030000c0010000000500000000000000000024400000000000002440000000000000144000000000008046400000000000002440000000000000344000000000000010400000000000004640000000000000344000000000000034400000000000000840000000000080454000000000000034400000000000002e400000000000000040000000000000454000000000000024400000000000002440000000000000f03f0000000000804440',
|
|
'POLYGON ZM ((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000300000001000000054024000000000000402400000000000040140000000000004046800000000000402400000000000040340000000000004010000000000000404600000000000040340000000000004034000000000000400800000000000040458000000000004034000000000000402e00000000000040000000000000004045000000000000402400000000000040240000000000003ff00000000000004044800000000000',
|
|
'POLYGON ZM ((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bc0b00000200000001b90b0000000000000000244000000000000024400000000000001440000000000080464001b90b00000000000000003440000000000000344000000000000014400000000000804640',
|
|
'MULTIPOINT ZM (10 10 5 45,20 20 5 45)',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbc000000020000000bb940240000000000004024000000000000401400000000000040468000000000000000000bb94034000000000000403400000000000040140000000000004046800000000000',
|
|
'MULTIPOINT ZM (10 10 5 45,20 20 5 45)',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01040000c00200000001010000c0000000000000244000000000000024400000000000001440000000000080464001010000c00000000000003440000000000000344000000000000014400000000000804640',
|
|
'MULTIPOINT ZM (10 10 5 45,20 20 5 45)',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000040000000200c0000001402400000000000040240000000000004014000000000000404680000000000000c00000014034000000000000403400000000000040140000000000004046800000000000',
|
|
'MULTIPOINT ZM (10 10 5 45,20 20 5 45)',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bd0b00000200000001ba0b0000020000000000000000002440000000000000244000000000000014400000000000804640000000000000344000000000000034400000000000001040000000000000464001ba0b0000020000000000000000002e400000000000002e40000000000000084000000000008045400000000000003e400000000000002e4000000000000000400000000000004540',
|
|
'MULTILINESTRING ZM ((10 10 5 45,20 20 4 44),(15 15 3 43,30 15 2 42))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbd000000020000000bba00000002402400000000000040240000000000004014000000000000404680000000000040340000000000004034000000000000401000000000000040460000000000000000000bba00000002402e000000000000402e00000000000040080000000000004045800000000000403e000000000000402e00000000000040000000000000004045000000000000',
|
|
'MULTILINESTRING ZM ((10 10 5 45,20 20 4 44),(15 15 3 43,30 15 2 42))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01050000c00200000001020000c0020000000000000000002440000000000000244000000000000014400000000000804640000000000000344000000000000034400000000000001040000000000000464001020000c0020000000000000000002e400000000000002e40000000000000084000000000008045400000000000003e400000000000002e4000000000000000400000000000004540',
|
|
'MULTILINESTRING ZM ((10 10 5 45,20 20 4 44),(15 15 3 43,30 15 2 42))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000050000000200c0000002000000024024000000000000402400000000000040140000000000004046800000000000403400000000000040340000000000004010000000000000404600000000000000c000000200000002402e000000000000402e00000000000040080000000000004045800000000000403e000000000000402e00000000000040000000000000004045000000000000',
|
|
'MULTILINESTRING ZM ((10 10 5 45,20 20 4 44),(15 15 3 43,30 15 2 42))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01be0b00000200000001bb0b0000010000000500000000000000000024400000000000002440000000000000144000000000008046400000000000002440000000000000344000000000000010400000000000004640000000000000344000000000000034400000000000000840000000000080454000000000000034400000000000002e400000000000000040000000000000454000000000000024400000000000002440000000000000f03f000000000080444001bb0b000001000000040000000000000000004e400000000000004e4000000000000014400000000000804640000000000080514000000000008051400000000000001040000000000000464000000000000054400000000000004e40000000000000084000000000008045400000000000004e400000000000004e4000000000000000400000000000004540',
|
|
'MULTIPOLYGON ZM (((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41)),((60 60 5 45,70 70 4 44,80 60 3 43,60 60 2 42)))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbe000000020000000bbb00000001000000054024000000000000402400000000000040140000000000004046800000000000402400000000000040340000000000004010000000000000404600000000000040340000000000004034000000000000400800000000000040458000000000004034000000000000402e00000000000040000000000000004045000000000000402400000000000040240000000000003ff000000000000040448000000000000000000bbb0000000100000004404e000000000000404e0000000000004014000000000000404680000000000040518000000000004051800000000000401000000000000040460000000000004054000000000000404e00000000000040080000000000004045800000000000404e000000000000404e00000000000040000000000000004045000000000000',
|
|
'MULTIPOLYGON ZM (((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41)),((60 60 5 45,70 70 4 44,80 60 3 43,60 60 2 42)))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01060000c00200000001030000c0010000000500000000000000000024400000000000002440000000000000144000000000008046400000000000002440000000000000344000000000000010400000000000004640000000000000344000000000000034400000000000000840000000000080454000000000000034400000000000002e400000000000000040000000000000454000000000000024400000000000002440000000000000f03f000000000080444001030000c001000000040000000000000000004e400000000000004e4000000000000014400000000000804640000000000080514000000000008051400000000000001040000000000000464000000000000054400000000000004e40000000000000084000000000008045400000000000004e400000000000004e4000000000000000400000000000004540',
|
|
'MULTIPOLYGON ZM (((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41)),((60 60 5 45,70 70 4 44,80 60 3 43,60 60 2 42)))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000060000000200c000000300000001000000054024000000000000402400000000000040140000000000004046800000000000402400000000000040340000000000004010000000000000404600000000000040340000000000004034000000000000400800000000000040458000000000004034000000000000402e00000000000040000000000000004045000000000000402400000000000040240000000000003ff0000000000000404480000000000000c00000030000000100000004404e000000000000404e0000000000004014000000000000404680000000000040518000000000004051800000000000401000000000000040460000000000004054000000000000404e00000000000040080000000000004045800000000000404e000000000000404e00000000000040000000000000004045000000000000',
|
|
'MULTIPOLYGON ZM (((10 10 5 45,10 20 4 44,20 20 3 43,20 15 2 42,10 10 1 41)),((60 60 5 45,70 70 4 44,80 60 3 43,60 60 2 42)))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bf0b00000300000001b90b0000000000000000244000000000000024400000000000001440000000000080464001b90b00000000000000003e400000000000003e400000000000001440000000000080464001ba0b0000020000000000000000002e400000000000002e40000000000000144000000000008046400000000000003440000000000000344000000000000014400000000000804640',
|
|
'GEOMETRYCOLLECTION ZM (POINT ZM (10 10 5 45),POINT ZM (30 30 5 45),LINESTRING ZM (15 15 5 45,20 20 5 45))',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbf000000030000000bb940240000000000004024000000000000401400000000000040468000000000000000000bb9403e000000000000403e000000000000401400000000000040468000000000000000000bba00000002402e000000000000402e000000000000401400000000000040468000000000004034000000000000403400000000000040140000000000004046800000000000',
|
|
'GEOMETRYCOLLECTION ZM (POINT ZM (10 10 5 45),POINT ZM (30 30 5 45),LINESTRING ZM (15 15 5 45,20 20 5 45))',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01070000c00300000001010000c0000000000000244000000000000024400000000000001440000000000080464001010000c00000000000003e400000000000003e400000000000001440000000000080464001020000c0020000000000000000002e400000000000002e40000000000000144000000000008046400000000000003440000000000000344000000000000014400000000000804640',
|
|
'GEOMETRYCOLLECTION ZM (POINT ZM (10 10 5 45),POINT ZM (30 30 5 45),LINESTRING ZM (15 15 5 45,20 20 5 45))',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000070000000300c0000001402400000000000040240000000000004014000000000000404680000000000000c0000001403e000000000000403e0000000000004014000000000000404680000000000000c000000200000002402e000000000000402e000000000000401400000000000040468000000000004034000000000000403400000000000040140000000000004046800000000000',
|
|
'GEOMETRYCOLLECTION ZM (POINT ZM (10 10 5 45),POINT ZM (30 30 5 45),LINESTRING ZM (15 15 5 45,20 20 5 45))',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
|
|
[
|
|
'0101000000000000000000f87f000000000000f87f',
|
|
'POINT EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'00000000017ff80000000000007ff8000000000000',
|
|
'POINT EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010200000000000000',
|
|
'LINESTRING EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000200000000',
|
|
'LINESTRING EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010300000000000000',
|
|
'POLYGON EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000300000000',
|
|
'POLYGON EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010400000000000000',
|
|
'MULTIPOINT EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000400000000',
|
|
'MULTIPOINT EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010500000000000000',
|
|
'MULTILINESTRING EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000500000000',
|
|
'MULTILINESTRING EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010600000000000000',
|
|
'MULTIPOLYGON EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000600000000',
|
|
'MULTIPOLYGON EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'010700000000000000',
|
|
'GEOMETRYCOLLECTION EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
[
|
|
'000000000700000000',
|
|
'GEOMETRYCOLLECTION EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XY'},
|
|
],
|
|
|
|
/*
|
|
// XXX: These doesn't work since WKT parser returns 2D geometry instead of 3D/4D
|
|
['01e9030000000000000000f87f000000000000f87f000000000000f87f', 'POINT Z EMPTY', { littleEndian: true, ewkb: false, geometryLayout: 'XYZ' }],
|
|
['00000003e97ff80000000000007ff80000000000007ff8000000000000', 'POINT Z EMPTY', { littleEndian: false, ewkb: false, geometryLayout: 'XYZ' }],
|
|
['0101000080000000000000f87f000000000000f87f000000000000f87f', 'POINT Z EMPTY', { littleEndian: true, ewkb: true, geometryLayout: 'XYZ' }],
|
|
['00800000017ff80000000000007ff80000000000007ff8000000000000', 'POINT Z EMPTY', { littleEndian: false, ewkb: true, geometryLayout: 'XYZ' }],
|
|
*/
|
|
[
|
|
'01ea03000000000000',
|
|
'LINESTRING Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ea00000000',
|
|
'LINESTRING Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010200008000000000',
|
|
'LINESTRING Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000200000000',
|
|
'LINESTRING Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01eb03000000000000',
|
|
'POLYGON Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003eb00000000',
|
|
'POLYGON Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010300008000000000',
|
|
'POLYGON Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000300000000',
|
|
'POLYGON Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ec03000000000000',
|
|
'MULTIPOINT Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ec00000000',
|
|
'MULTIPOINT Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010400008000000000',
|
|
'MULTIPOINT Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000400000000',
|
|
'MULTIPOINT Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ed03000000000000',
|
|
'MULTILINESTRING Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ed00000000',
|
|
'MULTILINESTRING Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010500008000000000',
|
|
'MULTILINESTRING Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000500000000',
|
|
'MULTILINESTRING Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ee03000000000000',
|
|
'MULTIPOLYGON Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ee00000000',
|
|
'MULTIPOLYGON Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010600008000000000',
|
|
'MULTIPOLYGON Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000600000000',
|
|
'MULTIPOLYGON Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01ef03000000000000',
|
|
'GEOMETRYCOLLECTION Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003ef00000000',
|
|
'GEOMETRYCOLLECTION Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'010700008000000000',
|
|
'GEOMETRYCOLLECTION Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'008000000700000000',
|
|
'GEOMETRYCOLLECTION Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
|
|
/*
|
|
// XXX: These doesn't work since WKT parser returns 2D geometry instead of 3D/4D
|
|
['01d1070000000000000000f87f000000000000f87f000000000000f87f', 'POINT M EMPTY', { littleEndian: true, ewkb: false, geometryLayout: 'XYM' }],
|
|
['00000007d17ff80000000000007ff80000000000007ff8000000000000', 'POINT M EMPTY', { littleEndian: false, ewkb: false, geometryLayout: 'XYM' }],
|
|
['0101000040000000000000f87f000000000000f87f000000000000f87f', 'POINT M EMPTY', { littleEndian: true, ewkb: true, geometryLayout: 'XYM' }],
|
|
['00400000017ff80000000000007ff80000000000007ff8000000000000', 'POINT M EMPTY', { littleEndian: false, ewkb: true, geometryLayout: 'XYM' }],
|
|
*/
|
|
[
|
|
'01d207000000000000',
|
|
'LINESTRING M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d200000000',
|
|
'LINESTRING M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010200004000000000',
|
|
'LINESTRING M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000200000000',
|
|
'LINESTRING M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d307000000000000',
|
|
'POLYGON M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d300000000',
|
|
'POLYGON M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010300004000000000',
|
|
'POLYGON M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000300000000',
|
|
'POLYGON M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d407000000000000',
|
|
'MULTIPOINT M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d400000000',
|
|
'MULTIPOINT M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010400004000000000',
|
|
'MULTIPOINT M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000400000000',
|
|
'MULTIPOINT M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d507000000000000',
|
|
'MULTILINESTRING M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d500000000',
|
|
'MULTILINESTRING M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010500004000000000',
|
|
'MULTILINESTRING M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000500000000',
|
|
'MULTILINESTRING M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d607000000000000',
|
|
'MULTIPOLYGON M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d600000000',
|
|
'MULTIPOLYGON M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010600004000000000',
|
|
'MULTIPOLYGON M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000600000000',
|
|
'MULTIPOLYGON M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01d707000000000000',
|
|
'GEOMETRYCOLLECTION M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d700000000',
|
|
'GEOMETRYCOLLECTION M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'010700004000000000',
|
|
'GEOMETRYCOLLECTION M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'004000000700000000',
|
|
'GEOMETRYCOLLECTION M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
|
|
/*
|
|
// XXX: These doesn't work since WKT parser returns 2D geometry instead of 3D/4D
|
|
['01b90b0000000000000000f87f000000000000f87f000000000000f87f000000000000f87f', 'POINT ZM EMPTY', { littleEndian: true, ewkb: false, geometryLayout: 'XYZM' }],
|
|
['0000000bb97ff80000000000007ff80000000000007ff80000000000007ff8000000000000', 'POINT ZM EMPTY', { littleEndian: false, ewkb: false, geometryLayout: 'XYZM' }],
|
|
['01010000c0000000000000f87f000000000000f87f000000000000f87f000000000000f87f', 'POINT ZM EMPTY', { littleEndian: true, ewkb: true, geometryLayout: 'XYZM' }],
|
|
['00c00000017ff80000000000007ff80000000000007ff80000000000007ff8000000000000', 'POINT ZM EMPTY', { littleEndian: false, ewkb: true, geometryLayout: 'XYZM' }],
|
|
*/
|
|
[
|
|
'01ba0b000000000000',
|
|
'LINESTRING ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bba00000000',
|
|
'LINESTRING ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01020000c000000000',
|
|
'LINESTRING ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000200000000',
|
|
'LINESTRING ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bb0b000000000000',
|
|
'POLYGON ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbb00000000',
|
|
'POLYGON ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01030000c000000000',
|
|
'POLYGON ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000300000000',
|
|
'POLYGON ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bc0b000000000000',
|
|
'MULTIPOINT ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbc00000000',
|
|
'MULTIPOINT ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01040000c000000000',
|
|
'MULTIPOINT ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000400000000',
|
|
'MULTIPOINT ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bd0b000000000000',
|
|
'MULTILINESTRING ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbd00000000',
|
|
'MULTILINESTRING ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01050000c000000000',
|
|
'MULTILINESTRING ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000500000000',
|
|
'MULTILINESTRING ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01be0b000000000000',
|
|
'MULTIPOLYGON ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbe00000000',
|
|
'MULTIPOLYGON ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01060000c000000000',
|
|
'MULTIPOLYGON ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000600000000',
|
|
'MULTIPOLYGON ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01bf0b000000000000',
|
|
'GEOMETRYCOLLECTION ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bbf00000000',
|
|
'GEOMETRYCOLLECTION ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01070000c000000000',
|
|
'GEOMETRYCOLLECTION ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c000000700000000',
|
|
'GEOMETRYCOLLECTION ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
];
|
|
|
|
describe('ol.format.WKB', function () {
|
|
const format = new WKB();
|
|
|
|
describe('#readProjection(string)', function () {
|
|
it('returns the default projection', function () {
|
|
const wkb = '0101000000000000000000F03F0000000000000040'; // POINT(1 2)
|
|
const projection = format.readProjection(wkb);
|
|
expect(projection).to.be(undefined);
|
|
});
|
|
|
|
it('returns an embed projection', function () {
|
|
const wkb = '0101000020E6100000000000000000F03F0000000000000040'; // SRID=4326;POINT(1 2)
|
|
const projection = format.readProjection(wkb);
|
|
expect(projection.getCode()).to.be('EPSG:4326');
|
|
});
|
|
});
|
|
|
|
describe('#readProjection(Uint8Array)', function () {
|
|
it('returns the default projection', function () {
|
|
const wkb = new Uint8Array([
|
|
// POINT(1 2)
|
|
0x01,
|
|
0x01,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0xf0,
|
|
0x3f,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x40,
|
|
]);
|
|
const projection = format.readProjection(wkb);
|
|
expect(projection).to.be(undefined);
|
|
});
|
|
|
|
it('returns an embed projection', function () {
|
|
const wkb = new Uint8Array([
|
|
// SRID=4326;POINT(1 2)
|
|
0x01,
|
|
0x01,
|
|
0x00,
|
|
0x00,
|
|
0x20,
|
|
0xe6,
|
|
0x10,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0xf0,
|
|
0x3f,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x40,
|
|
]);
|
|
const projection = format.readProjection(wkb);
|
|
expect(projection.getCode()).to.be('EPSG:4326');
|
|
});
|
|
});
|
|
|
|
describe('#readGeometry(string)', function () {
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const wkb = '0101000000000000000000F03F0000000000000040'; // POINT(1 2)
|
|
const geom = format.readGeometry(wkb, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
expect(geom.getCoordinates()).to.eql(
|
|
transform([1, 2], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
});
|
|
|
|
it('transforms with auto detection of dataProjection', function () {
|
|
const wkb = '0101000020E6100000000000000000F03F0000000000000040'; // SRID=4326;POINT(1 2)
|
|
const geom = format.readGeometry(wkb, {
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
expect(geom.getCoordinates()).to.eql(
|
|
transform([1, 2], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#readGeometry(Uint8Array)', function () {
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const wkb = new Uint8Array([
|
|
// POINT(1 2)
|
|
0x01,
|
|
0x01,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0xf0,
|
|
0x3f,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x40,
|
|
]);
|
|
const geom = format.readGeometry(wkb, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
expect(geom.getCoordinates()).to.eql(
|
|
transform([1, 2], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
});
|
|
|
|
it('transforms with auto detection of dataProjection', function () {
|
|
const wkb = new Uint8Array([
|
|
// SRID=4326;POINT(1 2)
|
|
0x01,
|
|
0x01,
|
|
0x00,
|
|
0x00,
|
|
0x20,
|
|
0xe6,
|
|
0x10,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0xf0,
|
|
0x3f,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x00,
|
|
0x40,
|
|
]);
|
|
const geom = format.readGeometry(wkb, {
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
expect(geom.getCoordinates()).to.eql(
|
|
transform([1, 2], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#readGeometry(string)', function () {
|
|
function compareGeometries(a, b) {
|
|
expect(a.getType()).to.eql(b.getType());
|
|
|
|
if (a instanceof GeometryCollection || b instanceof GeometryCollection) {
|
|
expect(a).to.be.a(GeometryCollection);
|
|
expect(b).to.be.a(GeometryCollection);
|
|
|
|
const aGeoms = a.getGeometries();
|
|
const bGeoms = b.getGeometries();
|
|
|
|
expect(aGeoms.length).to.eql(bGeoms.length);
|
|
|
|
for (let i = 0; i < aGeoms.length; i++) {
|
|
compareGeometries(aGeoms[i], bGeoms[i]);
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
expect(a).to.be.a(SimpleGeometry);
|
|
expect(b).to.be.a(SimpleGeometry);
|
|
|
|
expect(a.getLayout()).to.eql(b.getLayout());
|
|
|
|
const aCoords = a.getCoordinates();
|
|
const bCoords = b.getCoordinates();
|
|
|
|
expect(aCoords.length).to.eql(bCoords.length);
|
|
|
|
expect(JSON.stringify(aCoords)).to.eql(JSON.stringify(bCoords)); // compare arrays
|
|
}
|
|
|
|
// tests for several patterns
|
|
for (const pair of patterns) {
|
|
const wkb = pair[0];
|
|
const wkt = pair[1];
|
|
|
|
it('works on ' + wkb + ' (' + wkt + ')', function () {
|
|
const wkb_result = new WKB().readGeometry(wkb);
|
|
const wkt_result = new WKT().readGeometry(wkt);
|
|
|
|
compareGeometries(wkb_result, wkt_result);
|
|
});
|
|
}
|
|
});
|
|
|
|
describe('#writeGeometry()', function () {
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const geom = new Point([1, 2]).transform('EPSG:4326', 'EPSG:3857');
|
|
const wkb = format.writeGeometry(geom, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
const got = format.readGeometry(wkb).getCoordinates();
|
|
expect(got[0]).to.roughlyEqual(1, 1e-6);
|
|
expect(got[1]).to.roughlyEqual(2, 1e-6);
|
|
});
|
|
|
|
// tests for several patterns
|
|
for (const item of patterns) {
|
|
const wkb = item[0];
|
|
const wkt = item[1];
|
|
const opts = item[2];
|
|
|
|
it('for ' + wkt + ' with opt ' + JSON.stringify(opts), function () {
|
|
const wkt_result = new WKT().readGeometry(wkt);
|
|
const wkb_result = new WKB(opts).writeGeometry(wkt_result);
|
|
|
|
expect(wkb_result.toLowerCase()).to.eql(wkb);
|
|
});
|
|
}
|
|
|
|
// XXX: Additional tests for empty POINT Z/M/ZM since WKT parser returns 2D geometry instead of 3D/4D
|
|
it('returns proper representation for 3D/4D point', function () {
|
|
const testPatterns = [
|
|
[
|
|
'01e9030000000000000000f87f000000000000f87f000000000000f87f',
|
|
'POINT Z EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00000003e97ff80000000000007ff80000000000007ff8000000000000',
|
|
'POINT Z EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'0101000080000000000000f87f000000000000f87f000000000000f87f',
|
|
'POINT Z EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'00800000017ff80000000000007ff80000000000007ff8000000000000',
|
|
'POINT Z EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZ'},
|
|
],
|
|
[
|
|
'01d1070000000000000000f87f000000000000f87f000000000000f87f',
|
|
'POINT M EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00000007d17ff80000000000007ff80000000000007ff8000000000000',
|
|
'POINT M EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'0101000040000000000000f87f000000000000f87f000000000000f87f',
|
|
'POINT M EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'00400000017ff80000000000007ff80000000000007ff8000000000000',
|
|
'POINT M EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYM'},
|
|
],
|
|
[
|
|
'01b90b0000000000000000f87f000000000000f87f000000000000f87f000000000000f87f',
|
|
'POINT ZM EMPTY',
|
|
{littleEndian: true, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'0000000bb97ff80000000000007ff80000000000007ff80000000000007ff8000000000000',
|
|
'POINT ZM EMPTY',
|
|
{littleEndian: false, ewkb: false, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'01010000c0000000000000f87f000000000000f87f000000000000f87f000000000000f87f',
|
|
'POINT ZM EMPTY',
|
|
{littleEndian: true, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
[
|
|
'00c00000017ff80000000000007ff80000000000007ff80000000000007ff8000000000000',
|
|
'POINT ZM EMPTY',
|
|
{littleEndian: false, ewkb: true, geometryLayout: 'XYZM'},
|
|
],
|
|
];
|
|
|
|
for (const item of testPatterns) {
|
|
const wkb = item[0];
|
|
const opts = item[2];
|
|
|
|
const geom = new Point([], opts.geometryLayout);
|
|
expect(new WKB(opts).writeGeometry(geom).toLowerCase()).to.eql(wkb);
|
|
}
|
|
});
|
|
|
|
it('detects geometry dimension automatically (common case)', function () {
|
|
const geom = new GeometryCollection([
|
|
new Point([1, 2, 3], 'XYZ'),
|
|
new Point([1, 2, 4], 'XYZM'),
|
|
new Point([1, 2, 3, 4], 'XYZM'),
|
|
]);
|
|
const wkb = new WKB().writeGeometry(geom);
|
|
const geoms = new WKB().readGeometry(wkb).getGeometries();
|
|
|
|
for (let i = 0; i < geoms.length; i++) {
|
|
expect(geoms[i].getLayout()).to.eql('XYZ');
|
|
}
|
|
});
|
|
|
|
it('detects geometry dimension automatically (incompatible case)', function () {
|
|
const geom = new GeometryCollection([
|
|
new Point([1, 2, 3], 'XYZ'),
|
|
new Point([1, 2, 4], 'XYM'),
|
|
new Point([1, 2, 3, 4], 'XYZM'),
|
|
]);
|
|
const wkb = new WKB().writeGeometry(geom);
|
|
const geoms = new WKB().readGeometry(wkb).getGeometries();
|
|
|
|
for (let i = 0; i < geoms.length; i++) {
|
|
expect(geoms[i].getLayout()).to.eql('XY');
|
|
}
|
|
});
|
|
|
|
it('interpolates missing Z value', function () {
|
|
const geom = new GeometryCollection([
|
|
new Point([1, 2, 3], 'XY'), // 3rd coord is intentional
|
|
new Point([1, 2, 4], 'XYM'),
|
|
new Point([1, 2, 3, 4], 'XYZM'),
|
|
]);
|
|
const wkb = new WKB({nodataZ: 98, geometryLayout: 'XYZ'}).writeGeometry(
|
|
geom
|
|
);
|
|
|
|
// GEOMETRYCOLLECTION Z (POINT Z (1 2 98),POINT Z (1 2 98),POINT Z (1 2 3))
|
|
expect(wkb).to.eql(
|
|
'0107000080030000000101000080000000000000F03F000000000000004000000000008058400101000080000000000000F03F000000000000004000000000008058400101000080000000000000F03F00000000000000400000000000000840'
|
|
);
|
|
});
|
|
|
|
it('interpolates missing M value', function () {
|
|
const geom = new GeometryCollection([
|
|
new Point([1, 2, 3], 'XY'), // 3rd coord is intentional
|
|
new Point([1, 2, 4], 'XYM'),
|
|
new Point([1, 2, 3, 4], 'XYZM'),
|
|
]);
|
|
const wkb = new WKB({nodataM: 99, geometryLayout: 'XYM'}).writeGeometry(
|
|
geom
|
|
);
|
|
|
|
// GEOMETRYCOLLECTION M (POINT M (1 2 99),POINT M (1 2 4),POINT M (1 2 4))
|
|
expect(wkb).to.eql(
|
|
'0107000040030000000101000040000000000000F03F00000000000000400000000000C058400101000040000000000000F03F000000000000004000000000000010400101000040000000000000F03F00000000000000400000000000001040'
|
|
);
|
|
});
|
|
|
|
it('interpolates missing Z and M value', function () {
|
|
const geom = new GeometryCollection([
|
|
new Point([1, 2, 3], 'XY'), // 3rd coord is intentional
|
|
new Point([1, 2, 4], 'XYM'),
|
|
new Point([1, 2, 3, 4], 'XYZM'),
|
|
]);
|
|
const wkb = new WKB({
|
|
nodataZ: 98,
|
|
nodataM: 99,
|
|
geometryLayout: 'XYZM',
|
|
}).writeGeometry(geom);
|
|
|
|
// GEOMETRYCOLLECTION ZM (POINT ZM (1 2 98 99),POINT ZM (1 2 98 4),POINT ZM (1 2 3 4))
|
|
expect(wkb).to.eql(
|
|
'01070000C00300000001010000C0000000000000F03F000000000000004000000000008058400000000000C0584001010000C0000000000000F03F00000000000000400000000000805840000000000000104001010000C0000000000000F03F000000000000004000000000000008400000000000001040'
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#readFeature()', function () {
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const wkb = '0101000000000000000000F03F0000000000000040'; // POINT(1 2)
|
|
const feature = format.readFeature(wkb, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
const geom = feature.getGeometry();
|
|
expect(geom.getCoordinates()).to.eql(
|
|
transform([1, 2], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#writeFeature()', function () {
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const feature = new Feature(
|
|
new Point([1, 2]).transform('EPSG:4326', 'EPSG:3857')
|
|
);
|
|
const wkt = format.writeFeature(feature, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
const gotFeature = format.readFeature(wkt);
|
|
expect(gotFeature).to.be.a(Feature);
|
|
const got = gotFeature.getGeometry().getCoordinates();
|
|
expect(got[0]).to.roughlyEqual(1, 1e-6);
|
|
expect(got[1]).to.roughlyEqual(2, 1e-6);
|
|
});
|
|
});
|
|
|
|
describe('#readFeatures()', function () {
|
|
const format = new WKB({splitCollection: true});
|
|
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const wkb =
|
|
'0107000000020000000101000000000000000000F03F0000000000000040010100000000000000000010400000000000001440'; // GEOMETRYCOLLECTION(POINT(1 2),POINT(4 5))
|
|
const features = format.readFeatures(wkb, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
expect(features.length).to.eql(2);
|
|
const point1 = features[0].getGeometry();
|
|
const point2 = features[1].getGeometry();
|
|
expect(point1.getType()).to.eql('Point');
|
|
expect(point2.getType()).to.eql('Point');
|
|
expect(point1.getCoordinates()).to.eql(
|
|
transform([1, 2], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
expect(point2.getCoordinates()).to.eql(
|
|
transform([4, 5], 'EPSG:4326', 'EPSG:3857')
|
|
);
|
|
});
|
|
});
|
|
|
|
describe('#writeFeatures()', function () {
|
|
const format = new WKB({splitCollection: true});
|
|
|
|
it('transforms with dataProjection and featureProjection', function () {
|
|
const features = [
|
|
new Feature(new Point([1, 2]).transform('EPSG:4326', 'EPSG:3857')),
|
|
new Feature(new Point([4, 5]).transform('EPSG:4326', 'EPSG:3857')),
|
|
];
|
|
const wkt = format.writeFeatures(features, {
|
|
dataProjection: 'EPSG:4326',
|
|
featureProjection: 'EPSG:3857',
|
|
});
|
|
const gotFeatures = format.readFeatures(wkt);
|
|
expect(gotFeatures).to.have.length(2);
|
|
expect(gotFeatures[0].getGeometry().getCoordinates()[0]).to.roughlyEqual(
|
|
1,
|
|
1e-6
|
|
);
|
|
expect(gotFeatures[0].getGeometry().getCoordinates()[1]).to.roughlyEqual(
|
|
2,
|
|
1e-6
|
|
);
|
|
expect(gotFeatures[1].getGeometry().getCoordinates()[0]).to.roughlyEqual(
|
|
4,
|
|
1e-6
|
|
);
|
|
expect(gotFeatures[1].getGeometry().getCoordinates()[1]).to.roughlyEqual(
|
|
5,
|
|
1e-6
|
|
);
|
|
});
|
|
});
|
|
});
|