in gis/src/commonTest/kotlin/org/jetbrains/letsPlot/gis/common/ParserTest.kt [128:245]
fun multipolygonTest() {
// SELECT encode(ST_AsTWKB('MULTIPOLYGON(((
// -71.103188 42.315277,
// -71.103162 42.315296,
// -71.102923 42.314915,
// -71.102309 42.315196,
// -71.101928 42.314738,
// -71.102505 42.314472,
// -71.102774 42.314165,
// -71.103113 42.314273,
// -71.103248 42.314024,
// -71.103300 42.314039,
// -71.103348 42.313949,
// -71.103396 42.313863,
// -71.104152 42.314115,
// -71.104141 42.314154,
// -71.104128 42.314211,
// -71.104118 42.314269,
// -71.104111 42.314327,
// -71.104107 42.314385,
// -71.104105 42.314443,
// -71.104106 42.314500,
// -71.104109 42.314558,
// -71.104116 42.314616,
// -71.104125 42.314674,
// -71.104137 42.314731,
// -71.104149 42.314771,
// -71.104159 42.314808,
// -71.104251 42.315128,
// -71.104117 42.315073,
// -71.104080 42.315134,
// -71.104043 42.315119,
// -71.104019 42.315183,
// -71.103873 42.315114,
// -71.103844 42.315100,
// -71.103831 42.315094,
// -71.103739 42.315054,
// -71.103544 42.315260,
// -71.103343 42.315164,
// -71.103258 42.315226,
// -71.103223 42.315251,
// -71.103188 42.315277)),
// ((
// -71.104363 42.315113,
// -71.104358 42.315121,
// -71.104344 42.315067,
// -71.104385 42.315079,
// -71.104363 42.315113
// ))
// )'::geometry, 6), 'hex'
// );
val data = parseHex(
"c600020128a7cbe7439ab8ad283426de03f905cc09b204fa059307810993049904e504a505d8018d02f103671e5fb3015fab01e70bf803164e1a721" +
"4740e7408740474017205740d74117417721750134ab70180058c026d4a7a4a1d308001a40289013a1b1a0bb8014f86039c039203bf01aa017c463246340105ad12c7020a1" +
"01c6b51182c44"
)
val c = SimpleGeometryConsumer()
Twkb.parse(data, c)
assertEquals<List<List<List<Vec<Untyped>>?>?>?>(
optionalListOf( // polygons
optionalListOf( // polygon
optionalListOf( // ring
p(-71.103188, 42.315277),
p(-71.103162, 42.315296),
p(-71.102923, 42.314915),
p(-71.102309, 42.315196),
p(-71.101928, 42.314738),
p(-71.102505, 42.314472),
p(-71.102774, 42.314165),
p(-71.103113, 42.314273),
p(-71.103248, 42.314024),
p(-71.1033, 42.314039),
p(-71.103348, 42.313949),
p(-71.103396, 42.313863),
p(-71.104152, 42.314115),
p(-71.104141, 42.314154),
p(-71.104128, 42.314211),
p(-71.104118, 42.314269),
p(-71.104111, 42.314327),
p(-71.104107, 42.314385),
p(-71.104105, 42.314443),
p(-71.104106, 42.3145),
p(-71.104109, 42.314558),
p(-71.104116, 42.314616),
p(-71.104125, 42.314674),
p(-71.104137, 42.314731),
p(-71.104149, 42.314771),
p(-71.104159, 42.314808),
p(-71.104251, 42.315128),
p(-71.104117, 42.315073),
p(-71.10408, 42.315134),
p(-71.104043, 42.315119),
p(-71.104019, 42.315183),
p(-71.103873, 42.315114),
p(-71.103844, 42.3151),
p(-71.103831, 42.315094),
p(-71.103739, 42.315054),
p(-71.103544, 42.31526),
p(-71.103343, 42.315164),
p(-71.103258, 42.315226),
p(-71.103223, 42.315251),
p(-71.103188, 42.315277)
) // ring
), // polygon
optionalListOf( // polygon
optionalListOf( // ring
p(-71.104363, 42.315113),
p(-71.104358, 42.315121),
p(-71.104344, 42.315067),
p(-71.104385, 42.315079),
p(-71.104363, 42.315113)
) // ring
) // polygon
), // polygons
c.multiPolygon
)
}