diff --git a/c-deps/krb5 b/c-deps/krb5 index 97e3c42b2a89..9d3270758433 160000 --- a/c-deps/krb5 +++ b/c-deps/krb5 @@ -1 +1 @@ -Subproject commit 97e3c42b2a89a2ec60eb93d3f974769e3e3cbdc5 +Subproject commit 9d32707584334fba347b21c06c905728a929c0a1 diff --git a/pkg/geo/wkt/lex.go b/pkg/geo/wkt/lex.go index ccb3bdee1816..913fa0290ac1 100644 --- a/pkg/geo/wkt/lex.go +++ b/pkg/geo/wkt/lex.go @@ -122,6 +122,14 @@ func getKeywordToken(tokStr string) int { return MULTILINESTRINGZ case "MULTILINESTRINGZM": return MULTILINESTRINGZM + case "MULTIPOLYGON": + return MULTIPOLYGON + case "MULTIPOLYGONM": + return MULTIPOLYGONM + case "MULTIPOLYGONZ": + return MULTIPOLYGONZ + case "MULTIPOLYGONZM": + return MULTIPOLYGONZM default: return eof } diff --git a/pkg/geo/wkt/wkt.y b/pkg/geo/wkt/wkt.y index 4770e79db9e1..0a8282fed024 100644 --- a/pkg/geo/wkt/wkt.y +++ b/pkg/geo/wkt/wkt.y @@ -55,14 +55,49 @@ func appendGeomFlatCoordsReprs(p1 geomFlatCoordsRepr, p2 geomFlatCoordsRepr) geo return geomFlatCoordsRepr{flatCoords: append(p1.flatCoords, p2.flatCoords...), ends: append(p1.ends, p2.ends...)} } +type multiPolygonFlatCoordsRepr struct { + flatCoords []float64 + endss [][]int +} + +func makeMultiPolygonFlatCoordsRepr(p geomFlatCoordsRepr) multiPolygonFlatCoordsRepr { + if p.flatCoords == nil { + return multiPolygonFlatCoordsRepr{flatCoords: nil, endss: [][]int{nil}} + } + return multiPolygonFlatCoordsRepr{flatCoords: p.flatCoords, endss: [][]int{p.ends}} +} + +func appendMultiPolygonFlatCoordsRepr( + p1 multiPolygonFlatCoordsRepr, p2 multiPolygonFlatCoordsRepr, +) multiPolygonFlatCoordsRepr { + p1LastEndsLastEnd := 0 + for i := len(p1.endss) - 1; i >= 0; i-- { + if len(p1.endss[i]) > 0 { + p1LastEndsLastEnd = p1.endss[i][len(p1.endss[i])-1] + break + } + } + if p1LastEndsLastEnd > 0 { + for i, _ := range p2.endss { + for j, _ := range p2.endss[i] { + p2.endss[i][j] += p1LastEndsLastEnd + } + } + } + return multiPolygonFlatCoordsRepr{ + flatCoords: append(p1.flatCoords, p2.flatCoords...), endss: append(p1.endss, p2.endss...), + } +} + %} %union { - str string - geom geom.T - coord float64 - coordList []float64 - flatRepr geomFlatCoordsRepr + str string + geom geom.T + coord float64 + coordList []float64 + flatRepr geomFlatCoordsRepr + multiPolyFlatRepr multiPolygonFlatCoordsRepr } %token POINT POINTM POINTZ POINTZM @@ -70,12 +105,13 @@ func appendGeomFlatCoordsReprs(p1 geomFlatCoordsRepr, p2 geomFlatCoordsRepr) geo %token POLYGON POLYGONM POLYGONZ POLYGONZM %token MULTIPOINT MULTIPOINTM MULTIPOINTZ MULTIPOINTZM %token MULTILINESTRING MULTILINESTRINGM MULTILINESTRINGZ MULTILINESTRINGZM +%token MULTIPOLYGON MULTIPOLYGONM MULTIPOLYGONZ MULTIPOLYGONZM %token EMPTY -//%token MULTIPOLYGON GEOMETRYCOLLECTION +//%token GEOMETRYCOLLECTION %token NUM %type geometry -%type point linestring polygon multipoint multilinestring +%type point linestring polygon multipoint multilinestring multipolygon // TODO(ayang) reorganize the list of %type statements %type two_coords three_coords four_coords @@ -98,6 +134,23 @@ func appendGeomFlatCoordsReprs(p1 geomFlatCoordsRepr, p2 geomFlatCoordsRepr) geo %type two_coords_line_list_allowing_empty_lines %type three_coords_line_list_allowing_empty_lines %type four_coords_line_list_allowing_empty_lines +%type two_coords_polygon three_coords_polygon four_coords_polygon empty_polygon + +%type two_coords_polygon_multi_poly_flat_repr +%type three_coords_polygon_multi_poly_flat_repr +%type four_coords_polygon_multi_poly_flat_repr +%type empty_polygon_multi_poly_flat_repr + +%type three_coords_polygon_list +%type four_coords_polygon_list + +%type two_coords_polygon_allowing_empty +%type three_coords_polygon_allowing_empty +%type four_coords_polygon_allowing_empty + +%type two_coords_polygon_list_allowing_empty_polygons +%type three_coords_polygon_list_allowing_empty_polygons +%type four_coords_polygon_list_allowing_empty_polygons %% @@ -113,6 +166,7 @@ geometry: | polygon | multipoint | multilinestring +| multipolygon point: POINT two_coords_point_with_parens @@ -199,29 +253,29 @@ linestring: } polygon: - POLYGON '(' two_coords_ring_list ')' + POLYGON two_coords_polygon { - $$ = geom.NewPolygonFlat(geom.XY, $3.flatCoords, $3.ends) + $$ = geom.NewPolygonFlat(geom.XY, $2.flatCoords, $2.ends) } -| POLYGON '(' three_coords_ring_list ')' +| POLYGON three_coords_polygon { - $$ = geom.NewPolygonFlat(geom.XYZ, $3.flatCoords, $3.ends) + $$ = geom.NewPolygonFlat(geom.XYZ, $2.flatCoords, $2.ends) } -| POLYGON '(' four_coords_ring_list ')' +| POLYGON four_coords_polygon { - $$ = geom.NewPolygonFlat(geom.XYZM, $3.flatCoords, $3.ends) + $$ = geom.NewPolygonFlat(geom.XYZM, $2.flatCoords, $2.ends) } -| POLYGONM '(' three_coords_ring_list ')' +| POLYGONM three_coords_polygon { - $$ = geom.NewPolygonFlat(geom.XYM, $3.flatCoords, $3.ends) + $$ = geom.NewPolygonFlat(geom.XYM, $2.flatCoords, $2.ends) } -| POLYGONZ '(' three_coords_ring_list ')' +| POLYGONZ three_coords_polygon { - $$ = geom.NewPolygonFlat(geom.XYZ, $3.flatCoords, $3.ends) + $$ = geom.NewPolygonFlat(geom.XYZ, $2.flatCoords, $2.ends) } -| POLYGONZM '(' four_coords_ring_list ')' +| POLYGONZM four_coords_polygon { - $$ = geom.NewPolygonFlat(geom.XYZM, $3.flatCoords, $3.ends) + $$ = geom.NewPolygonFlat(geom.XYZM, $2.flatCoords, $2.ends) } | POLYGON EMPTY { @@ -324,6 +378,143 @@ multilinestring: $$ = geom.NewMultiLineString(geom.XYZM) } +multipolygon: + MULTIPOLYGON '(' two_coords_polygon_list_allowing_empty_polygons ')' + { + $$ = geom.NewMultiPolygonFlat(geom.XY, $3.flatCoords, $3.endss) + } +| MULTIPOLYGON '(' three_coords_polygon_list ')' + { + $$ = geom.NewMultiPolygonFlat(geom.XYZ, $3.flatCoords, $3.endss) + } +| MULTIPOLYGON '(' four_coords_polygon_list ')' + { + $$ = geom.NewMultiPolygonFlat(geom.XYZM, $3.flatCoords, $3.endss) + } +| MULTIPOLYGONM '(' three_coords_polygon_list_allowing_empty_polygons ')' + { + $$ = geom.NewMultiPolygonFlat(geom.XYM, $3.flatCoords, $3.endss) + } +| MULTIPOLYGONZ '(' three_coords_polygon_list_allowing_empty_polygons ')' + { + $$ = geom.NewMultiPolygonFlat(geom.XYZ, $3.flatCoords, $3.endss) + } +| MULTIPOLYGONZM '(' four_coords_polygon_list_allowing_empty_polygons ')' + { + $$ = geom.NewMultiPolygonFlat(geom.XYZM, $3.flatCoords, $3.endss) + } +| MULTIPOLYGON EMPTY + { + $$ = geom.NewMultiPolygon(geom.XY) + } +| MULTIPOLYGONM EMPTY + { + $$ = geom.NewMultiPolygon(geom.XYM) + } +| MULTIPOLYGONZ EMPTY + { + $$ = geom.NewMultiPolygon(geom.XYZ) + } +| MULTIPOLYGONZM EMPTY + { + $$ = geom.NewMultiPolygon(geom.XYZM) + } + +three_coords_polygon_list: + three_coords_polygon_list ',' three_coords_polygon_multi_poly_flat_repr + { + $$ = appendMultiPolygonFlatCoordsRepr($1, $3) + } +| three_coords_polygon_multi_poly_flat_repr + +four_coords_polygon_list: + four_coords_polygon_list ',' four_coords_polygon_multi_poly_flat_repr + { + $$ = appendMultiPolygonFlatCoordsRepr($1, $3) + } +| four_coords_polygon_multi_poly_flat_repr + +two_coords_polygon_list_allowing_empty_polygons: + two_coords_polygon_list_allowing_empty_polygons ',' two_coords_polygon_allowing_empty + { + $$ = appendMultiPolygonFlatCoordsRepr($1, $3) + } +| two_coords_polygon_allowing_empty + +three_coords_polygon_list_allowing_empty_polygons: + three_coords_polygon_list_allowing_empty_polygons ',' three_coords_polygon_allowing_empty + { + $$ = appendMultiPolygonFlatCoordsRepr($1, $3) + } +| three_coords_polygon_allowing_empty + +four_coords_polygon_list_allowing_empty_polygons: + four_coords_polygon_list_allowing_empty_polygons ',' four_coords_polygon_allowing_empty + { + $$ = appendMultiPolygonFlatCoordsRepr($1, $3) + } +| four_coords_polygon_allowing_empty + +two_coords_polygon_allowing_empty: + two_coords_polygon_multi_poly_flat_repr +| empty_polygon_multi_poly_flat_repr + +three_coords_polygon_allowing_empty: + three_coords_polygon_multi_poly_flat_repr +| empty_polygon_multi_poly_flat_repr + +four_coords_polygon_allowing_empty: + four_coords_polygon_multi_poly_flat_repr +| empty_polygon_multi_poly_flat_repr + +two_coords_polygon_multi_poly_flat_repr: + two_coords_polygon + { + $$ = makeMultiPolygonFlatCoordsRepr($1) + } + +three_coords_polygon_multi_poly_flat_repr: + three_coords_polygon + { + $$ = makeMultiPolygonFlatCoordsRepr($1) + } + +four_coords_polygon_multi_poly_flat_repr: + four_coords_polygon + { + $$ = makeMultiPolygonFlatCoordsRepr($1) + } + +empty_polygon_multi_poly_flat_repr: + empty_polygon + { + $$ = makeMultiPolygonFlatCoordsRepr($1) + } + +two_coords_polygon: + '(' two_coords_ring_list ')' + { + $$ = $2 + } + +three_coords_polygon: + '(' three_coords_ring_list ')' + { + $$ = $2 + } + +four_coords_polygon: + '(' four_coords_ring_list ')' + { + $$ = $2 + } + +empty_polygon: + EMPTY + { + $$ = makeGeomFlatCoordsRepr(nil) + } + two_coords_ring_list: two_coords_ring_list ',' two_coords_ring { diff --git a/pkg/geo/wkt/wkt_generated.go b/pkg/geo/wkt/wkt_generated.go index 9357790c4345..ed0ac3dbc993 100644 --- a/pkg/geo/wkt/wkt_generated.go +++ b/pkg/geo/wkt/wkt_generated.go @@ -51,14 +51,49 @@ func appendGeomFlatCoordsReprs(p1 geomFlatCoordsRepr, p2 geomFlatCoordsRepr) geo return geomFlatCoordsRepr{flatCoords: append(p1.flatCoords, p2.flatCoords...), ends: append(p1.ends, p2.ends...)} } -//line wkt.y:60 +type multiPolygonFlatCoordsRepr struct { + flatCoords []float64 + endss [][]int +} + +func makeMultiPolygonFlatCoordsRepr(p geomFlatCoordsRepr) multiPolygonFlatCoordsRepr { + if p.flatCoords == nil { + return multiPolygonFlatCoordsRepr{flatCoords: nil, endss: [][]int{nil}} + } + return multiPolygonFlatCoordsRepr{flatCoords: p.flatCoords, endss: [][]int{p.ends}} +} + +func appendMultiPolygonFlatCoordsRepr( + p1 multiPolygonFlatCoordsRepr, p2 multiPolygonFlatCoordsRepr, +) multiPolygonFlatCoordsRepr { + p1LastEndsLastEnd := 0 + for i := len(p1.endss) - 1; i >= 0; i-- { + if len(p1.endss[i]) > 0 { + p1LastEndsLastEnd = p1.endss[i][len(p1.endss[i])-1] + break + } + } + if p1LastEndsLastEnd > 0 { + for i, _ := range p2.endss { + for j, _ := range p2.endss[i] { + p2.endss[i][j] += p1LastEndsLastEnd + } + } + } + return multiPolygonFlatCoordsRepr{ + flatCoords: append(p1.flatCoords, p2.flatCoords...), endss: append(p1.endss, p2.endss...), + } +} + +//line wkt.y:94 type wktSymType struct { - yys int - str string - geom geom.T - coord float64 - coordList []float64 - flatRepr geomFlatCoordsRepr + yys int + str string + geom geom.T + coord float64 + coordList []float64 + flatRepr geomFlatCoordsRepr + multiPolyFlatRepr multiPolygonFlatCoordsRepr } const POINT = 57346 @@ -81,8 +116,12 @@ const MULTILINESTRING = 57362 const MULTILINESTRINGM = 57363 const MULTILINESTRINGZ = 57364 const MULTILINESTRINGZM = 57365 -const EMPTY = 57366 -const NUM = 57367 +const MULTIPOLYGON = 57366 +const MULTIPOLYGONM = 57367 +const MULTIPOLYGONZ = 57368 +const MULTIPOLYGONZM = 57369 +const EMPTY = 57370 +const NUM = 57371 var wktToknames = [...]string{ "$end", @@ -108,6 +147,10 @@ var wktToknames = [...]string{ "MULTILINESTRINGM", "MULTILINESTRINGZ", "MULTILINESTRINGZM", + "MULTIPOLYGON", + "MULTIPOLYGONM", + "MULTIPOLYGONZ", + "MULTIPOLYGONZM", "EMPTY", "NUM", "'('", @@ -130,152 +173,182 @@ var wktExca = [...]int{ const wktPrivate = 57344 -const wktLast = 263 +const wktLast = 323 var wktAct = [...]int{ - 81, 144, 147, 142, 148, 143, 126, 121, 123, 108, - 127, 46, 132, 97, 45, 98, 96, 120, 141, 140, - 95, 56, 122, 191, 192, 190, 189, 188, 189, 152, - 94, 47, 186, 187, 184, 185, 182, 183, 180, 181, - 179, 178, 177, 178, 115, 175, 176, 173, 174, 90, - 113, 171, 172, 170, 167, 169, 165, 168, 165, 166, - 167, 164, 165, 162, 163, 151, 117, 160, 161, 100, - 150, 100, 99, 100, 112, 136, 110, 83, 134, 133, - 128, 149, 56, 82, 104, 83, 82, 124, 109, 101, - 102, 51, 103, 92, 201, 101, 145, 158, 159, 91, - 48, 92, 91, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 156, 157, 119, 86, 40, 119, 85, - 35, 119, 197, 205, 119, 84, 32, 140, 140, 51, - 201, 86, 40, 85, 35, 140, 80, 48, 79, 78, - 76, 77, 75, 74, 72, 73, 71, 70, 196, 69, - 68, 66, 67, 65, 64, 62, 63, 61, 60, 58, - 59, 57, 55, 117, 56, 197, 216, 100, 99, 202, - 200, 112, 204, 203, 215, 136, 208, 207, 209, 86, - 128, 211, 212, 213, 149, 214, 210, 206, 53, 101, - 51, 50, 90, 51, 85, 44, 199, 48, 195, 39, - 198, 40, 37, 34, 35, 35, 31, 138, 32, 194, - 193, 155, 154, 153, 84, 137, 114, 1, 139, 146, - 43, 129, 131, 54, 116, 29, 33, 36, 42, 49, - 52, 41, 118, 30, 130, 135, 38, 125, 105, 107, - 106, 28, 111, 93, 89, 88, 87, 7, 6, 5, + 50, 99, 181, 184, 179, 185, 180, 162, 157, 159, + 138, 163, 147, 168, 142, 136, 123, 116, 51, 141, + 137, 115, 128, 158, 178, 156, 236, 237, 135, 235, + 234, 233, 234, 231, 232, 229, 230, 227, 228, 52, + 225, 226, 224, 223, 114, 222, 223, 220, 221, 218, + 219, 216, 217, 214, 215, 108, 213, 212, 211, 212, + 100, 209, 210, 100, 130, 207, 208, 117, 205, 206, + 203, 204, 201, 202, 199, 200, 109, 132, 189, 109, + 197, 198, 195, 196, 188, 118, 127, 177, 118, 74, + 125, 187, 143, 151, 172, 149, 124, 170, 169, 164, + 186, 246, 101, 193, 194, 74, 119, 148, 139, 177, + 101, 69, 69, 160, 119, 134, 104, 45, 110, 61, + 182, 134, 103, 40, 104, 45, 110, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 56, 134, 242, 250, 134, 102, 37, 177, 155, + 261, 61, 155, 155, 56, 246, 103, 40, 177, 155, + 66, 53, 98, 96, 97, 95, 94, 92, 93, 91, + 90, 88, 89, 87, 86, 84, 85, 83, 82, 80, + 81, 79, 78, 76, 77, 75, 241, 73, 71, 74, + 69, 117, 68, 65, 69, 66, 53, 60, 132, 61, + 58, 55, 56, 56, 49, 1, 53, 127, 44, 243, + 45, 118, 248, 249, 247, 252, 143, 151, 253, 251, + 255, 172, 258, 257, 259, 254, 164, 262, 263, 264, + 186, 265, 260, 256, 119, 245, 242, 42, 108, 40, + 39, 36, 40, 37, 267, 266, 104, 103, 240, 239, + 238, 192, 117, 244, 191, 190, 102, 174, 175, 154, + 153, 173, 133, 183, 165, 167, 166, 171, 152, 176, + 161, 144, 33, 46, 48, 64, 62, 59, 72, 63, + 67, 70, 47, 54, 57, 131, 146, 145, 150, 129, + 140, 120, 122, 121, 126, 35, 113, 112, 43, 34, + 38, 41, 111, 107, 106, 105, 8, 7, 6, 5, 4, 3, 2, } var wktPact = [...]int{ - 99, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 192, 189, - 188, 185, 181, 177, 174, 148, 145, 144, 141, 140, - 137, 136, 133, 130, 129, 126, 125, 122, -1000, -1000, - -1000, -1000, 199, -1000, -1000, 179, -1000, -1000, -1000, -1000, - 164, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 199, -1000, - -1000, 179, -1000, -1000, -1000, -1000, 164, 74, -1000, 65, - -1000, 65, -1000, 56, -1000, 110, -1000, 104, -1000, 104, - -1000, 101, -1000, 121, -1000, 113, -1000, 113, -1000, -5, - -1000, 43, 38, 2, 198, 197, 196, 96, 70, 40, - -1000, -1000, -1000, 36, 34, 32, -1000, -1000, -1000, -1000, - -1000, -1000, 30, 28, 26, 24, 20, 18, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 15, -1000, -1000, -1000, 13, 11, -1000, -1000, -1000, 9, - 7, 5, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 0, -1000, -1000, -1000, -2, -4, -1000, -1000, -1000, - -1000, -1000, -1000, 195, 194, 183, -1000, 150, -1000, 179, - -1000, 164, -1000, 68, -1000, 65, -1000, 56, -1000, -1000, - -1000, -1000, 107, -1000, 118, -1000, 116, -1000, 104, -1000, - -1000, 101, -1000, 114, -1000, 65, -1000, 56, -1000, 113, - -1000, -1000, -5, 159, -1000, 159, -1000, 151, -1000, -1000, - -1000, 150, -1000, -1000, -1000, 150, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 123, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 223, + 222, 219, 190, 186, 183, 182, 179, 175, 174, 170, + 169, 165, 164, 161, 160, 157, 156, 153, 152, 149, + 148, 145, 144, -1000, -1000, -1000, -1000, 237, -1000, -1000, + 228, -1000, -1000, -1000, -1000, 227, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 237, -1000, -1000, 228, -1000, -1000, -1000, + -1000, 227, -1000, -1000, -1000, -1000, 176, -1000, -1000, 121, + -1000, -1000, -1000, -1000, 89, 127, -1000, 93, -1000, 93, + -1000, 87, -1000, 141, -1000, 134, -1000, 134, -1000, 131, + -1000, 140, -1000, 81, -1000, 81, -1000, 59, -1000, 60, + 53, 47, 236, 235, 232, 72, 51, 49, -1000, -1000, + -1000, 43, 41, 39, -1000, -1000, -1000, -1000, -1000, -1000, + 37, 34, 30, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 27, -1000, -1000, -1000, 25, + 22, -1000, -1000, -1000, 20, 18, 16, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 14, -1000, -1000, -1000, + 11, 9, -1000, -1000, -1000, 6, 4, 2, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 0, -1000, + -1000, -1000, -2, -5, -1000, -1000, -1000, -1000, -1000, -1000, + 231, 230, 229, -1000, 217, -1000, 228, -1000, 227, -1000, + 71, -1000, 121, -1000, 89, -1000, 124, -1000, 137, -1000, + 95, -1000, 93, -1000, -1000, 87, -1000, 135, -1000, 121, + -1000, 89, -1000, 134, -1000, -1000, 131, -1000, 130, -1000, + 82, -1000, 75, -1000, 81, -1000, -1000, 59, 226, -1000, + 226, -1000, 225, -1000, -1000, -1000, 217, -1000, -1000, -1000, + 217, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 71, -1000, -1000, -1000, -1000, -1000, -1000, } var wktPgo = [...]int{ - 0, 262, 261, 260, 259, 258, 257, 0, 50, 44, - 242, 226, 234, 256, 255, 254, 14, 11, 31, 228, - 225, 217, 16, 13, 15, 253, 30, 20, 252, 22, - 10, 250, 249, 8, 1, 9, 7, 6, 248, 17, - 247, 245, 5, 4, 12, 3, 2, 244, 232, 231, - 18, 229, 227, + 0, 322, 321, 320, 319, 318, 317, 316, 1, 22, + 64, 272, 299, 295, 315, 314, 313, 0, 18, 39, + 269, 278, 270, 44, 21, 17, 312, 307, 306, 304, + 20, 14, 303, 302, 10, 9, 16, 15, 19, 301, + 28, 300, 298, 23, 11, 12, 8, 7, 297, 296, + 281, 25, 280, 268, 271, 267, 279, 277, 6, 5, + 2, 276, 275, 13, 4, 3, 274, 24, 273, 215, } var wktR1 = [...]int{ - 0, 52, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, - 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, - 6, 6, 6, 6, 6, 6, 6, 25, 25, 26, - 26, 27, 27, 22, 23, 24, 47, 47, 48, 48, - 49, 49, 50, 50, 51, 51, 44, 44, 45, 45, - 46, 46, 41, 42, 43, 19, 20, 21, 16, 17, - 18, 34, 13, 13, 14, 14, 15, 15, 31, 31, - 32, 32, 38, 38, 39, 39, 40, 40, 35, 35, - 36, 36, 37, 37, 28, 28, 29, 29, 30, 30, - 33, 10, 11, 12, 7, 8, 9, + 0, 69, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, + 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 61, 61, + 62, 62, 66, 66, 67, 67, 68, 68, 63, 63, + 64, 64, 65, 65, 57, 58, 59, 60, 53, 54, + 55, 56, 26, 26, 27, 27, 28, 28, 23, 24, + 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, + 52, 45, 45, 46, 46, 47, 47, 42, 43, 44, + 20, 21, 22, 17, 18, 19, 35, 14, 14, 15, + 15, 16, 16, 32, 32, 33, 33, 39, 39, 40, + 40, 41, 41, 36, 36, 37, 37, 38, 38, 29, + 29, 30, 30, 31, 31, 34, 11, 12, 13, 8, + 9, 10, } var wktR2 = [...]int{ - 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, + 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, - 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, - 4, 4, 4, 2, 2, 2, 2, 4, 4, 4, - 4, 4, 4, 2, 2, 2, 2, 3, 1, 3, - 1, 3, 1, 1, 1, 1, 3, 1, 3, 1, - 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, + 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, + 4, 4, 4, 4, 2, 2, 2, 2, 4, 4, + 4, 4, 4, 4, 2, 2, 2, 2, 3, 1, + 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 3, - 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 3, 3, 2, 3, 4, + 1, 1, 1, 3, 3, 3, 1, 3, 1, 3, + 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 3, 3, 2, + 3, 4, } var wktChk = [...]int{ - -1000, -52, -1, -2, -3, -4, -5, -6, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, -10, -11, - -12, 24, 26, -11, 24, 26, -11, 24, -12, 24, - 26, -19, -20, -21, 24, -16, -17, -18, 26, -20, - 24, 26, -20, 24, -21, 24, 26, 26, 24, 26, - 24, 26, 24, 26, 24, 26, 24, 26, 24, 26, - 24, 26, 24, 26, 24, 26, 24, 26, 24, 26, - 24, -7, -8, -9, 25, 25, 25, -13, -14, -15, - -7, -8, -9, -25, -26, -27, -22, -23, -24, -16, - -17, -18, -26, -26, -27, -38, -31, -32, -35, -29, - -30, -28, -33, -8, -11, -9, -12, -7, -10, 24, - -39, -36, -29, -33, -39, -40, -37, -30, -33, -49, - -47, -48, -44, -42, -43, -41, -34, -20, -21, -19, - 24, -50, -45, -42, -34, -50, -51, -46, -43, -34, - 27, 27, 27, 25, 25, 25, 27, 28, 27, 28, - 27, 28, 27, 28, 27, 28, 27, 28, 27, 27, - 27, 27, 28, 27, 28, 27, 28, 27, 28, 27, - 27, 28, 27, 28, 27, 28, 27, 28, 27, 28, - 27, 27, 28, 25, 25, 25, -7, 25, -8, -9, - -22, 26, -23, -24, -35, 26, -29, -30, -36, -37, - -44, -42, -43, -45, -46, 25, 25, + -1000, -69, -1, -2, -3, -4, -5, -6, -7, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, -11, -12, -13, 28, 30, -12, 28, + 30, -12, 28, -13, 28, 30, -20, -21, -22, 28, + -17, -18, -19, 30, -21, 28, 30, -21, 28, -22, + 28, 30, -53, -54, -55, 28, 30, -54, 28, 30, + -54, 28, -55, 28, 30, 30, 28, 30, 28, 30, + 28, 30, 28, 30, 28, 30, 28, 30, 28, 30, + 28, 30, 28, 30, 28, 30, 28, 30, 28, -8, + -9, -10, 29, 29, 29, -14, -15, -16, -8, -9, + -10, -26, -27, -28, -23, -24, -25, -17, -18, -19, + -39, -32, -33, -36, -30, -31, -29, -34, -9, -12, + -10, -13, -8, -11, 28, -40, -37, -30, -34, -40, + -41, -38, -31, -34, -50, -48, -49, -45, -43, -44, + -42, -35, -21, -22, -20, 28, -51, -46, -43, -35, + -51, -52, -47, -44, -35, -66, -61, -62, -63, -58, + -59, -57, -60, -54, -55, -53, -56, 28, -67, -64, + -58, -60, -67, -68, -65, -59, -60, 31, 31, 31, + 29, 29, 29, 31, 32, 31, 32, 31, 32, 31, + 32, 31, 32, 31, 32, 31, 32, 31, 32, 31, + 32, 31, 32, 31, 31, 32, 31, 32, 31, 32, + 31, 32, 31, 32, 31, 31, 32, 31, 32, 31, + 32, 31, 32, 31, 32, 31, 31, 32, 29, 29, + 29, -8, 29, -9, -10, -23, 30, -24, -25, -36, + 30, -30, -31, -37, -38, -45, -43, -44, -46, -47, + -63, 30, -58, -59, -64, -65, 29, 29, } var wktDef = [...]int{ - 0, -2, 1, 2, 3, 4, 5, 6, 0, 0, + 0, -2, 1, 2, 3, 4, 5, 6, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 7, 8, - 9, 13, 0, 10, 14, 0, 11, 15, 12, 16, - 0, 17, 18, 19, 23, 85, 86, 87, 0, 20, - 24, 0, 21, 25, 22, 26, 0, 0, 33, 0, - 34, 0, 35, 0, 36, 0, 43, 0, 44, 0, - 45, 0, 46, 0, 53, 0, 54, 0, 55, 0, - 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 93, 95, 97, 0, 0, 0, 58, 60, 62, 63, - 64, 65, 0, 0, 0, 0, 0, 0, 103, 99, - 101, 108, 109, 116, 117, 118, 119, 114, 115, 120, - 0, 105, 110, 111, 0, 0, 107, 112, 113, 0, - 0, 0, 71, 67, 69, 76, 77, 83, 84, 82, - 91, 0, 73, 78, 79, 0, 0, 75, 80, 81, - 121, 122, 123, 124, 0, 0, 88, 0, 89, 0, - 90, 0, 27, 0, 28, 0, 29, 0, 30, 31, - 32, 37, 0, 38, 0, 39, 0, 40, 0, 41, - 42, 0, 47, 0, 48, 0, 49, 0, 50, 0, - 51, 52, 0, 125, 125, 0, 92, 0, 94, 96, - 57, 0, 59, 61, 102, 0, 98, 100, 104, 106, - 70, 66, 68, 72, 74, 126, 124, + 0, 0, 0, 8, 9, 10, 14, 0, 11, 15, + 0, 12, 16, 13, 17, 0, 18, 19, 20, 24, + 120, 121, 122, 0, 21, 25, 0, 22, 26, 23, + 27, 0, 28, 29, 30, 34, 0, 31, 35, 0, + 32, 36, 33, 37, 0, 0, 44, 0, 45, 0, + 46, 0, 47, 0, 54, 0, 55, 0, 56, 0, + 57, 0, 64, 0, 65, 0, 66, 0, 67, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, + 132, 0, 0, 0, 93, 95, 97, 98, 99, 100, + 0, 0, 0, 138, 134, 136, 143, 144, 151, 152, + 153, 154, 149, 150, 155, 0, 140, 145, 146, 0, + 0, 142, 147, 148, 0, 0, 0, 106, 102, 104, + 111, 112, 118, 119, 117, 126, 0, 108, 113, 114, + 0, 0, 110, 115, 116, 0, 0, 0, 73, 69, + 71, 78, 79, 85, 86, 84, 87, 91, 0, 75, + 80, 81, 0, 0, 77, 82, 83, 156, 157, 158, + 159, 0, 0, 123, 0, 124, 0, 125, 0, 88, + 0, 89, 0, 90, 0, 38, 0, 39, 0, 40, + 0, 41, 0, 42, 43, 0, 48, 0, 49, 0, + 50, 0, 51, 0, 52, 53, 0, 58, 0, 59, + 0, 60, 0, 61, 0, 62, 63, 0, 160, 160, + 0, 127, 0, 129, 131, 92, 0, 94, 96, 137, + 0, 133, 135, 139, 141, 105, 101, 103, 107, 109, + 72, 0, 68, 70, 74, 76, 161, 159, } var wktTok1 = [...]int{ @@ -283,13 +356,13 @@ var wktTok1 = [...]int{ 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 26, 27, 3, 3, 28, + 30, 31, 3, 3, 32, } var wktTok2 = [...]int{ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, + 22, 23, 24, 25, 26, 27, 28, 29, } var wktTok3 = [...]int{ @@ -635,556 +708,694 @@ wktdefault: case 1: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:106 +//line wkt.y:159 { wktlex.(*wktLex).ret = wktDollar[1].geom } - case 7: + case 8: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:119 +//line wkt.y:173 { wktVAL.geom = geom.NewPointFlat(geom.XY, wktDollar[2].coordList) } - case 8: + case 9: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:123 +//line wkt.y:177 { wktVAL.geom = geom.NewPointFlat(geom.XYZ, wktDollar[2].coordList) } - case 9: + case 10: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:127 +//line wkt.y:181 { wktVAL.geom = geom.NewPointFlat(geom.XYZM, wktDollar[2].coordList) } - case 10: + case 11: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:131 +//line wkt.y:185 { wktVAL.geom = geom.NewPointFlat(geom.XYM, wktDollar[2].coordList) } - case 11: + case 12: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:135 +//line wkt.y:189 { wktVAL.geom = geom.NewPointFlat(geom.XYZ, wktDollar[2].coordList) } - case 12: + case 13: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:139 +//line wkt.y:193 { wktVAL.geom = geom.NewPointFlat(geom.XYZM, wktDollar[2].coordList) } - case 13: + case 14: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:143 +//line wkt.y:197 { wktVAL.geom = geom.NewPointEmpty(geom.XY) } - case 14: + case 15: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:147 +//line wkt.y:201 { wktVAL.geom = geom.NewPointEmpty(geom.XYM) } - case 15: + case 16: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:151 +//line wkt.y:205 { wktVAL.geom = geom.NewPointEmpty(geom.XYZ) } - case 16: + case 17: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:155 +//line wkt.y:209 { wktVAL.geom = geom.NewPointEmpty(geom.XYZM) } - case 17: + case 18: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:161 +//line wkt.y:215 { wktVAL.geom = geom.NewLineStringFlat(geom.XY, wktDollar[2].coordList) } - case 18: + case 19: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:165 +//line wkt.y:219 { wktVAL.geom = geom.NewLineStringFlat(geom.XYZ, wktDollar[2].coordList) } - case 19: + case 20: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:169 +//line wkt.y:223 { wktVAL.geom = geom.NewLineStringFlat(geom.XYZM, wktDollar[2].coordList) } - case 20: + case 21: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:173 +//line wkt.y:227 { wktVAL.geom = geom.NewLineStringFlat(geom.XYM, wktDollar[2].coordList) } - case 21: + case 22: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:177 +//line wkt.y:231 { wktVAL.geom = geom.NewLineStringFlat(geom.XYZ, wktDollar[2].coordList) } - case 22: + case 23: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:181 +//line wkt.y:235 { wktVAL.geom = geom.NewLineStringFlat(geom.XYZM, wktDollar[2].coordList) } - case 23: + case 24: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:185 +//line wkt.y:239 { wktVAL.geom = geom.NewLineString(geom.XY) } - case 24: + case 25: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:189 +//line wkt.y:243 { wktVAL.geom = geom.NewLineString(geom.XYM) } - case 25: + case 26: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:193 +//line wkt.y:247 { wktVAL.geom = geom.NewLineString(geom.XYZ) } - case 26: + case 27: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:197 +//line wkt.y:251 { wktVAL.geom = geom.NewLineString(geom.XYZM) } - case 27: - wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:203 - { - wktVAL.geom = geom.NewPolygonFlat(geom.XY, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) - } case 28: - wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:207 + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:257 { - wktVAL.geom = geom.NewPolygonFlat(geom.XYZ, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) + wktVAL.geom = geom.NewPolygonFlat(geom.XY, wktDollar[2].flatRepr.flatCoords, wktDollar[2].flatRepr.ends) } case 29: - wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:211 + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:261 { - wktVAL.geom = geom.NewPolygonFlat(geom.XYZM, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) + wktVAL.geom = geom.NewPolygonFlat(geom.XYZ, wktDollar[2].flatRepr.flatCoords, wktDollar[2].flatRepr.ends) } case 30: - wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:215 + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:265 { - wktVAL.geom = geom.NewPolygonFlat(geom.XYM, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) + wktVAL.geom = geom.NewPolygonFlat(geom.XYZM, wktDollar[2].flatRepr.flatCoords, wktDollar[2].flatRepr.ends) } case 31: - wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:219 + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:269 { - wktVAL.geom = geom.NewPolygonFlat(geom.XYZ, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) + wktVAL.geom = geom.NewPolygonFlat(geom.XYM, wktDollar[2].flatRepr.flatCoords, wktDollar[2].flatRepr.ends) } case 32: - wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:223 + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:273 { - wktVAL.geom = geom.NewPolygonFlat(geom.XYZM, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) + wktVAL.geom = geom.NewPolygonFlat(geom.XYZ, wktDollar[2].flatRepr.flatCoords, wktDollar[2].flatRepr.ends) } case 33: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:227 +//line wkt.y:277 { - wktVAL.geom = geom.NewPolygon(geom.XY) + wktVAL.geom = geom.NewPolygonFlat(geom.XYZM, wktDollar[2].flatRepr.flatCoords, wktDollar[2].flatRepr.ends) } case 34: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:231 +//line wkt.y:281 { - wktVAL.geom = geom.NewPolygon(geom.XYM) + wktVAL.geom = geom.NewPolygon(geom.XY) } case 35: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:235 +//line wkt.y:285 { - wktVAL.geom = geom.NewPolygon(geom.XYZ) + wktVAL.geom = geom.NewPolygon(geom.XYM) } case 36: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:239 +//line wkt.y:289 { - wktVAL.geom = geom.NewPolygon(geom.XYZM) + wktVAL.geom = geom.NewPolygon(geom.XYZ) } case 37: + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:293 + { + wktVAL.geom = geom.NewPolygon(geom.XYZM) + } + case 38: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:245 +//line wkt.y:299 { wktVAL.geom = geom.NewMultiPointFlat(geom.XY, wktDollar[3].flatRepr.flatCoords, geom.NewMultiPointFlatOptionWithEnds(wktDollar[3].flatRepr.ends)) } - case 38: + case 39: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:249 +//line wkt.y:303 { wktVAL.geom = geom.NewMultiPointFlat(geom.XYZ, wktDollar[3].coordList) } - case 39: + case 40: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:253 +//line wkt.y:307 { wktVAL.geom = geom.NewMultiPointFlat(geom.XYZM, wktDollar[3].coordList) } - case 40: + case 41: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:257 +//line wkt.y:311 { wktVAL.geom = geom.NewMultiPointFlat(geom.XYM, wktDollar[3].flatRepr.flatCoords, geom.NewMultiPointFlatOptionWithEnds(wktDollar[3].flatRepr.ends)) } - case 41: + case 42: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:261 +//line wkt.y:315 { wktVAL.geom = geom.NewMultiPointFlat(geom.XYZ, wktDollar[3].flatRepr.flatCoords, geom.NewMultiPointFlatOptionWithEnds(wktDollar[3].flatRepr.ends)) } - case 42: + case 43: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:265 +//line wkt.y:319 { wktVAL.geom = geom.NewMultiPointFlat(geom.XYZM, wktDollar[3].flatRepr.flatCoords, geom.NewMultiPointFlatOptionWithEnds(wktDollar[3].flatRepr.ends)) } - case 43: + case 44: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:269 +//line wkt.y:323 { wktVAL.geom = geom.NewMultiPoint(geom.XY) } - case 44: + case 45: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:273 +//line wkt.y:327 { wktVAL.geom = geom.NewMultiPoint(geom.XYM) } - case 45: + case 46: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:277 +//line wkt.y:331 { wktVAL.geom = geom.NewMultiPoint(geom.XYZ) } - case 46: + case 47: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:281 +//line wkt.y:335 { wktVAL.geom = geom.NewMultiPoint(geom.XYZM) } - case 47: + case 48: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:287 +//line wkt.y:341 { wktVAL.geom = geom.NewMultiLineStringFlat(geom.XY, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) } - case 48: + case 49: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:291 +//line wkt.y:345 { wktVAL.geom = geom.NewMultiLineStringFlat(geom.XYZ, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) } - case 49: + case 50: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:295 +//line wkt.y:349 { wktVAL.geom = geom.NewMultiLineStringFlat(geom.XYZM, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) } - case 50: + case 51: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:299 +//line wkt.y:353 { wktVAL.geom = geom.NewMultiLineStringFlat(geom.XYM, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) } - case 51: + case 52: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:303 +//line wkt.y:357 { wktVAL.geom = geom.NewMultiLineStringFlat(geom.XYZ, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) } - case 52: + case 53: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:307 +//line wkt.y:361 { wktVAL.geom = geom.NewMultiLineStringFlat(geom.XYZM, wktDollar[3].flatRepr.flatCoords, wktDollar[3].flatRepr.ends) } - case 53: + case 54: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:311 +//line wkt.y:365 { wktVAL.geom = geom.NewMultiLineString(geom.XY) } - case 54: + case 55: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:315 +//line wkt.y:369 { wktVAL.geom = geom.NewMultiLineString(geom.XYM) } - case 55: + case 56: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:319 +//line wkt.y:373 { wktVAL.geom = geom.NewMultiLineString(geom.XYZ) } - case 56: + case 57: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:323 +//line wkt.y:377 { wktVAL.geom = geom.NewMultiLineString(geom.XYZM) } - case 57: + case 58: + wktDollar = wktS[wktpt-4 : wktpt+1] +//line wkt.y:383 + { + wktVAL.geom = geom.NewMultiPolygonFlat(geom.XY, wktDollar[3].multiPolyFlatRepr.flatCoords, wktDollar[3].multiPolyFlatRepr.endss) + } + case 59: + wktDollar = wktS[wktpt-4 : wktpt+1] +//line wkt.y:387 + { + wktVAL.geom = geom.NewMultiPolygonFlat(geom.XYZ, wktDollar[3].multiPolyFlatRepr.flatCoords, wktDollar[3].multiPolyFlatRepr.endss) + } + case 60: + wktDollar = wktS[wktpt-4 : wktpt+1] +//line wkt.y:391 + { + wktVAL.geom = geom.NewMultiPolygonFlat(geom.XYZM, wktDollar[3].multiPolyFlatRepr.flatCoords, wktDollar[3].multiPolyFlatRepr.endss) + } + case 61: + wktDollar = wktS[wktpt-4 : wktpt+1] +//line wkt.y:395 + { + wktVAL.geom = geom.NewMultiPolygonFlat(geom.XYM, wktDollar[3].multiPolyFlatRepr.flatCoords, wktDollar[3].multiPolyFlatRepr.endss) + } + case 62: + wktDollar = wktS[wktpt-4 : wktpt+1] +//line wkt.y:399 + { + wktVAL.geom = geom.NewMultiPolygonFlat(geom.XYZ, wktDollar[3].multiPolyFlatRepr.flatCoords, wktDollar[3].multiPolyFlatRepr.endss) + } + case 63: + wktDollar = wktS[wktpt-4 : wktpt+1] +//line wkt.y:403 + { + wktVAL.geom = geom.NewMultiPolygonFlat(geom.XYZM, wktDollar[3].multiPolyFlatRepr.flatCoords, wktDollar[3].multiPolyFlatRepr.endss) + } + case 64: + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:407 + { + wktVAL.geom = geom.NewMultiPolygon(geom.XY) + } + case 65: + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:411 + { + wktVAL.geom = geom.NewMultiPolygon(geom.XYM) + } + case 66: + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:415 + { + wktVAL.geom = geom.NewMultiPolygon(geom.XYZ) + } + case 67: + wktDollar = wktS[wktpt-2 : wktpt+1] +//line wkt.y:419 + { + wktVAL.geom = geom.NewMultiPolygon(geom.XYZM) + } + case 68: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:425 + { + wktVAL.multiPolyFlatRepr = appendMultiPolygonFlatCoordsRepr(wktDollar[1].multiPolyFlatRepr, wktDollar[3].multiPolyFlatRepr) + } + case 70: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:432 + { + wktVAL.multiPolyFlatRepr = appendMultiPolygonFlatCoordsRepr(wktDollar[1].multiPolyFlatRepr, wktDollar[3].multiPolyFlatRepr) + } + case 72: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:439 + { + wktVAL.multiPolyFlatRepr = appendMultiPolygonFlatCoordsRepr(wktDollar[1].multiPolyFlatRepr, wktDollar[3].multiPolyFlatRepr) + } + case 74: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:446 + { + wktVAL.multiPolyFlatRepr = appendMultiPolygonFlatCoordsRepr(wktDollar[1].multiPolyFlatRepr, wktDollar[3].multiPolyFlatRepr) + } + case 76: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:453 + { + wktVAL.multiPolyFlatRepr = appendMultiPolygonFlatCoordsRepr(wktDollar[1].multiPolyFlatRepr, wktDollar[3].multiPolyFlatRepr) + } + case 84: + wktDollar = wktS[wktpt-1 : wktpt+1] +//line wkt.y:472 + { + wktVAL.multiPolyFlatRepr = makeMultiPolygonFlatCoordsRepr(wktDollar[1].flatRepr) + } + case 85: + wktDollar = wktS[wktpt-1 : wktpt+1] +//line wkt.y:478 + { + wktVAL.multiPolyFlatRepr = makeMultiPolygonFlatCoordsRepr(wktDollar[1].flatRepr) + } + case 86: + wktDollar = wktS[wktpt-1 : wktpt+1] +//line wkt.y:484 + { + wktVAL.multiPolyFlatRepr = makeMultiPolygonFlatCoordsRepr(wktDollar[1].flatRepr) + } + case 87: + wktDollar = wktS[wktpt-1 : wktpt+1] +//line wkt.y:490 + { + wktVAL.multiPolyFlatRepr = makeMultiPolygonFlatCoordsRepr(wktDollar[1].flatRepr) + } + case 88: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:496 + { + wktVAL.flatRepr = wktDollar[2].flatRepr + } + case 89: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:502 + { + wktVAL.flatRepr = wktDollar[2].flatRepr + } + case 90: + wktDollar = wktS[wktpt-3 : wktpt+1] +//line wkt.y:508 + { + wktVAL.flatRepr = wktDollar[2].flatRepr + } + case 91: + wktDollar = wktS[wktpt-1 : wktpt+1] +//line wkt.y:514 + { + wktVAL.flatRepr = makeGeomFlatCoordsRepr(nil) + } + case 92: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:329 +//line wkt.y:520 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 59: + case 94: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:336 +//line wkt.y:527 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 61: + case 96: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:343 +//line wkt.y:534 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 63: + case 98: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:350 +//line wkt.y:541 { if !isValidPolygonRing(wktlex, wktDollar[1].coordList, 2) { return 1 } wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 64: + case 99: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:359 +//line wkt.y:550 { if !isValidPolygonRing(wktlex, wktDollar[1].coordList, 3) { return 1 } wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 65: + case 100: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:368 +//line wkt.y:559 { if !isValidPolygonRing(wktlex, wktDollar[1].coordList, 4) { return 1 } wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 66: + case 101: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:379 +//line wkt.y:570 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 68: + case 103: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:386 +//line wkt.y:577 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 70: + case 105: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:393 +//line wkt.y:584 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 72: + case 107: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:400 +//line wkt.y:591 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 74: + case 109: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:407 +//line wkt.y:598 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 82: + case 117: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:426 +//line wkt.y:617 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 83: + case 118: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:432 +//line wkt.y:623 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 84: + case 119: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:438 +//line wkt.y:629 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 85: + case 120: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:444 +//line wkt.y:635 { if !isValidLineString(wktlex, wktDollar[1].coordList, 2) { return 1 } } - case 86: + case 121: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:452 +//line wkt.y:643 { if !isValidLineString(wktlex, wktDollar[1].coordList, 3) { return 1 } } - case 87: + case 122: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:460 +//line wkt.y:651 { if !isValidLineString(wktlex, wktDollar[1].coordList, 4) { return 1 } } - case 88: + case 123: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:468 +//line wkt.y:659 { wktVAL.coordList = wktDollar[2].coordList } - case 89: + case 124: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:474 +//line wkt.y:665 { wktVAL.coordList = wktDollar[2].coordList } - case 90: + case 125: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:480 +//line wkt.y:671 { wktVAL.coordList = wktDollar[2].coordList } - case 91: + case 126: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:486 +//line wkt.y:677 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(nil) } - case 92: + case 127: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:492 +//line wkt.y:683 { wktVAL.coordList = append(wktDollar[1].coordList, wktDollar[3].coordList...) } - case 94: + case 129: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:499 +//line wkt.y:690 { wktVAL.coordList = append(wktDollar[1].coordList, wktDollar[3].coordList...) } - case 96: + case 131: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:506 +//line wkt.y:697 { wktVAL.coordList = append(wktDollar[1].coordList, wktDollar[3].coordList...) } - case 98: + case 133: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:515 +//line wkt.y:706 { wktVAL.coordList = append(wktDollar[1].coordList, wktDollar[3].coordList...) } - case 100: + case 135: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:522 +//line wkt.y:713 { wktVAL.coordList = append(wktDollar[1].coordList, wktDollar[3].coordList...) } - case 102: + case 137: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:529 +//line wkt.y:720 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 104: + case 139: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:536 +//line wkt.y:727 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 106: + case 141: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:543 +//line wkt.y:734 { wktVAL.flatRepr = appendGeomFlatCoordsReprs(wktDollar[1].flatRepr, wktDollar[3].flatRepr) } - case 108: + case 143: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:550 +//line wkt.y:741 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 110: + case 145: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:557 +//line wkt.y:748 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 112: + case 147: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:564 +//line wkt.y:755 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(wktDollar[1].coordList) } - case 120: + case 155: wktDollar = wktS[wktpt-1 : wktpt+1] -//line wkt.y:583 +//line wkt.y:774 { wktVAL.flatRepr = makeGeomFlatCoordsRepr(nil) } - case 121: + case 156: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:589 +//line wkt.y:780 { wktVAL.coordList = wktDollar[2].coordList } - case 122: + case 157: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:595 +//line wkt.y:786 { wktVAL.coordList = wktDollar[2].coordList } - case 123: + case 158: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:601 +//line wkt.y:792 { wktVAL.coordList = wktDollar[2].coordList } - case 124: + case 159: wktDollar = wktS[wktpt-2 : wktpt+1] -//line wkt.y:607 +//line wkt.y:798 { wktVAL.coordList = []float64{wktDollar[1].coord, wktDollar[2].coord} } - case 125: + case 160: wktDollar = wktS[wktpt-3 : wktpt+1] -//line wkt.y:613 +//line wkt.y:804 { wktVAL.coordList = []float64{wktDollar[1].coord, wktDollar[2].coord, wktDollar[3].coord} } - case 126: + case 161: wktDollar = wktS[wktpt-4 : wktpt+1] -//line wkt.y:619 +//line wkt.y:810 { wktVAL.coordList = []float64{wktDollar[1].coord, wktDollar[2].coord, wktDollar[3].coord, wktDollar[4].coord} } diff --git a/pkg/geo/wkt/wkt_test.go b/pkg/geo/wkt/wkt_test.go index b86f68304b65..19f8dd2e8094 100644 --- a/pkg/geo/wkt/wkt_test.go +++ b/pkg/geo/wkt/wkt_test.go @@ -278,6 +278,62 @@ func TestUnmarshal(t *testing.T) { equivInputs: []string{"MULTILINESTRING ZM EMPTY", "MULTILINESTRINGZM EMPTY"}, expected: geom.NewMultiLineString(geom.XYZM), }, + // MULTIPOLYGON tests + { + desc: "parse 2D multipolygon", + equivInputs: []string{"MULTIPOLYGON(((1 0, 2 5, -2 5, 1 0)))"}, + expected: geom.NewMultiPolygonFlat(geom.XY, []float64{1, 0, 2, 5, -2, 5, 1, 0}, [][]int{{8}}), + }, + { + desc: "parse 2D multipolygon with EMPTY at rear", + equivInputs: []string{"MULTIPOLYGON(((1 0, 2 5, -2 5, 1 0)), EMPTY)"}, + expected: geom.NewMultiPolygonFlat(geom.XY, []float64{1, 0, 2, 5, -2, 5, 1, 0}, [][]int{{8}, []int(nil)}), + }, + { + desc: "parse 2D multipolygon with EMPTY at front", + equivInputs: []string{"MULTIPOLYGON(EMPTY, ((1 0, 2 5, -2 5, 1 0)))"}, + expected: geom.NewMultiPolygonFlat(geom.XY, []float64{1, 0, 2, 5, -2, 5, 1, 0}, [][]int{[]int(nil), {8}}), + }, + { + desc: "parse 2D multipolygon with multiple polygons", + equivInputs: []string{"MULTIPOLYGON(((1 0, 2 5, -2 5, 1 0)), EMPTY, ((-1 -1, 2 7, 3 0, -1 -1)))"}, + expected: geom.NewMultiPolygonFlat(geom.XY, []float64{1, 0, 2, 5, -2, 5, 1, 0, -1, -1, 2, 7, 3, 0, -1, -1}, [][]int{{8}, []int(nil), {16}}), + }, + { + desc: "parse 2D+M multipolygon", + equivInputs: []string{"MULTIPOLYGON M (((0 0 0, 1 1 1, 2 3 1, 0 0 0)))"}, + expected: geom.NewMultiPolygonFlat(geom.XYM, []float64{0, 0, 0, 1, 1, 1, 2, 3, 1, 0, 0, 0}, [][]int{{12}}), + }, + { + desc: "parse 3D multipolygon", + equivInputs: []string{"MULTIPOLYGON(((0 0 0, 1 1 1, 2 3 1, 0 0 0)))", "MULTIPOLYGON Z (((0 0 0, 1 1 1, 2 3 1, 0 0 0)))"}, + expected: geom.NewMultiPolygonFlat(geom.XYZ, []float64{0, 0, 0, 1, 1, 1, 2, 3, 1, 0, 0, 0}, [][]int{{12}}), + }, + { + desc: "parse 4D multipolygon", + equivInputs: []string{"MULTIPOLYGON(((0 0 0 0, 1 1 1 -1, 2 3 1 -2, 0 0 0 0)))", "MULTIPOLYGON ZM (((0 0 0 0, 1 1 1 -1, 2 3 1 -2, 0 0 0 0)))"}, + expected: geom.NewMultiPolygonFlat(geom.XYZM, []float64{0, 0, 0, 0, 1, 1, 1, -1, 2, 3, 1, -2, 0, 0, 0, 0}, [][]int{{16}}), + }, + { + desc: "parse empty 2D multipolygon", + equivInputs: []string{"MULTIPOLYGON EMPTY"}, + expected: geom.NewMultiPolygon(geom.XY), + }, + { + desc: "parse empty 2D+M multipolygon", + equivInputs: []string{"MULTIPOLYGON M EMPTY", "MULTIPOLYGONM EMPTY"}, + expected: geom.NewMultiPolygon(geom.XYM), + }, + { + desc: "parse empty 3D multipolygon", + equivInputs: []string{"MULTIPOLYGON Z EMPTY", "MULTIPOLYGONZ EMPTY"}, + expected: geom.NewMultiPolygon(geom.XYZ), + }, + { + desc: "parse empty 4D multipolygon", + equivInputs: []string{"MULTIPOLYGON ZM EMPTY", "MULTIPOLYGONZM EMPTY"}, + expected: geom.NewMultiPolygon(geom.XYZM), + }, } for _, tc := range testCases { @@ -454,6 +510,69 @@ MULTILINESTRING((0 0)) MULTILINESTRING(EMPTY, (0 0 0 0, 2 3 -2 -3)) ^`, }, + { + desc: "2D multipolygon with no polygons", + input: "MULTIPOLYGON()", + expectedErrStr: `syntax error: unexpected ')', expecting EMPTY or '(' at pos 13 +MULTIPOLYGON() + ^`, + }, + { + desc: "2D multipolygon with one polygon missing outer parentheses", + input: "MULTIPOLYGON((1 0, 2 5, -2 5, 1 0))", + expectedErrStr: `syntax error: unexpected NUM, expecting '(' at pos 14 +MULTIPOLYGON((1 0, 2 5, -2 5, 1 0)) + ^`, + }, + { + desc: "multipolygon with mixed dimensionality", + input: "MULTIPOLYGON(((1 0, 2 5, -2 5, 1 0)), ((1 0 2, 2 5 1, -2 5 -1, 1 0 2)))", + expectedErrStr: `syntax error: unexpected NUM, expecting ')' or ',' at pos 44 +MULTIPOLYGON(((1 0, 2 5, -2 5, 1 0)), ((1 0 2, 2 5 1, -2 5 -1, 1 0 2))) + ^`, + }, + { + desc: "2D multipolygon with polygon that doesn't have enough points", + input: "MULTIPOLYGON(((0 0, 1 1, 2 0)))", + expectedErrStr: `syntax error: polygon ring doesn't have enough points at pos 28 +MULTIPOLYGON(((0 0, 1 1, 2 0))) + ^`, + }, + { + desc: "2D multipolygon with polygon with ring that isn't closed", + input: "MULTIPOLYGON(((0 0, 1 1, 2 0, 1 -1)))", + expectedErrStr: `syntax error: polygon ring not closed at pos 34 +MULTIPOLYGON(((0 0, 1 1, 2 0, 1 -1))) + ^`, + }, + { + desc: "2D multipolygon with polygon with empty second ring", + input: "MULTIPOLYGON(((0 0, 1 -1, 2 0, 0 0), ()))", + expectedErrStr: `syntax error: unexpected ')', expecting NUM at pos 38 +MULTIPOLYGON(((0 0, 1 -1, 2 0, 0 0), ())) + ^`, + }, + { + desc: "2D multipolygon with polygon with EMPTY as second ring", + input: "MULTIPOLYGON(((0 0, 1 -1, 2 0, 0 0), EMPTY))", + expectedErrStr: `syntax error: unexpected EMPTY, expecting '(' at pos 37 +MULTIPOLYGON(((0 0, 1 -1, 2 0, 0 0), EMPTY)) + ^`, + }, + { + desc: "2D multipolygon with polygon with invalid second ring", + input: "MULTIPOLYGON(((0 0, 1 -1, 2 0, 0 0), (0.5 -0.5)))", + expectedErrStr: `syntax error: polygon ring doesn't have enough points at pos 46 +MULTIPOLYGON(((0 0, 1 -1, 2 0, 0 0), (0.5 -0.5))) + ^`, + }, + { + desc: "3D multipolygon using EMPTY without using Z in its type", + input: "MULTIPOLYGON(EMPTY, ((0 0 0, 1 1 1, 2 3 1, 0 0 0)))", + expectedErrStr: `syntax error: unexpected NUM, expecting ')' or ',' at pos 26 +MULTIPOLYGON(EMPTY, ((0 0 0, 1 1 1, 2 3 1, 0 0 0))) + ^`, + }, } for _, tc := range errorTestCases { diff --git a/pkg/ui/package.json b/pkg/ui/package.json index f9d6eaed999a..159af4803688 100644 --- a/pkg/ui/package.json +++ b/pkg/ui/package.json @@ -16,15 +16,15 @@ }, "dependencies": { "@cockroachlabs/cluster-ui": "^0.1.46", - "analytics-node": "^3.4.0-beta.1", + "analytics-node": "^3.5.0", "antd": "^3.25.2", "babel-polyfill": "^6.26.0", "classnames": "^2.2.5", "combokeys": "^2.4.6", "connected-react-router": "^6.6.1", "create-react-context": "^0.3.0", - "highlight.js": "^9.10.0", - "lodash": "^4.17.19", + "highlight.js": "^10.6.0", + "lodash": "^4.17.20", "long": "^4.0.0", "mini-create-react-context": "^0.3.2", "moment": "^2.19.3", @@ -68,7 +68,7 @@ "@types/enzyme": "^3.1.9", "@types/enzyme-adapter-react-16": "^1.0.2", "@types/fetch-mock": "^5.8.1", - "@types/highlight.js": "^9.1.9", + "@types/highlight.js": "^10.1.0", "@types/lodash": "^4.14.149", "@types/mocha": "^2.2.40", "@types/node": "^13.7.0", @@ -149,14 +149,15 @@ "**/deep-extend": "^0.5.1", "**/extend": "^3.0.2", "**/react-dom": "^16.12.0", - "**/ua-parser-js": "0.7.20", + "**/ua-parser-js": "0.7.23", "**/url-parse": "^1.4.3", "elliptic": "~6.5.3", "http-proxy": "~1.18.1", "markdown-to-jsx": "~6.11.4", "node-fetch": "~2.6.1", "serialize-javascript": "~3.1.0", - "yargs-parser": "~13.1.2" + "yargs-parser": "~13.1.2", + "lodash": "^4.17.20" }, "engines": { "node": ">=12", diff --git a/pkg/ui/yarn-vendor b/pkg/ui/yarn-vendor index 01607935c5d4..0b7ebe5e3af6 160000 --- a/pkg/ui/yarn-vendor +++ b/pkg/ui/yarn-vendor @@ -1 +1 @@ -Subproject commit 01607935c5d49cb15dc1cce58c7c7bde575328ca +Subproject commit 0b7ebe5e3af625fc096cb583b9bca5d7490559fe diff --git a/pkg/ui/yarn.lock b/pkg/ui/yarn.lock index 849189ea0df3..8db1ade9c685 100644 --- a/pkg/ui/yarn.lock +++ b/pkg/ui/yarn.lock @@ -2630,9 +2630,12 @@ "@types/minimatch" "*" "@types/node" "*" -"@types/highlight.js@^9.1.9": - version "9.12.2" - resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-9.12.2.tgz#6ee7cd395effe5ec80b515d3ff1699068cd0cd1d" +"@types/highlight.js@^10.1.0": + version "10.1.0" + resolved "https://registry.yarnpkg.com/@types/highlight.js/-/highlight.js-10.1.0.tgz#89bb0c202997d7a90a07bd2ec1f7d00c56bb90b4" + integrity sha512-77hF2dGBsOgnvZll1vymYiNUtqJ8cJfXPD6GG/2M0aLRc29PkvB7Au6sIDjIEFcSICBhCh2+Pyq6WSRS7LUm6A== + dependencies: + highlight.js "*" "@types/history@*": version "4.7.4" @@ -3209,13 +3212,13 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -analytics-node@^3.4.0-beta.1: - version "3.4.0-beta.1" - resolved "https://registry.yarnpkg.com/analytics-node/-/analytics-node-3.4.0-beta.1.tgz#f348d60fb25f15d481ad2c2bdef53c29384b4a5e" - integrity sha512-+0F/y4Asc5S2qhWcYss+iCob6TTXQktwbqlIk02gcZaRxpekCbnTbJu/rcaRooVHxqp9WSzUXiWCesJYPJETZQ== +analytics-node@^3.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/analytics-node/-/analytics-node-3.5.0.tgz#b33ff92195f006b20f1c4e28af86d975c98e4636" + integrity sha512-XgQq6ejZHCehUSnZS4V7QJPLIP7S9OAWwQDYl4WTLtsRvc5fCxIwzK/yihzmIW51v9PnyBmrl9dMcqvwfOE8WA== dependencies: "@segment/loosely-validate-event" "^2.0.0" - axios "^0.18.1" + axios "^0.21.1" axios-retry "^3.0.2" lodash.isstring "^4.0.1" md5 "^2.2.1" @@ -3639,13 +3642,12 @@ axios-retry@^3.0.2: dependencies: is-retry-allowed "^1.1.0" -axios@^0.18.1: - version "0.18.1" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" - integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" + follow-redirects "^1.10.0" babel-code-frame@^6.22.0: version "6.26.0" @@ -5400,13 +5402,6 @@ debug@3.2.6, debug@^3.0.0, debug@^3.1.1, debug@^3.2.5, debug@^3.2.6: dependencies: ms "^2.1.1" -debug@=3.1.0, debug@~3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - debug@^4.0.1: version "4.3.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" @@ -5421,6 +5416,13 @@ debug@^4.1.0, debug@^4.1.1: dependencies: ms "^2.1.1" +debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + decamelize@^1.1.1, decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -6883,13 +6885,6 @@ focus-lock@^0.6.3: resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.6.6.tgz#98119a755a38cfdbeda0280eaa77e307eee850c7" integrity sha512-Dx69IXGCq1qsUExWuG+5wkiMqVM/zGx/reXSJSLogECwp3x6KeNQZ+NAetgxEFpnC41rD8U3+jRCW68+LNzdtw== -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== - dependencies: - debug "=3.1.0" - follow-redirects@^1.0.0: version "1.9.0" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.9.0.tgz#8d5bcdc65b7108fe1508649c79c12d732dcedb4f" @@ -6897,6 +6892,11 @@ follow-redirects@^1.0.0: dependencies: debug "^3.0.0" +follow-redirects@^1.10.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.13.2.tgz#dd73c8effc12728ba5cf4259d760ea5fb83e3147" + integrity sha512-6mPTgLxYm3r6Bkkg0vNM0HTjfGrOEtsfbhagQvbxDEsEkpNhw582upBaoRZylzen6krEmxXJgt9Ju6HiI4O7BA== + for-in@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" @@ -7497,15 +7497,16 @@ he@1.2.0, he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +highlight.js@*, highlight.js@^10.6.0: + version "10.6.0" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.6.0.tgz#0073aa71d566906965ba6e1b7be7b2682f5e18b6" + integrity sha512-8mlRcn5vk/r4+QcqerapwBYTe+iPL5ih6xrNylxrnBdHQiijDETfXX7VIxC3UiCRiINBJfANBAsPzAvRQj8RpQ== + highlight.js@^10.2.0: version "10.5.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-10.5.0.tgz#3f09fede6a865757378f2d9ebdcbc15ba268f98f" integrity sha512-xTmvd9HiIHR6L53TMC7TKolEj65zG1XU+Onr8oi86mYa+nLcIbxTTWkpW7CsEwv/vK7u1zb8alZIMLDqqN6KTw== -highlight.js@^9.10.0: - version "9.10.0" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.10.0.tgz#f9f0b14c0be00f0e4fb1e577b749fed9e6f52f55" - highlight.js@~9.12.0: version "9.12.0" resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.12.0.tgz#e6d9dbe57cbefe60751f02af336195870c90c01e" @@ -8021,7 +8022,7 @@ is-buffer@^1.0.2, is-buffer@^1.1.5, is-buffer@~1.1.1: resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== -is-buffer@^2.0.2, is-buffer@~2.0.3: +is-buffer@~2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" integrity sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw== @@ -8823,17 +8824,7 @@ lodash.throttle@^4.0.0, lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.5: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== - -lodash@^4.17.19, lodash@^4.17.4: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== - -lodash@^4.17.20: +lodash@^4.0.0, lodash@^4.15.0, lodash@^4.16.5, lodash@^4.17.10, lodash@^4.17.11, lodash@^4.17.12, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.4, lodash@^4.17.5: version "4.17.20" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== @@ -13508,10 +13499,10 @@ typescript@^3.7.2: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.7.2.tgz#27e489b95fa5909445e9fef5ee48d81697ad18fb" integrity sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ== -ua-parser-js@0.7.20, ua-parser-js@^0.7.18, ua-parser-js@^0.7.9: - version "0.7.20" - resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.20.tgz#7527178b82f6a62a0f243d1f94fd30e3e3c21098" - integrity sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw== +ua-parser-js@0.7.23, ua-parser-js@^0.7.18, ua-parser-js@^0.7.9: + version "0.7.23" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b" + integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA== ultron@~1.1.0: version "1.1.1"