This is an automated email from the ASF dual-hosted git repository.
jiayu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/sedona-testing.git
The following commit(s) were added to refs/heads/main by this push:
new cafe46a Add parsing example files (#5)
cafe46a is described below
commit cafe46a926d16759f5e507bb2456b9ab3031dab1
Author: Dewey Dunnington <[email protected]>
AuthorDate: Sat Jun 7 18:55:40 2025 -0500
Add parsing example files (#5)
* add example parsing
* first go
* fix big endian empties
* Update data/parsing/README.md
Co-authored-by: John Bampton <[email protected]>
* Update data/parsing/README.md
Co-authored-by: John Bampton <[email protected]>
* Update data/parsing/README.md
Co-authored-by: John Bampton <[email protected]>
* fix typo
* ignore trailing whitespace in tsvs
* indent all the things
---------
Co-authored-by: John Bampton <[email protected]>
---
.pre-commit-config.yaml | 1 +
data/parsing/README.md | 33 ++++++
data/parsing/example-ewkb-be.tsv | 137 +++++++++++++++++++++
data/parsing/example-ewkb-le.tsv | 137 +++++++++++++++++++++
data/parsing/example-gen.R | 58 +++++++++
data/parsing/example-gen.py | 88 ++++++++++++++
data/parsing/example-wkb-be.tsv | 137 +++++++++++++++++++++
data/parsing/example-wkb-le.tsv | 137 +++++++++++++++++++++
data/parsing/example-wkt.tsv | 137 +++++++++++++++++++++
data/parsing/example.yaml | 249 +++++++++++++++++++++++++++++++++++++++
10 files changed, 1114 insertions(+)
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index 3115456..4e4b393 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -67,6 +67,7 @@ repos:
- id: mixed-line-ending
- id: trailing-whitespace
args: [--markdown-linebreak-ext=md]
+ exclude_types: [tsv]
- repo: https://github.com/rhysd/actionlint
rev: v1.7.7
hooks:
diff --git a/data/parsing/README.md b/data/parsing/README.md
new file mode 100644
index 0000000..6d014f3
--- /dev/null
+++ b/data/parsing/README.md
@@ -0,0 +1,33 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+
+# WKT and WKB Parsing Test Files
+
+These files are intended primarily as tests for WKT and WKB parsing
+and formatting, and cover the full matrix of geometry types, dimensions,
+big/little endian, and extended/ISO well-known binary.
+
+- `example.yaml`: The source from which the other files in this directory are
derived. This is derived from the [GeoSpatial test files in the Parquet testing
repo](https://github.com/apache/parquet-testing/tree/master/data/geospatial).
+- `example-wkt.tsv`: A tab-separated values file with columns `id`, `group`,
and `geometry`, where geometry is formatted as well-known text.
+- `example-wkb-le.tsv`: A tab-separated values file with columns `id`,
`group`, and `geometry`, where geometry is formatted as little-endian ISO
well-known binary.
+- `example-wkb-be.tsv`: A tab-separated values file with columns `id`,
`group`, and `geometry`, where geometry is formatted as big-endian ISO
well-known binary.
+- `example-ewkb-le.tsv`: A tab-separated values file with columns `id`,
`group`, and `geometry`, where geometry is formatted as little-endian ISO
well-known binary (EWKB).
+- `example-ewkb-be.tsv`: A tab-separated values file with columns `id`,
`group`, and `geometry`, where geometry is formatted as big-endian extended
well-known binary (EWKB).
+
+This directory also contains the files used to generate the `.tsv` formatted
versions (`example-gen.py` and `example-gen.R`).
diff --git a/data/parsing/example-ewkb-be.tsv b/data/parsing/example-ewkb-be.tsv
new file mode 100644
index 0000000..37e0621
--- /dev/null
+++ b/data/parsing/example-ewkb-be.tsv
@@ -0,0 +1,137 @@
+id group geometry
+0 point 0000000001403E0000000000004024000000000000
+1 point 000000000140440000000000004034000000000000
+2 point NA
+3 point 00000000017FF80000000000007FF8000000000000
+4 linestring
000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+5 linestring
000000000200000003404400000000000040340000000000004034000000000000404400000000000040490000000000004049000000000000
+6 linestring NA
+7 linestring 000000000200000000
+8 polygon
00000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+9 polygon
000000000300000002000000054041800000000000402400000000000040468000000000004046800000000000402E00000000000040440000000000004024000000000000403400000000000040418000000000004024000000000000000000044034000000000000403E00000000000040418000000000004041800000000000403E00000000000040340000000000004034000000000000403E000000000000
+10 polygon NA
+11 polygon 000000000300000000
+12 multipoint
0000000004000000010000000001403E0000000000004024000000000000
+13 multipoint
00000000040000000400000000014024000000000000404400000000000000000000014044000000000000403E0000000000000000000001403400000000000040340000000000000000000001403E0000000000004024000000000000
+14 multipoint NA
+15 multipoint 000000000400000000
+16 multilinestring
000000000500000001000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+17 multilinestring
00000000050000000200000000020000000340240000000000004024000000000000403400000000000040340000000000004024000000000000404400000000000000000000020000000440440000000000004044000000000000403E000000000000403E00000000000040440000000000004034000000000000403E0000000000004024000000000000
+18 multilinestring NA
+19 multilinestring 000000000500000000
+20 multipolygon
00000000060000000100000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+21 multipolygon
00000000060000000200000000030000000100000004403E00000000000040340000000000004046800000000000404400000000000040240000000000004044000000000000403E000000000000403400000000000000000000030000000100000005402E0000000000004014000000000000404400000000000040240000000000004024000000000000403400000000000040140000000000004024000000000000402E0000000000004014000000000000
+22 multipolygon
0000000006000000020000000003000000010000000440440000000000004044000000000000403400000000000040468000000000004046800000000000403E0000000000004044000000000000404400000000000000000000030000000200000006403400000000000040418000000000004024000000000000403E00000000000040240000000000004024000000000000403E0000000000004014000000000000404680000000000040340000000000004034000000000000404180000000000000000004403E00000000000040340000000000004034000000000000402E00000000000040340000000000
[...]
+23 multipolygon NA
+24 multipolygon 000000000600000000
+25 geometrycollection
0000000007000000010000000001403E0000000000004024000000000000
+26 geometrycollection
000000000700000001000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+27 geometrycollection
00000000070000000100000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+28 geometrycollection
0000000007000000010000000004000000010000000001403E0000000000004024000000000000
+29 geometrycollection
000000000700000001000000000500000001000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+30 geometrycollection
00000000070000000100000000060000000100000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+31 geometrycollection
0000000007000000060000000001403E0000000000004024000000000000000000000200000003403E00000000000040240000000000004024000000000000403E0000000000004044000000000000404400000000000000000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E00000000000040240000000000000000000004000000010000000001403E0000000000004024000000000000000000000500000001000000000200000003403E0000000000
[...]
+32 geometrycollection NA
+33 geometrycollection 000000000700000000
+34 point-z 0080000001403E00000000000040240000000000004044000000000000
+35 point-z 008000000140440000000000004034000000000000404E000000000000
+36 point-z NA
+37 point-z 00800000017FF80000000000007FF80000000000007FF8000000000000
+38 linestring-z
008000000200000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+39 linestring-z
00800000020000000340440000000000004034000000000000404E00000000000040340000000000004044000000000000404E000000000000404900000000000040490000000000004059000000000000
+40 linestring-z NA
+41 linestring-z 008000000200000000
+42 polygon-z
00800000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+43 polygon-z
00800000030000000200000005404180000000000040240000000000004046800000000000404680000000000040468000000000004056800000000000402E0000000000004044000000000000404B80000000000040240000000000004034000000000000403E000000000000404180000000000040240000000000004046800000000000000000044034000000000000403E0000000000004049000000000000404180000000000040418000000000004051800000000000403E000000000000403400000000000040490000000000004034000000000000403E0000000000004049000000000000
+44 polygon-z NA
+45 polygon-z 008000000300000000
+46 multipoint-z
0080000004000000010080000001403E00000000000040240000000000004044000000000000
+47 multipoint-z
008000000400000004008000000140240000000000004044000000000000404900000000000000800000014044000000000000403E000000000000405180000000000000800000014034000000000000403400000000000040440000000000000080000001403E00000000000040240000000000004044000000000000
+48 multipoint-z NA
+49 multipoint-z 008000000400000000
+50 multilinestring-z
008000000500000001008000000200000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+51 multilinestring-z
008000000500000002008000000200000003402400000000000040240000000000004034000000000000403400000000000040340000000000004044000000000000402400000000000040440000000000004049000000000000008000000200000004404400000000000040440000000000004054000000000000403E000000000000403E000000000000404E00000000000040440000000000004034000000000000404E000000000000403E00000000000040240000000000004044000000000000
+52 multilinestring-z NA
+53 multilinestring-z 008000000500000000
+54 multipolygon-z
00800000060000000100800000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+55 multipolygon-z
00800000060000000200800000030000000100000004403E00000000000040340000000000004049000000000000404680000000000040440000000000004055400000000000402400000000000040440000000000004049000000000000403E0000000000004034000000000000404900000000000000800000030000000100000005402E0000000000004014000000000000403400000000000040440000000000004024000000000000404900000000000040240000000000004034000000000000403E00000000000040140000000000004024000000000000402E000000000000402E0000000000004014
[...]
+56 multipolygon-z
008000000600000002008000000300000001000000044044000000000000404400000000000040540000000000004034000000000000404680000000000040504000000000004046800000000000403E0000000000004052C000000000004044000000000000404400000000000040540000000000000080000003000000020000000640340000000000004041800000000000404B8000000000004024000000000000403E0000000000004044000000000000402400000000000040240000000000004034000000000000403E0000000000004014000000000000404180000000000040468000000000004034
[...]
+57 multipolygon-z NA
+58 multipolygon-z 008000000600000000
+59 geometrycollection-z
0080000007000000010080000001403E00000000000040240000000000004044000000000000
+60 geometrycollection-z
008000000700000001008000000200000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+61 geometrycollection-z
00800000070000000100800000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+62 geometrycollection-z
0080000007000000010080000004000000010080000001403E00000000000040240000000000004044000000000000
+63 geometrycollection-z
008000000700000001008000000500000001008000000200000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+64 geometrycollection-z
00800000070000000100800000060000000100800000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+65 geometrycollection-z
0080000007000000060080000001403E00000000000040240000000000004044000000000000008000000200000003403E000000000000402400000000000040440000000000004024000000000000403E000000000000404400000000000040440000000000004044000000000000405400000000000000800000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000
[...]
+66 geometrycollection-z NA
+67 geometrycollection-z 008000000700000000
+68 point-m 0040000001403E00000000000040240000000000004072C00000000000
+69 point-m 0040000001404400000000000040340000000000004089000000000000
+70 point-m NA
+71 point-m 00400000017FF80000000000007FF80000000000007FF8000000000000
+72 linestring-m
004000000200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+73 linestring-m
0040000002000000034044000000000000403400000000000040890000000000004034000000000000404400000000000040890000000000004049000000000000404900000000000040A3880000000000
+74 linestring-m NA
+75 linestring-m 004000000200000000
+76 polygon-m
00400000030000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+77 polygon-m
00400000030000000200000005404180000000000040240000000000004075E0000000000040468000000000004046800000000000409FA40000000000402E00000000000040440000000000004082C00000000000402400000000000040340000000000004069000000000000404180000000000040240000000000004075E00000000000000000044034000000000000403E0000000000004082C00000000000404180000000000040418000000000004093240000000000403E00000000000040340000000000004082C000000000004034000000000000403E0000000000004082C00000000000
+78 polygon-m NA
+79 polygon-m 004000000300000000
+80 multipoint-m
0040000004000000010040000001403E00000000000040240000000000004072C00000000000
+81 multipoint-m
004000000400000004004000000140240000000000004044000000000000407900000000000000400000014044000000000000403E0000000000004092C0000000000000400000014034000000000000403400000000000040790000000000000040000001403E00000000000040240000000000004072C00000000000
+82 multipoint-m NA
+83 multipoint-m 004000000400000000
+84 multilinestring-m
004000000500000001004000000200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+85 multilinestring-m
004000000500000002004000000200000003402400000000000040240000000000004059000000000000403400000000000040340000000000004079000000000000402400000000000040440000000000004079000000000000004000000200000004404400000000000040440000000000004099000000000000403E000000000000403E000000000000408C200000000000404400000000000040340000000000004089000000000000403E00000000000040240000000000004072C00000000000
+86 multilinestring-m NA
+87 multilinestring-m 004000000500000000
+88 multipolygon-m
00400000060000000100400000030000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+89 multipolygon-m
00400000060000000200400000030000000100000004403E00000000000040340000000000004082C0000000000040468000000000004044000000000000409C200000000000402400000000000040440000000000004079000000000000403E00000000000040340000000000004082C0000000000000400000030000000100000005402E00000000000040140000000000004052C00000000000404400000000000040240000000000004079000000000000402400000000000040340000000000004069000000000000401400000000000040240000000000004049000000000000402E0000000000004014
[...]
+90 multipolygon-m
0040000006000000020040000003000000010000000440440000000000004044000000000000409900000000000040340000000000004046800000000000408C2000000000004046800000000000403E000000000000409518000000000040440000000000004044000000000000409900000000000000400000030000000200000006403400000000000040418000000000004085E000000000004024000000000000403E0000000000004072C00000000000402400000000000040240000000000004059000000000000403E00000000000040140000000000004062C0000000000040468000000000004034
[...]
+91 multipolygon-m NA
+92 multipolygon-m 004000000600000000
+93 geometrycollection-m
0040000007000000010040000001403E00000000000040240000000000004072C00000000000
+94 geometrycollection-m
004000000700000001004000000200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+95 geometrycollection-m
00400000070000000100400000030000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+96 geometrycollection-m
0040000007000000010040000004000000010040000001403E00000000000040240000000000004072C00000000000
+97 geometrycollection-m
004000000700000001004000000500000001004000000200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+98 geometrycollection-m
00400000070000000100400000060000000100400000030000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+99 geometrycollection-m
0040000007000000060040000001403E00000000000040240000000000004072C00000000000004000000200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C0000000000040440000000000004044000000000000409900000000000000400000030000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000
[...]
+100 geometrycollection-m NA
+101 geometrycollection-m 004000000700000000
+102 point-zm
00C0000001403E000000000000402400000000000040440000000000004072C00000000000
+103 point-zm
00C000000140440000000000004034000000000000404E0000000000004089000000000000
+104 point-zm NA
+105 point-zm
00C00000017FF80000000000007FF80000000000007FF80000000000007FF8000000000000
+106 linestring-zm
00C000000200000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+107 linestring-zm
00C00000020000000340440000000000004034000000000000404E000000000000408900000000000040340000000000004044000000000000404E000000000000408900000000000040490000000000004049000000000000405900000000000040A3880000000000
+108 linestring-zm NA
+109 linestring-zm 00C000000200000000
+110 polygon-zm
00C00000030000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+111 polygon-zm
00C000000300000002000000054041800000000000402400000000000040468000000000004075E00000000000404680000000000040468000000000004056800000000000409FA40000000000402E0000000000004044000000000000404B8000000000004082C0000000000040240000000000004034000000000000403E00000000000040690000000000004041800000000000402400000000000040468000000000004075E00000000000000000044034000000000000403E00000000000040490000000000004082C0000000000040418000000000004041800000000000405180000000000040932400000
[...]
+112 polygon-zm NA
+113 polygon-zm 00C000000300000000
+114 multipoint-zm
00C00000040000000100C0000001403E000000000000402400000000000040440000000000004072C00000000000
+115 multipoint-zm
00C00000040000000400C0000001402400000000000040440000000000004049000000000000407900000000000000C00000014044000000000000403E00000000000040518000000000004092C0000000000000C0000001403400000000000040340000000000004044000000000000407900000000000000C0000001403E000000000000402400000000000040440000000000004072C00000000000
+116 multipoint-zm NA
+117 multipoint-zm 00C000000400000000
+118 multilinestring-zm
00C00000050000000100C000000200000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+119 multilinestring-zm
00C00000050000000200C00000020000000340240000000000004024000000000000403400000000000040590000000000004034000000000000403400000000000040440000000000004079000000000000402400000000000040440000000000004049000000000000407900000000000000C0000002000000044044000000000000404400000000000040540000000000004099000000000000403E000000000000403E000000000000404E000000000000408C20000000000040440000000000004034000000000000404E0000000000004089000000000000403E000000000000402400000000000
[...]
+120 multilinestring-zm NA
+121 multilinestring-zm 00C000000500000000
+122 multipolygon-zm
00C00000060000000100C00000030000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+123 multipolygon-zm
00C00000060000000200C00000030000000100000004403E000000000000403400000000000040490000000000004082C00000000000404680000000000040440000000000004055400000000000409C2000000000004024000000000000404400000000000040490000000000004079000000000000403E000000000000403400000000000040490000000000004082C0000000000000C00000030000000100000005402E000000000000401400000000000040340000000000004052C000000000004044000000000000402400000000000040490000000000004079000000000000402400000000000040
[...]
+124 multipolygon-zm
00C00000060000000200C000000300000001000000044044000000000000404400000000000040540000000000004099000000000000403400000000000040468000000000004050400000000000408C2000000000004046800000000000403E0000000000004052C000000000004095180000000000404400000000000040440000000000004054000000000000409900000000000000C0000003000000020000000640340000000000004041800000000000404B8000000000004085E000000000004024000000000000403E00000000000040440000000000004072C00000000000402400000000000040
[...]
+125 multipolygon-zm NA
+126 multipolygon-zm 00C000000600000000
+127 geometrycollection-zm
00C00000070000000100C0000001403E000000000000402400000000000040440000000000004072C00000000000
+128 geometrycollection-zm
00C00000070000000100C000000200000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+129 geometrycollection-zm
00C00000070000000100C00000030000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+130 geometrycollection-zm
00C00000070000000100C00000040000000100C0000001403E000000000000402400000000000040440000000000004072C00000000000
+131 geometrycollection-zm
00C00000070000000100C00000050000000100C000000200000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+132 geometrycollection-zm
00C00000070000000100C00000060000000100C00000030000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+133 geometrycollection-zm
00C00000070000000600C0000001403E000000000000402400000000000040440000000000004072C0000000000000C000000200000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000000C00000030000000100000005403E000000000000402400000000000040440000000000004072C0000000000040440000000000004044000000000000405400000000000040990000000000004034000000
[...]
+134 geometrycollection-zm NA
+135 geometrycollection-zm 00C000000700000000
diff --git a/data/parsing/example-ewkb-le.tsv b/data/parsing/example-ewkb-le.tsv
new file mode 100644
index 0000000..8dcb56b
--- /dev/null
+++ b/data/parsing/example-ewkb-le.tsv
@@ -0,0 +1,137 @@
+id group geometry
+0 point 01010000000000000000003E400000000000002440
+1 point 010100000000000000000044400000000000003440
+2 point NA
+3 point 0101000000000000000000F87F000000000000F87F
+4 linestring
0102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+5 linestring
010200000003000000000000000000444000000000000034400000000000003440000000000000444000000000000049400000000000004940
+6 linestring NA
+7 linestring 010200000000000000
+8 polygon
010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+9 polygon
0103000000020000000500000000000000008041400000000000002440000000000080464000000000008046400000000000002E40000000000000444000000000000024400000000000003440000000000080414000000000000024400400000000000000000034400000000000003E40000000000080414000000000008041400000000000003E40000000000000344000000000000034400000000000003E40
+10 polygon NA
+11 polygon 010300000000000000
+12 multipoint
01040000000100000001010000000000000000003E400000000000002440
+13 multipoint
010400000004000000010100000000000000000024400000000000004440010100000000000000000044400000000000003E4001010000000000000000003440000000000000344001010000000000000000003E400000000000002440
+14 multipoint NA
+15 multipoint 010400000000000000
+16 multilinestring
0105000000010000000102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+17 multilinestring
010500000002000000010200000003000000000000000000244000000000000024400000000000003440000000000000344000000000000024400000000000004440010200000004000000000000000000444000000000000044400000000000003E400000000000003E40000000000000444000000000000034400000000000003E400000000000002440
+18 multilinestring NA
+19 multilinestring 010500000000000000
+20 multipolygon
010600000001000000010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+21 multipolygon
010600000002000000010300000001000000040000000000000000003E40000000000000344000000000008046400000000000004440000000000000244000000000000044400000000000003E400000000000003440010300000001000000050000000000000000002E4000000000000014400000000000004440000000000000244000000000000024400000000000003440000000000000144000000000000024400000000000002E400000000000001440
+22 multipolygon
01060000000200000001030000000100000004000000000000000000444000000000000044400000000000003440000000000080464000000000008046400000000000003E4000000000000044400000000000004440010300000002000000060000000000000000003440000000000080414000000000000024400000000000003E40000000000000244000000000000024400000000000003E4000000000000014400000000000804640000000000000344000000000000034400000000000804140040000000000000000003E40000000000000344000000000000034400000000000002E4000000000000034
[...]
+23 multipolygon NA
+24 multipolygon 010600000000000000
+25 geometrycollection
01070000000100000001010000000000000000003E400000000000002440
+26 geometrycollection
0107000000010000000102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+27 geometrycollection
010700000001000000010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+28 geometrycollection
01070000000100000001040000000100000001010000000000000000003E400000000000002440
+29 geometrycollection
0107000000010000000105000000010000000102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+30 geometrycollection
010700000001000000010600000001000000010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+31 geometrycollection
01070000000600000001010000000000000000003E4000000000000024400102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E40000000000000244001040000000100000001010000000000000000003E4000000000000024400105000000010000000102000000030000000000000000003E
[...]
+32 geometrycollection NA
+33 geometrycollection 010700000000000000
+34 point-z 01010000800000000000003E4000000000000024400000000000004440
+35 point-z 0101000080000000000000444000000000000034400000000000004E40
+36 point-z NA
+37 point-z 0101000080000000000000F87F000000000000F87F000000000000F87F
+38 linestring-z
0102000080030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+39 linestring-z
010200008003000000000000000000444000000000000034400000000000004E40000000000000344000000000000044400000000000004E40000000000000494000000000000049400000000000005940
+40 linestring-z NA
+41 linestring-z 010200008000000000
+42 polygon-z
010300008001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+43 polygon-z
010300008002000000050000000000000000804140000000000000244000000000008046400000000000804640000000000080464000000000008056400000000000002E4000000000000044400000000000804B40000000000000244000000000000034400000000000003E400000000000804140000000000000244000000000008046400400000000000000000034400000000000003E4000000000000049400000000000804140000000000080414000000000008051400000000000003E400000000000003440000000000000494000000000000034400000000000003E400000000000004940
+44 polygon-z NA
+45 polygon-z 010300008000000000
+46 multipoint-z
01040000800100000001010000800000000000003E4000000000000024400000000000004440
+47 multipoint-z
0104000080040000000101000080000000000000244000000000000044400000000000004940010100008000000000000044400000000000003E400000000000805140010100008000000000000034400000000000003440000000000000444001010000800000000000003E4000000000000024400000000000004440
+48 multipoint-z NA
+49 multipoint-z 010400008000000000
+50 multilinestring-z
0105000080010000000102000080030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+51 multilinestring-z
0105000080020000000102000080030000000000000000002440000000000000244000000000000034400000000000003440000000000000344000000000000044400000000000002440000000000000444000000000000049400102000080040000000000000000004440000000000000444000000000000054400000000000003E400000000000003E400000000000004E40000000000000444000000000000034400000000000004E400000000000003E4000000000000024400000000000004440
+52 multilinestring-z NA
+53 multilinestring-z 010500008000000000
+54 multipolygon-z
010600008001000000010300008001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+55 multipolygon-z
010600008002000000010300008001000000040000000000000000003E40000000000000344000000000000049400000000000804640000000000000444000000000004055400000000000002440000000000000444000000000000049400000000000003E4000000000000034400000000000004940010300008001000000050000000000000000002E4000000000000014400000000000003440000000000000444000000000000024400000000000004940000000000000244000000000000034400000000000003E40000000000000144000000000000024400000000000002E400000000000002E400000
[...]
+56 multipolygon-z
0106000080020000000103000080010000000400000000000000000044400000000000004440000000000000544000000000000034400000000000804640000000000040504000000000008046400000000000003E400000000000C0524000000000000044400000000000004440000000000000544001030000800200000006000000000000000000344000000000008041400000000000804B4000000000000024400000000000003E4000000000000044400000000000002440000000000000244000000000000034400000000000003E400000000000001440000000000080414000000000008046400000
[...]
+57 multipolygon-z NA
+58 multipolygon-z 010600008000000000
+59 geometrycollection-z
01070000800100000001010000800000000000003E4000000000000024400000000000004440
+60 geometrycollection-z
0107000080010000000102000080030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+61 geometrycollection-z
010700008001000000010300008001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+62 geometrycollection-z
01070000800100000001040000800100000001010000800000000000003E4000000000000024400000000000004440
+63 geometrycollection-z
0107000080010000000105000080010000000102000080030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+64 geometrycollection-z
010700008001000000010600008001000000010300008001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+65 geometrycollection-z
01070000800600000001010000800000000000003E40000000000000244000000000000044400102000080030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440010300008001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E40000000000000
[...]
+66 geometrycollection-z NA
+67 geometrycollection-z 010700008000000000
+68 point-m 01010000400000000000003E4000000000000024400000000000C07240
+69 point-m 0101000040000000000000444000000000000034400000000000008940
+70 point-m NA
+71 point-m 0101000040000000000000F87F000000000000F87F000000000000F87F
+72 linestring-m
0102000040030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+73 linestring-m
01020000400300000000000000000044400000000000003440000000000000894000000000000034400000000000004440000000000000894000000000000049400000000000004940000000000088A340
+74 linestring-m NA
+75 linestring-m 010200004000000000
+76 polygon-m
010300004001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+77 polygon-m
01030000400200000005000000000000000080414000000000000024400000000000E07540000000000080464000000000008046400000000000A49F400000000000002E4000000000000044400000000000C08240000000000000244000000000000034400000000000006940000000000080414000000000000024400000000000E075400400000000000000000034400000000000003E400000000000C082400000000000804140000000000080414000000000002493400000000000003E4000000000000034400000000000C0824000000000000034400000000000003E400000000000C08240
+78 polygon-m NA
+79 polygon-m 010300004000000000
+80 multipoint-m
01040000400100000001010000400000000000003E4000000000000024400000000000C07240
+81 multipoint-m
0104000040040000000101000040000000000000244000000000000044400000000000007940010100004000000000000044400000000000003E400000000000C09240010100004000000000000034400000000000003440000000000000794001010000400000000000003E4000000000000024400000000000C07240
+82 multipoint-m NA
+83 multipoint-m 010400004000000000
+84 multilinestring-m
0105000040010000000102000040030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+85 multilinestring-m
0105000040020000000102000040030000000000000000002440000000000000244000000000000059400000000000003440000000000000344000000000000079400000000000002440000000000000444000000000000079400102000040040000000000000000004440000000000000444000000000000099400000000000003E400000000000003E400000000000208C400000000000004440000000000000344000000000000089400000000000003E4000000000000024400000000000C07240
+86 multilinestring-m NA
+87 multilinestring-m 010500004000000000
+88 multipolygon-m
010600004001000000010300004001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+89 multipolygon-m
010600004002000000010300004001000000040000000000000000003E4000000000000034400000000000C08240000000000080464000000000000044400000000000209C400000000000002440000000000000444000000000000079400000000000003E4000000000000034400000000000C08240010300004001000000050000000000000000002E4000000000000014400000000000C052400000000000004440000000000000244000000000000079400000000000002440000000000000344000000000000069400000000000001440000000000000244000000000000049400000000000002E400000
[...]
+90 multipolygon-m
01060000400200000001030000400100000004000000000000000000444000000000000044400000000000009940000000000000344000000000008046400000000000208C4000000000008046400000000000003E40000000000018954000000000000044400000000000004440000000000000994001030000400200000006000000000000000000344000000000008041400000000000E0854000000000000024400000000000003E400000000000C072400000000000002440000000000000244000000000000059400000000000003E4000000000000014400000000000C0624000000000008046400000
[...]
+91 multipolygon-m NA
+92 multipolygon-m 010600004000000000
+93 geometrycollection-m
01070000400100000001010000400000000000003E4000000000000024400000000000C07240
+94 geometrycollection-m
0107000040010000000102000040030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+95 geometrycollection-m
010700004001000000010300004001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+96 geometrycollection-m
01070000400100000001040000400100000001010000400000000000003E4000000000000024400000000000C07240
+97 geometrycollection-m
0107000040010000000105000040010000000102000040030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+98 geometrycollection-m
010700004001000000010600004001000000010300004001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+99 geometrycollection-m
01070000400600000001010000400000000000003E4000000000000024400000000000C072400102000040030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940010300004001000000050000000000000000003E4000000000000024400000000000C07240000000000000444000000000000044400000000000009940000000000000344000000000000044400000000000008940000000000000244000000000000034400000000000006940000000000000
[...]
+100 geometrycollection-m NA
+101 geometrycollection-m 010700004000000000
+102 point-zm
01010000C00000000000003E40000000000000244000000000000044400000000000C07240
+103 point-zm
01010000C0000000000000444000000000000034400000000000004E400000000000008940
+104 point-zm NA
+105 point-zm
01010000C0000000000000F87F000000000000F87F000000000000F87F000000000000F87F
+106 linestring-zm
01020000C0030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+107 linestring-zm
01020000C003000000000000000000444000000000000034400000000000004E400000000000008940000000000000344000000000000044400000000000004E400000000000008940000000000000494000000000000049400000000000005940000000000088A340
+108 linestring-zm NA
+109 linestring-zm 01020000C000000000
+110 polygon-zm
01030000C001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+111 polygon-zm
01030000C002000000050000000000000000804140000000000000244000000000008046400000000000E075400000000000804640000000000080464000000000008056400000000000A49F400000000000002E4000000000000044400000000000804B400000000000C08240000000000000244000000000000034400000000000003E4000000000000069400000000000804140000000000000244000000000008046400000000000E075400400000000000000000034400000000000003E4000000000000049400000000000C0824000000000008041400000000000804140000000000080514000000000002
[...]
+112 polygon-zm NA
+113 polygon-zm 01030000C000000000
+114 multipoint-zm
01040000C00100000001010000C00000000000003E40000000000000244000000000000044400000000000C07240
+115 multipoint-zm
01040000C00400000001010000C0000000000000244000000000000044400000000000004940000000000000794001010000C000000000000044400000000000003E4000000000008051400000000000C0924001010000C0000000000000344000000000000034400000000000004440000000000000794001010000C00000000000003E40000000000000244000000000000044400000000000C07240
+116 multipoint-zm NA
+117 multipoint-zm 01040000C000000000
+118 multilinestring-zm
01050000C00100000001020000C0030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+119 multilinestring-zm
01050000C00200000001020000C00300000000000000000024400000000000002440000000000000344000000000000059400000000000003440000000000000344000000000000044400000000000007940000000000000244000000000000044400000000000004940000000000000794001020000C00400000000000000000044400000000000004440000000000000544000000000000099400000000000003E400000000000003E400000000000004E400000000000208C40000000000000444000000000000034400000000000004E4000000000000089400000000000003E40000000000000244
[...]
+120 multilinestring-zm NA
+121 multilinestring-zm 01050000C000000000
+122 multipolygon-zm
01060000C00100000001030000C001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+123 multipolygon-zm
01060000C00200000001030000C001000000040000000000000000003E40000000000000344000000000000049400000000000C082400000000000804640000000000000444000000000004055400000000000209C4000000000000024400000000000004440000000000000494000000000000079400000000000003E40000000000000344000000000000049400000000000C0824001030000C001000000050000000000000000002E40000000000000144000000000000034400000000000C052400000000000004440000000000000244000000000000049400000000000007940000000000000244000
[...]
+124 multipolygon-zm
01060000C00200000001030000C0010000000400000000000000000044400000000000004440000000000000544000000000000099400000000000003440000000000080464000000000004050400000000000208C4000000000008046400000000000003E400000000000C052400000000000189540000000000000444000000000000044400000000000005440000000000000994001030000C00200000006000000000000000000344000000000008041400000000000804B400000000000E0854000000000000024400000000000003E4000000000000044400000000000C07240000000000000244000
[...]
+125 multipolygon-zm NA
+126 multipolygon-zm 01060000C000000000
+127 geometrycollection-zm
01070000C00100000001010000C00000000000003E40000000000000244000000000000044400000000000C07240
+128 geometrycollection-zm
01070000C00100000001020000C0030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+129 geometrycollection-zm
01070000C00100000001030000C001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+130 geometrycollection-zm
01070000C00100000001040000C00100000001010000C00000000000003E40000000000000244000000000000044400000000000C07240
+131 geometrycollection-zm
01070000C00100000001050000C00100000001020000C0030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+132 geometrycollection-zm
01070000C00100000001060000C00100000001030000C001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+133 geometrycollection-zm
01070000C00600000001010000C00000000000003E40000000000000244000000000000044400000000000C0724001020000C0030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C07240000000000000444000000000000044400000000000005440000000000000994001030000C001000000050000000000000000003E40000000000000244000000000000044400000000000C0724000000000000044400000000000004440000000000000544000000000000099400000000000
[...]
+134 geometrycollection-zm NA
+135 geometrycollection-zm 01070000C000000000
diff --git a/data/parsing/example-gen.R b/data/parsing/example-gen.R
new file mode 100644
index 0000000..e57c7c7
--- /dev/null
+++ b/data/parsing/example-gen.R
@@ -0,0 +1,58 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This generates the example-ewkb-*.tsv files. This is done in R because
+# the wk package for R includes an EWKB writer that faithfully translates
+# ZM EMPTY geometries from WKT to WKB with both endians.
+
+library(tidyverse)
+library(wk)
+library(yaml)
+
+examples <- yaml.load_file("data/parsing/example.yaml")
+
+wkb_example_hex_ewkb <- function(endian = 0x01) {
+ tibble(
+ group = names(examples),
+ geometry = examples |>
+ map(as.list)
+ ) |>
+ unnest_longer(geometry) |>
+ transmute(
+ id = 0:(n() - 1),
+ group,
+ geometry = geometry |>
+ wkt() |>
+ wk_handle(wkb_writer(endian = endian)) |>
+ unclass() |>
+ map(~ {
+ if (is.null(.x)) {
+ NA_character_
+ } else {
+ paste(PKI::raw2hex(.x), collapse = "")
+ }
+ }) |>
+ as.character() |>
+ str_to_upper()
+ )
+}
+
+wkb_example_hex_ewkb(endian = 0x01) |>
+ write_tsv("data/parsing/example-ewkb-le.tsv")
+
+wkb_example_hex_ewkb(endian = 0x00) |>
+ write_tsv("data/parsing/example-ewkb-be.tsv")
diff --git a/data/parsing/example-gen.py b/data/parsing/example-gen.py
new file mode 100644
index 0000000..72b4d4c
--- /dev/null
+++ b/data/parsing/example-gen.py
@@ -0,0 +1,88 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# This generates the example-wkt.tsv and example-wkb-*.tsv files. This is
+# done using geoarrow.pyarrow because it includes a WKB writer that
+# faithfully translates ZM EMPTY geometries from WKT to WKB. Shapely is
+# used to write big-endian WKB (where ZM EMPTY geometries are special-cased).
+
+from pathlib import Path
+
+import geoarrow.pyarrow as ga
+import shapely
+import yaml
+
+HERE = Path(__file__).parent
+
+if __name__ == "__main__":
+ with open(HERE / "example.yaml") as f:
+ examples = yaml.safe_load(f)
+
+ with open(HERE / "example-wkt.tsv", "w") as f:
+ f.write("id\tgroup\tgeometry\n")
+ row = 0
+ for group_name, geometries_wkt in examples.items():
+ for geometry in geometries_wkt:
+ geometry = "" if geometry is None else geometry
+ f.write(f"{row}\t{group_name}\t{geometry}\n")
+ row += 1
+
+ with open(HERE / "example-wkb-le.tsv", "w") as f:
+ f.write("id\tgroup\tgeometry\n")
+ row = 0
+ for group_name, geometries_wkt in examples.items():
+ for geometry in geometries_wkt:
+ if geometry is not None:
+ geometry_wkb =
bytes(ga.as_wkb([geometry]).storage[0].as_py())
+ else:
+ geometry_wkb = b""
+
+ f.write(f"{row}\t{group_name}\t{geometry_wkb.hex().upper()}\n")
+ row += 1
+
+ # GEOS/Shapely can't roundtrip empty geometries that aren't just XY
+ BE_OVERRIDES = {
+ "MULTIPOINT Z EMPTY": "00000003EC00000000",
+ "MULTILINESTRING Z EMPTY": "00000003ED00000000",
+ "MULTIPOLYGON Z EMPTY": "00000003EE00000000",
+ "GEOMETRYCOLLECTION Z EMPTY": "00000003EF00000000",
+ "MULTIPOINT M EMPTY": "00000007D400000000",
+ "MULTILINESTRING M EMPTY": "00000007D500000000",
+ "MULTIPOLYGON M EMPTY": "00000007D600000000",
+ "GEOMETRYCOLLECTION M EMPTY": "00000007D700000000",
+ "MULTIPOINT ZM EMPTY": "0000000BBC00000000",
+ "MULTILINESTRING ZM EMPTY": "0000000BBD00000000",
+ "MULTIPOLYGON ZM EMPTY": "0000000BBE00000000",
+ "GEOMETRYCOLLECTION ZM EMPTY": "0000000BBF00000000",
+ None: "",
+ }
+
+ with open(HERE / "example-wkb-be.tsv", "w") as f:
+ f.write("id\tgroup\tgeometry\n")
+ row = 0
+ for group_name, geometries_wkt in examples.items():
+ for geometry in geometries_wkt:
+ if geometry not in BE_OVERRIDES:
+ geom = shapely.from_wkt(geometry)
+ geometry_wkb = (
+ shapely.to_wkb(geom, flavor="iso",
byte_order=0).hex().upper()
+ )
+ else:
+ geometry_wkb = BE_OVERRIDES[geometry]
+
+ f.write(f"{row}\t{group_name}\t{geometry_wkb}\n")
+ row += 1
diff --git a/data/parsing/example-wkb-be.tsv b/data/parsing/example-wkb-be.tsv
new file mode 100644
index 0000000..4114ce8
--- /dev/null
+++ b/data/parsing/example-wkb-be.tsv
@@ -0,0 +1,137 @@
+id group geometry
+0 point 0000000001403E0000000000004024000000000000
+1 point 000000000140440000000000004034000000000000
+2 point
+3 point 00000000017FF80000000000007FF8000000000000
+4 linestring
000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+5 linestring
000000000200000003404400000000000040340000000000004034000000000000404400000000000040490000000000004049000000000000
+6 linestring
+7 linestring 000000000200000000
+8 polygon
00000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+9 polygon
000000000300000002000000054041800000000000402400000000000040468000000000004046800000000000402E00000000000040440000000000004024000000000000403400000000000040418000000000004024000000000000000000044034000000000000403E00000000000040418000000000004041800000000000403E00000000000040340000000000004034000000000000403E000000000000
+10 polygon
+11 polygon 000000000300000000
+12 multipoint
0000000004000000010000000001403E0000000000004024000000000000
+13 multipoint
00000000040000000400000000014024000000000000404400000000000000000000014044000000000000403E0000000000000000000001403400000000000040340000000000000000000001403E0000000000004024000000000000
+14 multipoint
+15 multipoint 000000000400000000
+16 multilinestring
000000000500000001000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+17 multilinestring
00000000050000000200000000020000000340240000000000004024000000000000403400000000000040340000000000004024000000000000404400000000000000000000020000000440440000000000004044000000000000403E000000000000403E00000000000040440000000000004034000000000000403E0000000000004024000000000000
+18 multilinestring
+19 multilinestring 000000000500000000
+20 multipolygon
00000000060000000100000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+21 multipolygon
00000000060000000200000000030000000100000004403E00000000000040340000000000004046800000000000404400000000000040240000000000004044000000000000403E000000000000403400000000000000000000030000000100000005402E0000000000004014000000000000404400000000000040240000000000004024000000000000403400000000000040140000000000004024000000000000402E0000000000004014000000000000
+22 multipolygon
0000000006000000020000000003000000010000000440440000000000004044000000000000403400000000000040468000000000004046800000000000403E0000000000004044000000000000404400000000000000000000030000000200000006403400000000000040418000000000004024000000000000403E00000000000040240000000000004024000000000000403E0000000000004014000000000000404680000000000040340000000000004034000000000000404180000000000000000004403E00000000000040340000000000004034000000000000402E00000000000040340000000000
[...]
+23 multipolygon
+24 multipolygon 000000000600000000
+25 geometrycollection
0000000007000000010000000001403E0000000000004024000000000000
+26 geometrycollection
000000000700000001000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+27 geometrycollection
00000000070000000100000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+28 geometrycollection
0000000007000000010000000004000000010000000001403E0000000000004024000000000000
+29 geometrycollection
000000000700000001000000000500000001000000000200000003403E00000000000040240000000000004024000000000000403E00000000000040440000000000004044000000000000
+30 geometrycollection
00000000070000000100000000060000000100000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E0000000000004024000000000000
+31 geometrycollection
0000000007000000060000000001403E0000000000004024000000000000000000000200000003403E00000000000040240000000000004024000000000000403E0000000000004044000000000000404400000000000000000000030000000100000005403E0000000000004024000000000000404400000000000040440000000000004034000000000000404400000000000040240000000000004034000000000000403E00000000000040240000000000000000000004000000010000000001403E0000000000004024000000000000000000000500000001000000000200000003403E0000000000
[...]
+32 geometrycollection
+33 geometrycollection 000000000700000000
+34 point-z 00000003E9403E00000000000040240000000000004044000000000000
+35 point-z 00000003E940440000000000004034000000000000404E000000000000
+36 point-z
+37 point-z 00000003E97FF80000000000007FF80000000000007FF8000000000000
+38 linestring-z
00000003EA00000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+39 linestring-z
00000003EA0000000340440000000000004034000000000000404E00000000000040340000000000004044000000000000404E000000000000404900000000000040490000000000004059000000000000
+40 linestring-z
+41 linestring-z 00000003EA00000000
+42 polygon-z
00000003EB0000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+43 polygon-z
00000003EB0000000200000005404180000000000040240000000000004046800000000000404680000000000040468000000000004056800000000000402E0000000000004044000000000000404B80000000000040240000000000004034000000000000403E000000000000404180000000000040240000000000004046800000000000000000044034000000000000403E0000000000004049000000000000404180000000000040418000000000004051800000000000403E000000000000403400000000000040490000000000004034000000000000403E0000000000004049000000000000
+44 polygon-z
+45 polygon-z 00000003EB00000000
+46 multipoint-z
00000003EC0000000100000003E9403E00000000000040240000000000004044000000000000
+47 multipoint-z
00000003EC0000000400000003E940240000000000004044000000000000404900000000000000000003E94044000000000000403E000000000000405180000000000000000003E940340000000000004034000000000000404400000000000000000003E9403E00000000000040240000000000004044000000000000
+48 multipoint-z
+49 multipoint-z 00000003EC00000000
+50 multilinestring-z
00000003ED0000000100000003EA00000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+51 multilinestring-z
00000003ED0000000200000003EA0000000340240000000000004024000000000000403400000000000040340000000000004034000000000000404400000000000040240000000000004044000000000000404900000000000000000003EA00000004404400000000000040440000000000004054000000000000403E000000000000403E000000000000404E00000000000040440000000000004034000000000000404E000000000000403E00000000000040240000000000004044000000000000
+52 multilinestring-z
+53 multilinestring-z 00000003ED00000000
+54 multipolygon-z
00000003EE0000000100000003EB0000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+55 multipolygon-z
00000003EE0000000200000003EB0000000100000004403E00000000000040340000000000004049000000000000404680000000000040440000000000004055400000000000402400000000000040440000000000004049000000000000403E0000000000004034000000000000404900000000000000000003EB0000000100000005402E0000000000004014000000000000403400000000000040440000000000004024000000000000404900000000000040240000000000004034000000000000403E00000000000040140000000000004024000000000000402E000000000000402E0000000000004014
[...]
+56 multipolygon-z
00000003EE0000000200000003EB00000001000000044044000000000000404400000000000040540000000000004034000000000000404680000000000040504000000000004046800000000000403E0000000000004052C0000000000040440000000000004044000000000000405400000000000000000003EB000000020000000640340000000000004041800000000000404B8000000000004024000000000000403E0000000000004044000000000000402400000000000040240000000000004034000000000000403E0000000000004014000000000000404180000000000040468000000000004034
[...]
+57 multipolygon-z
+58 multipolygon-z 00000003EE00000000
+59 geometrycollection-z
00000003EF0000000100000003E9403E00000000000040240000000000004044000000000000
+60 geometrycollection-z
00000003EF0000000100000003EA00000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+61 geometrycollection-z
00000003EF0000000100000003EB0000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+62 geometrycollection-z
00000003EF0000000100000003EC0000000100000003E9403E00000000000040240000000000004044000000000000
+63 geometrycollection-z
00000003EF0000000100000003ED0000000100000003EA00000003403E000000000000402400000000000040440000000000004024000000000000403E0000000000004044000000000000404400000000000040440000000000004054000000000000
+64 geometrycollection-z
00000003EF0000000100000003EE0000000100000003EB0000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000000040240000000000004044000000000000
+65 geometrycollection-z
00000003EF0000000600000003E9403E0000000000004024000000000000404400000000000000000003EA00000003403E000000000000402400000000000040440000000000004024000000000000403E000000000000404400000000000040440000000000004044000000000000405400000000000000000003EB0000000100000005403E0000000000004024000000000000404400000000000040440000000000004044000000000000405400000000000040340000000000004044000000000000404E00000000000040240000000000004034000000000000403E000000000000403E00000000
[...]
+66 geometrycollection-z
+67 geometrycollection-z 00000003EF00000000
+68 point-m 00000007D1403E00000000000040240000000000004072C00000000000
+69 point-m 00000007D1404400000000000040340000000000004089000000000000
+70 point-m
+71 point-m 00000007D17FF80000000000007FF80000000000007FF8000000000000
+72 linestring-m
00000007D200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+73 linestring-m
00000007D2000000034044000000000000403400000000000040890000000000004034000000000000404400000000000040890000000000004049000000000000404900000000000040A3880000000000
+74 linestring-m
+75 linestring-m 00000007D200000000
+76 polygon-m
00000007D30000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+77 polygon-m
00000007D30000000200000005404180000000000040240000000000004075E0000000000040468000000000004046800000000000409FA40000000000402E00000000000040440000000000004082C00000000000402400000000000040340000000000004069000000000000404180000000000040240000000000004075E00000000000000000044034000000000000403E0000000000004082C00000000000404180000000000040418000000000004093240000000000403E00000000000040340000000000004082C000000000004034000000000000403E0000000000004082C00000000000
+78 polygon-m
+79 polygon-m 00000007D300000000
+80 multipoint-m
00000007D40000000100000007D1403E00000000000040240000000000004072C00000000000
+81 multipoint-m
00000007D40000000400000007D140240000000000004044000000000000407900000000000000000007D14044000000000000403E0000000000004092C0000000000000000007D140340000000000004034000000000000407900000000000000000007D1403E00000000000040240000000000004072C00000000000
+82 multipoint-m
+83 multipoint-m 00000007D400000000
+84 multilinestring-m
00000007D50000000100000007D200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+85 multilinestring-m
00000007D50000000200000007D20000000340240000000000004024000000000000405900000000000040340000000000004034000000000000407900000000000040240000000000004044000000000000407900000000000000000007D200000004404400000000000040440000000000004099000000000000403E000000000000403E000000000000408C200000000000404400000000000040340000000000004089000000000000403E00000000000040240000000000004072C00000000000
+86 multilinestring-m
+87 multilinestring-m 00000007D500000000
+88 multipolygon-m
00000007D60000000100000007D30000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+89 multipolygon-m
00000007D60000000200000007D30000000100000004403E00000000000040340000000000004082C0000000000040468000000000004044000000000000409C200000000000402400000000000040440000000000004079000000000000403E00000000000040340000000000004082C0000000000000000007D30000000100000005402E00000000000040140000000000004052C00000000000404400000000000040240000000000004079000000000000402400000000000040340000000000004069000000000000401400000000000040240000000000004049000000000000402E0000000000004014
[...]
+90 multipolygon-m
00000007D60000000200000007D3000000010000000440440000000000004044000000000000409900000000000040340000000000004046800000000000408C2000000000004046800000000000403E000000000000409518000000000040440000000000004044000000000000409900000000000000000007D30000000200000006403400000000000040418000000000004085E000000000004024000000000000403E0000000000004072C00000000000402400000000000040240000000000004059000000000000403E00000000000040140000000000004062C0000000000040468000000000004034
[...]
+91 multipolygon-m
+92 multipolygon-m 00000007D600000000
+93 geometrycollection-m
00000007D70000000100000007D1403E00000000000040240000000000004072C00000000000
+94 geometrycollection-m
00000007D70000000100000007D200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+95 geometrycollection-m
00000007D70000000100000007D30000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+96 geometrycollection-m
00000007D70000000100000007D40000000100000007D1403E00000000000040240000000000004072C00000000000
+97 geometrycollection-m
00000007D70000000100000007D50000000100000007D200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C00000000000404400000000000040440000000000004099000000000000
+98 geometrycollection-m
00000007D70000000100000007D60000000100000007D30000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000000040240000000000004072C00000000000
+99 geometrycollection-m
00000007D70000000600000007D1403E00000000000040240000000000004072C0000000000000000007D200000003403E00000000000040240000000000004072C000000000004024000000000000403E0000000000004072C0000000000040440000000000004044000000000000409900000000000000000007D30000000100000005403E00000000000040240000000000004072C00000000000404400000000000040440000000000004099000000000000403400000000000040440000000000004089000000000000402400000000000040340000000000004069000000000000403E00000000
[...]
+100 geometrycollection-m
+101 geometrycollection-m 00000007D700000000
+102 point-zm
0000000BB9403E000000000000402400000000000040440000000000004072C00000000000
+103 point-zm
0000000BB940440000000000004034000000000000404E0000000000004089000000000000
+104 point-zm
+105 point-zm
0000000BB97FF80000000000007FF80000000000007FF80000000000007FF8000000000000
+106 linestring-zm
0000000BBA00000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+107 linestring-zm
0000000BBA0000000340440000000000004034000000000000404E000000000000408900000000000040340000000000004044000000000000404E000000000000408900000000000040490000000000004049000000000000405900000000000040A3880000000000
+108 linestring-zm
+109 linestring-zm 0000000BBA00000000
+110 polygon-zm
0000000BBB0000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+111 polygon-zm
0000000BBB00000002000000054041800000000000402400000000000040468000000000004075E00000000000404680000000000040468000000000004056800000000000409FA40000000000402E0000000000004044000000000000404B8000000000004082C0000000000040240000000000004034000000000000403E00000000000040690000000000004041800000000000402400000000000040468000000000004075E00000000000000000044034000000000000403E00000000000040490000000000004082C0000000000040418000000000004041800000000000405180000000000040932400000
[...]
+112 polygon-zm
+113 polygon-zm 0000000BBB00000000
+114 multipoint-zm
0000000BBC000000010000000BB9403E000000000000402400000000000040440000000000004072C00000000000
+115 multipoint-zm
0000000BBC000000040000000BB940240000000000004044000000000000404900000000000040790000000000000000000BB94044000000000000403E00000000000040518000000000004092C000000000000000000BB940340000000000004034000000000000404400000000000040790000000000000000000BB9403E000000000000402400000000000040440000000000004072C00000000000
+116 multipoint-zm
+117 multipoint-zm 0000000BBC00000000
+118 multilinestring-zm
0000000BBD000000010000000BBA00000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+119 multilinestring-zm
0000000BBD000000020000000BBA000000034024000000000000402400000000000040340000000000004059000000000000403400000000000040340000000000004044000000000000407900000000000040240000000000004044000000000000404900000000000040790000000000000000000BBA000000044044000000000000404400000000000040540000000000004099000000000000403E000000000000403E000000000000404E000000000000408C20000000000040440000000000004034000000000000404E0000000000004089000000000000403E000000000000402400000000000
[...]
+120 multilinestring-zm
+121 multilinestring-zm 0000000BBD00000000
+122 multipolygon-zm
0000000BBE000000010000000BBB0000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+123 multipolygon-zm
0000000BBE000000020000000BBB0000000100000004403E000000000000403400000000000040490000000000004082C00000000000404680000000000040440000000000004055400000000000409C2000000000004024000000000000404400000000000040490000000000004079000000000000403E000000000000403400000000000040490000000000004082C000000000000000000BBB0000000100000005402E000000000000401400000000000040340000000000004052C000000000004044000000000000402400000000000040490000000000004079000000000000402400000000000040
[...]
+124 multipolygon-zm
0000000BBE000000020000000BBB00000001000000044044000000000000404400000000000040540000000000004099000000000000403400000000000040468000000000004050400000000000408C2000000000004046800000000000403E0000000000004052C00000000000409518000000000040440000000000004044000000000000405400000000000040990000000000000000000BBB000000020000000640340000000000004041800000000000404B8000000000004085E000000000004024000000000000403E00000000000040440000000000004072C00000000000402400000000000040
[...]
+125 multipolygon-zm
+126 multipolygon-zm 0000000BBE00000000
+127 geometrycollection-zm
0000000BBF000000010000000BB9403E000000000000402400000000000040440000000000004072C00000000000
+128 geometrycollection-zm
0000000BBF000000010000000BBA00000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+129 geometrycollection-zm
0000000BBF000000010000000BBB0000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+130 geometrycollection-zm
0000000BBF000000010000000BBC000000010000000BB9403E000000000000402400000000000040440000000000004072C00000000000
+131 geometrycollection-zm
0000000BBF000000010000000BBD000000010000000BBA00000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C000000000004044000000000000404400000000000040540000000000004099000000000000
+132 geometrycollection-zm
0000000BBF000000010000000BBE000000010000000BBB0000000100000005403E000000000000402400000000000040440000000000004072C00000000000404400000000000040440000000000004054000000000000409900000000000040340000000000004044000000000000404E000000000000408900000000000040240000000000004034000000000000403E0000000000004069000000000000403E000000000000402400000000000040440000000000004072C00000000000
+133 geometrycollection-zm
0000000BBF000000060000000BB9403E000000000000402400000000000040440000000000004072C000000000000000000BBA00000003403E000000000000402400000000000040440000000000004072C000000000004024000000000000403E00000000000040440000000000004072C0000000000040440000000000004044000000000000405400000000000040990000000000000000000BBB0000000100000005403E000000000000402400000000000040440000000000004072C0000000000040440000000000004044000000000000405400000000000040990000000000004034000000
[...]
+134 geometrycollection-zm
+135 geometrycollection-zm 0000000BBF00000000
diff --git a/data/parsing/example-wkb-le.tsv b/data/parsing/example-wkb-le.tsv
new file mode 100644
index 0000000..1de533a
--- /dev/null
+++ b/data/parsing/example-wkb-le.tsv
@@ -0,0 +1,137 @@
+id group geometry
+0 point 01010000000000000000003E400000000000002440
+1 point 010100000000000000000044400000000000003440
+2 point
+3 point 0101000000000000000000F87F000000000000F87F
+4 linestring
0102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+5 linestring
010200000003000000000000000000444000000000000034400000000000003440000000000000444000000000000049400000000000004940
+6 linestring
+7 linestring 010200000000000000
+8 polygon
010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+9 polygon
0103000000020000000500000000000000008041400000000000002440000000000080464000000000008046400000000000002E40000000000000444000000000000024400000000000003440000000000080414000000000000024400400000000000000000034400000000000003E40000000000080414000000000008041400000000000003E40000000000000344000000000000034400000000000003E40
+10 polygon
+11 polygon 010300000000000000
+12 multipoint
01040000000100000001010000000000000000003E400000000000002440
+13 multipoint
010400000004000000010100000000000000000024400000000000004440010100000000000000000044400000000000003E4001010000000000000000003440000000000000344001010000000000000000003E400000000000002440
+14 multipoint
+15 multipoint 010400000000000000
+16 multilinestring
0105000000010000000102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+17 multilinestring
010500000002000000010200000003000000000000000000244000000000000024400000000000003440000000000000344000000000000024400000000000004440010200000004000000000000000000444000000000000044400000000000003E400000000000003E40000000000000444000000000000034400000000000003E400000000000002440
+18 multilinestring
+19 multilinestring 010500000000000000
+20 multipolygon
010600000001000000010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+21 multipolygon
010600000002000000010300000001000000040000000000000000003E40000000000000344000000000008046400000000000004440000000000000244000000000000044400000000000003E400000000000003440010300000001000000050000000000000000002E4000000000000014400000000000004440000000000000244000000000000024400000000000003440000000000000144000000000000024400000000000002E400000000000001440
+22 multipolygon
01060000000200000001030000000100000004000000000000000000444000000000000044400000000000003440000000000080464000000000008046400000000000003E4000000000000044400000000000004440010300000002000000060000000000000000003440000000000080414000000000000024400000000000003E40000000000000244000000000000024400000000000003E4000000000000014400000000000804640000000000000344000000000000034400000000000804140040000000000000000003E40000000000000344000000000000034400000000000002E4000000000000034
[...]
+23 multipolygon
+24 multipolygon 010600000000000000
+25 geometrycollection
01070000000100000001010000000000000000003E400000000000002440
+26 geometrycollection
0107000000010000000102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+27 geometrycollection
010700000001000000010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+28 geometrycollection
01070000000100000001040000000100000001010000000000000000003E400000000000002440
+29 geometrycollection
0107000000010000000105000000010000000102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440
+30 geometrycollection
010700000001000000010600000001000000010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E400000000000002440
+31 geometrycollection
01070000000600000001010000000000000000003E4000000000000024400102000000030000000000000000003E40000000000000244000000000000024400000000000003E4000000000000044400000000000004440010300000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000034400000000000004440000000000000244000000000000034400000000000003E40000000000000244001040000000100000001010000000000000000003E4000000000000024400105000000010000000102000000030000000000000000003E
[...]
+32 geometrycollection
+33 geometrycollection 010700000000000000
+34 point-z 01E90300000000000000003E4000000000000024400000000000004440
+35 point-z 01E9030000000000000000444000000000000034400000000000004E40
+36 point-z
+37 point-z 01E9030000000000000000F87F000000000000F87F000000000000F87F
+38 linestring-z
01EA030000030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+39 linestring-z
01EA03000003000000000000000000444000000000000034400000000000004E40000000000000344000000000000044400000000000004E40000000000000494000000000000049400000000000005940
+40 linestring-z
+41 linestring-z 01EA03000000000000
+42 polygon-z
01EB03000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+43 polygon-z
01EB03000002000000050000000000000000804140000000000000244000000000008046400000000000804640000000000080464000000000008056400000000000002E4000000000000044400000000000804B40000000000000244000000000000034400000000000003E400000000000804140000000000000244000000000008046400400000000000000000034400000000000003E4000000000000049400000000000804140000000000080414000000000008051400000000000003E400000000000003440000000000000494000000000000034400000000000003E400000000000004940
+44 polygon-z
+45 polygon-z 01EB03000000000000
+46 multipoint-z
01EC0300000100000001E90300000000000000003E4000000000000024400000000000004440
+47 multipoint-z
01EC0300000400000001E903000000000000000024400000000000004440000000000000494001E903000000000000000044400000000000003E40000000000080514001E903000000000000000034400000000000003440000000000000444001E90300000000000000003E4000000000000024400000000000004440
+48 multipoint-z
+49 multipoint-z 01EC03000000000000
+50 multilinestring-z
01ED0300000100000001EA030000030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+51 multilinestring-z
01ED0300000200000001EA0300000300000000000000000024400000000000002440000000000000344000000000000034400000000000003440000000000000444000000000000024400000000000004440000000000000494001EA030000040000000000000000004440000000000000444000000000000054400000000000003E400000000000003E400000000000004E40000000000000444000000000000034400000000000004E400000000000003E4000000000000024400000000000004440
+52 multilinestring-z
+53 multilinestring-z 01ED03000000000000
+54 multipolygon-z
01EE0300000100000001EB03000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+55 multipolygon-z
01EE0300000200000001EB03000001000000040000000000000000003E40000000000000344000000000000049400000000000804640000000000000444000000000004055400000000000002440000000000000444000000000000049400000000000003E400000000000003440000000000000494001EB03000001000000050000000000000000002E4000000000000014400000000000003440000000000000444000000000000024400000000000004940000000000000244000000000000034400000000000003E40000000000000144000000000000024400000000000002E400000000000002E400000
[...]
+56 multipolygon-z
01EE0300000200000001EB030000010000000400000000000000000044400000000000004440000000000000544000000000000034400000000000804640000000000040504000000000008046400000000000003E400000000000C0524000000000000044400000000000004440000000000000544001EB0300000200000006000000000000000000344000000000008041400000000000804B4000000000000024400000000000003E4000000000000044400000000000002440000000000000244000000000000034400000000000003E400000000000001440000000000080414000000000008046400000
[...]
+57 multipolygon-z
+58 multipolygon-z 01EE03000000000000
+59 geometrycollection-z
01EF0300000100000001E90300000000000000003E4000000000000024400000000000004440
+60 geometrycollection-z
01EF0300000100000001EA030000030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+61 geometrycollection-z
01EF0300000100000001EB03000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+62 geometrycollection-z
01EF0300000100000001EC0300000100000001E90300000000000000003E4000000000000024400000000000004440
+63 geometrycollection-z
01EF0300000100000001ED0300000100000001EA030000030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E400000000000004440000000000000444000000000000044400000000000005440
+64 geometrycollection-z
01EF0300000100000001EE0300000100000001EB03000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E400000000000003E4000000000000024400000000000004440
+65 geometrycollection-z
01EF0300000600000001E90300000000000000003E400000000000002440000000000000444001EA030000030000000000000000003E400000000000002440000000000000444000000000000024400000000000003E40000000000000444000000000000044400000000000004440000000000000544001EB03000001000000050000000000000000003E4000000000000024400000000000004440000000000000444000000000000044400000000000005440000000000000344000000000000044400000000000004E40000000000000244000000000000034400000000000003E40000000000000
[...]
+66 geometrycollection-z
+67 geometrycollection-z 01EF03000000000000
+68 point-m 01D10700000000000000003E4000000000000024400000000000C07240
+69 point-m 01D1070000000000000000444000000000000034400000000000008940
+70 point-m
+71 point-m 01D1070000000000000000F87F000000000000F87F000000000000F87F
+72 linestring-m
01D2070000030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+73 linestring-m
01D20700000300000000000000000044400000000000003440000000000000894000000000000034400000000000004440000000000000894000000000000049400000000000004940000000000088A340
+74 linestring-m
+75 linestring-m 01D207000000000000
+76 polygon-m
01D307000001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+77 polygon-m
01D30700000200000005000000000000000080414000000000000024400000000000E07540000000000080464000000000008046400000000000A49F400000000000002E4000000000000044400000000000C08240000000000000244000000000000034400000000000006940000000000080414000000000000024400000000000E075400400000000000000000034400000000000003E400000000000C082400000000000804140000000000080414000000000002493400000000000003E4000000000000034400000000000C0824000000000000034400000000000003E400000000000C08240
+78 polygon-m
+79 polygon-m 01D307000000000000
+80 multipoint-m
01D40700000100000001D10700000000000000003E4000000000000024400000000000C07240
+81 multipoint-m
01D40700000400000001D107000000000000000024400000000000004440000000000000794001D107000000000000000044400000000000003E400000000000C0924001D107000000000000000034400000000000003440000000000000794001D10700000000000000003E4000000000000024400000000000C07240
+82 multipoint-m
+83 multipoint-m 01D407000000000000
+84 multilinestring-m
01D50700000100000001D2070000030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+85 multilinestring-m
01D50700000200000001D20700000300000000000000000024400000000000002440000000000000594000000000000034400000000000003440000000000000794000000000000024400000000000004440000000000000794001D2070000040000000000000000004440000000000000444000000000000099400000000000003E400000000000003E400000000000208C400000000000004440000000000000344000000000000089400000000000003E4000000000000024400000000000C07240
+86 multilinestring-m
+87 multilinestring-m 01D507000000000000
+88 multipolygon-m
01D60700000100000001D307000001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+89 multipolygon-m
01D60700000200000001D307000001000000040000000000000000003E4000000000000034400000000000C08240000000000080464000000000000044400000000000209C400000000000002440000000000000444000000000000079400000000000003E4000000000000034400000000000C0824001D307000001000000050000000000000000002E4000000000000014400000000000C052400000000000004440000000000000244000000000000079400000000000002440000000000000344000000000000069400000000000001440000000000000244000000000000049400000000000002E400000
[...]
+90 multipolygon-m
01D60700000200000001D30700000100000004000000000000000000444000000000000044400000000000009940000000000000344000000000008046400000000000208C4000000000008046400000000000003E40000000000018954000000000000044400000000000004440000000000000994001D30700000200000006000000000000000000344000000000008041400000000000E0854000000000000024400000000000003E400000000000C072400000000000002440000000000000244000000000000059400000000000003E4000000000000014400000000000C0624000000000008046400000
[...]
+91 multipolygon-m
+92 multipolygon-m 01D607000000000000
+93 geometrycollection-m
01D70700000100000001D10700000000000000003E4000000000000024400000000000C07240
+94 geometrycollection-m
01D70700000100000001D2070000030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+95 geometrycollection-m
01D70700000100000001D307000001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+96 geometrycollection-m
01D70700000100000001D40700000100000001D10700000000000000003E4000000000000024400000000000C07240
+97 geometrycollection-m
01D70700000100000001D50700000100000001D2070000030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C07240000000000000444000000000000044400000000000009940
+98 geometrycollection-m
01D70700000100000001D60700000100000001D307000001000000050000000000000000003E4000000000000024400000000000C072400000000000004440000000000000444000000000000099400000000000003440000000000000444000000000000089400000000000002440000000000000344000000000000069400000000000003E4000000000000024400000000000C07240
+99 geometrycollection-m
01D70700000600000001D10700000000000000003E4000000000000024400000000000C0724001D2070000030000000000000000003E4000000000000024400000000000C0724000000000000024400000000000003E400000000000C0724000000000000044400000000000004440000000000000994001D307000001000000050000000000000000003E4000000000000024400000000000C07240000000000000444000000000000044400000000000009940000000000000344000000000000044400000000000008940000000000000244000000000000034400000000000006940000000000000
[...]
+100 geometrycollection-m
+101 geometrycollection-m 01D707000000000000
+102 point-zm
01B90B00000000000000003E40000000000000244000000000000044400000000000C07240
+103 point-zm
01B90B0000000000000000444000000000000034400000000000004E400000000000008940
+104 point-zm
+105 point-zm
01B90B0000000000000000F87F000000000000F87F000000000000F87F000000000000F87F
+106 linestring-zm
01BA0B0000030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+107 linestring-zm
01BA0B000003000000000000000000444000000000000034400000000000004E400000000000008940000000000000344000000000000044400000000000004E400000000000008940000000000000494000000000000049400000000000005940000000000088A340
+108 linestring-zm
+109 linestring-zm 01BA0B000000000000
+110 polygon-zm
01BB0B000001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+111 polygon-zm
01BB0B000002000000050000000000000000804140000000000000244000000000008046400000000000E075400000000000804640000000000080464000000000008056400000000000A49F400000000000002E4000000000000044400000000000804B400000000000C08240000000000000244000000000000034400000000000003E4000000000000069400000000000804140000000000000244000000000008046400000000000E075400400000000000000000034400000000000003E4000000000000049400000000000C0824000000000008041400000000000804140000000000080514000000000002
[...]
+112 polygon-zm
+113 polygon-zm 01BB0B000000000000
+114 multipoint-zm
01BC0B00000100000001B90B00000000000000003E40000000000000244000000000000044400000000000C07240
+115 multipoint-zm
01BC0B00000400000001B90B0000000000000000244000000000000044400000000000004940000000000000794001B90B000000000000000044400000000000003E4000000000008051400000000000C0924001B90B0000000000000000344000000000000034400000000000004440000000000000794001B90B00000000000000003E40000000000000244000000000000044400000000000C07240
+116 multipoint-zm
+117 multipoint-zm 01BC0B000000000000
+118 multilinestring-zm
01BD0B00000100000001BA0B0000030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+119 multilinestring-zm
01BD0B00000200000001BA0B00000300000000000000000024400000000000002440000000000000344000000000000059400000000000003440000000000000344000000000000044400000000000007940000000000000244000000000000044400000000000004940000000000000794001BA0B00000400000000000000000044400000000000004440000000000000544000000000000099400000000000003E400000000000003E400000000000004E400000000000208C40000000000000444000000000000034400000000000004E4000000000000089400000000000003E40000000000000244
[...]
+120 multilinestring-zm
+121 multilinestring-zm 01BD0B000000000000
+122 multipolygon-zm
01BE0B00000100000001BB0B000001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+123 multipolygon-zm
01BE0B00000200000001BB0B000001000000040000000000000000003E40000000000000344000000000000049400000000000C082400000000000804640000000000000444000000000004055400000000000209C4000000000000024400000000000004440000000000000494000000000000079400000000000003E40000000000000344000000000000049400000000000C0824001BB0B000001000000050000000000000000002E40000000000000144000000000000034400000000000C052400000000000004440000000000000244000000000000049400000000000007940000000000000244000
[...]
+124 multipolygon-zm
01BE0B00000200000001BB0B0000010000000400000000000000000044400000000000004440000000000000544000000000000099400000000000003440000000000080464000000000004050400000000000208C4000000000008046400000000000003E400000000000C052400000000000189540000000000000444000000000000044400000000000005440000000000000994001BB0B00000200000006000000000000000000344000000000008041400000000000804B400000000000E0854000000000000024400000000000003E4000000000000044400000000000C07240000000000000244000
[...]
+125 multipolygon-zm
+126 multipolygon-zm 01BE0B000000000000
+127 geometrycollection-zm
01BF0B00000100000001B90B00000000000000003E40000000000000244000000000000044400000000000C07240
+128 geometrycollection-zm
01BF0B00000100000001BA0B0000030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+129 geometrycollection-zm
01BF0B00000100000001BB0B000001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+130 geometrycollection-zm
01BF0B00000100000001BC0B00000100000001B90B00000000000000003E40000000000000244000000000000044400000000000C07240
+131 geometrycollection-zm
01BF0B00000100000001BD0B00000100000001BA0B0000030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940
+132 geometrycollection-zm
01BF0B00000100000001BE0B00000100000001BB0B000001000000050000000000000000003E40000000000000244000000000000044400000000000C072400000000000004440000000000000444000000000000054400000000000009940000000000000344000000000000044400000000000004E400000000000008940000000000000244000000000000034400000000000003E4000000000000069400000000000003E40000000000000244000000000000044400000000000C07240
+133 geometrycollection-zm
01BF0B00000600000001B90B00000000000000003E40000000000000244000000000000044400000000000C0724001BA0B0000030000000000000000003E40000000000000244000000000000044400000000000C0724000000000000024400000000000003E4000000000000044400000000000C07240000000000000444000000000000044400000000000005440000000000000994001BB0B000001000000050000000000000000003E40000000000000244000000000000044400000000000C0724000000000000044400000000000004440000000000000544000000000000099400000000000
[...]
+134 geometrycollection-zm
+135 geometrycollection-zm 01BF0B000000000000
diff --git a/data/parsing/example-wkt.tsv b/data/parsing/example-wkt.tsv
new file mode 100644
index 0000000..73bf048
--- /dev/null
+++ b/data/parsing/example-wkt.tsv
@@ -0,0 +1,137 @@
+id group geometry
+0 point POINT (30 10)
+1 point POINT (40 20)
+2 point
+3 point POINT EMPTY
+4 linestring LINESTRING (30 10, 10 30, 40 40)
+5 linestring LINESTRING (40 20, 20 40, 50 50)
+6 linestring
+7 linestring LINESTRING EMPTY
+8 polygon POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
+9 polygon POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30
20, 20 30))
+10 polygon
+11 polygon POLYGON EMPTY
+12 multipoint MULTIPOINT ((30 10))
+13 multipoint MULTIPOINT ((10 40), (40 30), (20 20), (30 10))
+14 multipoint
+15 multipoint MULTIPOINT EMPTY
+16 multilinestring MULTILINESTRING ((30 10, 10 30, 40 40))
+17 multilinestring MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30,
40 20, 30 10))
+18 multilinestring
+19 multilinestring MULTILINESTRING EMPTY
+20 multipolygon MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10)))
+21 multipolygon MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5,
40 10, 10 20, 5 10, 15 5)))
+22 multipolygon MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35,
10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))
+23 multipolygon
+24 multipolygon MULTIPOLYGON EMPTY
+25 geometrycollection GEOMETRYCOLLECTION (POINT (30 10))
+26 geometrycollection GEOMETRYCOLLECTION (LINESTRING (30 10, 10 30,
40 40))
+27 geometrycollection GEOMETRYCOLLECTION (POLYGON ((30 10, 40 40, 20
40, 10 20, 30 10)))
+28 geometrycollection GEOMETRYCOLLECTION (MULTIPOINT ((30 10)))
+29 geometrycollection GEOMETRYCOLLECTION (MULTILINESTRING ((30 10, 10
30, 40 40)))
+30 geometrycollection GEOMETRYCOLLECTION (MULTIPOLYGON (((30 10, 40
40, 20 40, 10 20, 30 10))))
+31 geometrycollection GEOMETRYCOLLECTION (POINT (30 10), LINESTRING
(30 10, 10 30, 40 40), POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)),
MULTIPOINT ((30 10)), MULTILINESTRING ((30 10, 10 30, 40 40)), MULTIPOLYGON
(((30 10, 40 40, 20 40, 10 20, 30 10))))
+32 geometrycollection
+33 geometrycollection GEOMETRYCOLLECTION EMPTY
+34 point-z POINT Z (30 10 40)
+35 point-z POINT Z (40 20 60)
+36 point-z
+37 point-z POINT Z EMPTY
+38 linestring-z LINESTRING Z (30 10 40, 10 30 40, 40 40 80)
+39 linestring-z LINESTRING Z (40 20 60, 20 40 60, 50 50 100)
+40 linestring-z
+41 linestring-z LINESTRING Z EMPTY
+42 polygon-z POLYGON Z ((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30
10 40))
+43 polygon-z POLYGON Z ((35 10 45, 45 45 90, 15 40 55, 10 20 30, 35
10 45), (20 30 50, 35 35 70, 30 20 50, 20 30 50))
+44 polygon-z
+45 polygon-z POLYGON Z EMPTY
+46 multipoint-z MULTIPOINT Z ((30 10 40))
+47 multipoint-z MULTIPOINT Z ((10 40 50), (40 30 70), (20 20 40), (30
10 40))
+48 multipoint-z
+49 multipoint-z MULTIPOINT Z EMPTY
+50 multilinestring-z MULTILINESTRING Z ((30 10 40, 10 30 40, 40 40
80))
+51 multilinestring-z MULTILINESTRING Z ((10 10 20, 20 20 40, 10 40
50), (40 40 80, 30 30 60, 40 20 60, 30 10 40))
+52 multilinestring-z
+53 multilinestring-z MULTILINESTRING Z EMPTY
+54 multipolygon-z MULTIPOLYGON Z (((30 10 40, 40 40 80, 20 40 60, 10 20
30, 30 10 40)))
+55 multipolygon-z MULTIPOLYGON Z (((30 20 50, 45 40 85, 10 40 50, 30 20
50)), ((15 5 20, 40 10 50, 10 20 30, 5 10 15, 15 5 20)))
+56 multipolygon-z MULTIPOLYGON Z (((40 40 80, 20 45 65, 45 30 75, 40 40
80)), ((20 35 55, 10 30 40, 10 10 20, 30 5 35, 45 20 65, 20 35 55), (30 20 50,
20 15 35, 20 25 45, 30 20 50)))
+57 multipolygon-z
+58 multipolygon-z MULTIPOLYGON Z EMPTY
+59 geometrycollection-z GEOMETRYCOLLECTION Z (POINT Z (30 10 40))
+60 geometrycollection-z GEOMETRYCOLLECTION Z (LINESTRING Z (30 10 40,
10 30 40, 40 40 80))
+61 geometrycollection-z GEOMETRYCOLLECTION Z (POLYGON Z ((30 10 40, 40
40 80, 20 40 60, 10 20 30, 30 10 40)))
+62 geometrycollection-z GEOMETRYCOLLECTION Z (MULTIPOINT Z ((30 10 40)))
+63 geometrycollection-z GEOMETRYCOLLECTION Z (MULTILINESTRING Z ((30 10
40, 10 30 40, 40 40 80)))
+64 geometrycollection-z GEOMETRYCOLLECTION Z (MULTIPOLYGON Z (((30 10
40, 40 40 80, 20 40 60, 10 20 30, 30 10 40))))
+65 geometrycollection-z GEOMETRYCOLLECTION Z (POINT Z (30 10 40),
LINESTRING Z (30 10 40, 10 30 40, 40 40 80), POLYGON Z ((30 10 40, 40 40 80, 20
40 60, 10 20 30, 30 10 40)), MULTIPOINT Z ((30 10 40)), MULTILINESTRING Z ((30
10 40, 10 30 40, 40 40 80)), MULTIPOLYGON Z (((30 10 40, 40 40 80, 20 40 60, 10
20 30, 30 10 40))))
+66 geometrycollection-z
+67 geometrycollection-z GEOMETRYCOLLECTION Z EMPTY
+68 point-m POINT M (30 10 300)
+69 point-m POINT M (40 20 800)
+70 point-m
+71 point-m POINT M EMPTY
+72 linestring-m LINESTRING M (30 10 300, 10 30 300, 40 40 1600)
+73 linestring-m LINESTRING M (40 20 800, 20 40 800, 50 50 2500)
+74 linestring-m
+75 linestring-m LINESTRING M EMPTY
+76 polygon-m POLYGON M ((30 10 300, 40 40 1600, 20 40 800, 10 20
200, 30 10 300))
+77 polygon-m POLYGON M ((35 10 350, 45 45 2025, 15 40 600, 10 20
200, 35 10 350), (20 30 600, 35 35 1225, 30 20 600, 20 30 600))
+78 polygon-m
+79 polygon-m POLYGON M EMPTY
+80 multipoint-m MULTIPOINT M ((30 10 300))
+81 multipoint-m MULTIPOINT M ((10 40 400), (40 30 1200), (20 20 400),
(30 10 300))
+82 multipoint-m
+83 multipoint-m MULTIPOINT M EMPTY
+84 multilinestring-m MULTILINESTRING M ((30 10 300, 10 30 300, 40 40
1600))
+85 multilinestring-m MULTILINESTRING M ((10 10 100, 20 20 400, 10 40
400), (40 40 1600, 30 30 900, 40 20 800, 30 10 300))
+86 multilinestring-m
+87 multilinestring-m MULTILINESTRING M EMPTY
+88 multipolygon-m MULTIPOLYGON M (((30 10 300, 40 40 1600, 20 40 800, 10
20 200, 30 10 300)))
+89 multipolygon-m MULTIPOLYGON M (((30 20 600, 45 40 1800, 10 40 400, 30
20 600)), ((15 5 75, 40 10 400, 10 20 200, 5 10 50, 15 5 75)))
+90 multipolygon-m MULTIPOLYGON M (((40 40 1600, 20 45 900, 45 30 1350, 40
40 1600)), ((20 35 700, 10 30 300, 10 10 100, 30 5 150, 45 20 900, 20 35 700),
(30 20 600, 20 15 300, 20 25 500, 30 20 600)))
+91 multipolygon-m
+92 multipolygon-m MULTIPOLYGON M EMPTY
+93 geometrycollection-m GEOMETRYCOLLECTION M (POINT M (30 10 300))
+94 geometrycollection-m GEOMETRYCOLLECTION M (LINESTRING M (30 10 300,
10 30 300, 40 40 1600))
+95 geometrycollection-m GEOMETRYCOLLECTION M (POLYGON M ((30 10 300, 40
40 1600, 20 40 800, 10 20 200, 30 10 300)))
+96 geometrycollection-m GEOMETRYCOLLECTION M (MULTIPOINT M ((30 10
300)))
+97 geometrycollection-m GEOMETRYCOLLECTION M (MULTILINESTRING M ((30 10
300, 10 30 300, 40 40 1600)))
+98 geometrycollection-m GEOMETRYCOLLECTION M (MULTIPOLYGON M (((30 10
300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300))))
+99 geometrycollection-m GEOMETRYCOLLECTION M (POINT M (30 10 300),
LINESTRING M (30 10 300, 10 30 300, 40 40 1600), POLYGON M ((30 10 300, 40 40
1600, 20 40 800, 10 20 200, 30 10 300)), MULTIPOINT M ((30 10 300)),
MULTILINESTRING M ((30 10 300, 10 30 300, 40 40 1600)), MULTIPOLYGON M (((30 10
300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300))))
+100 geometrycollection-m
+101 geometrycollection-m GEOMETRYCOLLECTION M EMPTY
+102 point-zm POINT ZM (30 10 40 300)
+103 point-zm POINT ZM (40 20 60 800)
+104 point-zm
+105 point-zm POINT ZM EMPTY
+106 linestring-zm LINESTRING ZM (30 10 40 300, 10 30 40 300, 40 40 80
1600)
+107 linestring-zm LINESTRING ZM (40 20 60 800, 20 40 60 800, 50 50 100
2500)
+108 linestring-zm
+109 linestring-zm LINESTRING ZM EMPTY
+110 polygon-zm POLYGON ZM ((30 10 40 300, 40 40 80 1600, 20 40 60 800,
10 20 30 200, 30 10 40 300))
+111 polygon-zm POLYGON ZM ((35 10 45 350, 45 45 90 2025, 15 40 55 600,
10 20 30 200, 35 10 45 350), (20 30 50 600, 35 35 70 1225, 30 20 50 600, 20 30
50 600))
+112 polygon-zm
+113 polygon-zm POLYGON ZM EMPTY
+114 multipoint-zm MULTIPOINT ZM ((30 10 40 300))
+115 multipoint-zm MULTIPOINT ZM ((10 40 50 400), (40 30 70 1200), (20 20
40 400), (30 10 40 300))
+116 multipoint-zm
+117 multipoint-zm MULTIPOINT ZM EMPTY
+118 multilinestring-zm MULTILINESTRING ZM ((30 10 40 300, 10 30 40
300, 40 40 80 1600))
+119 multilinestring-zm MULTILINESTRING ZM ((10 10 20 100, 20 20 40
400, 10 40 50 400), (40 40 80 1600, 30 30 60 900, 40 20 60 800, 30 10 40 300))
+120 multilinestring-zm
+121 multilinestring-zm MULTILINESTRING ZM EMPTY
+122 multipolygon-zm MULTIPOLYGON ZM (((30 10 40 300, 40 40 80 1600, 20 40
60 800, 10 20 30 200, 30 10 40 300)))
+123 multipolygon-zm MULTIPOLYGON ZM (((30 20 50 600, 45 40 85 1800, 10 40
50 400, 30 20 50 600)), ((15 5 20 75, 40 10 50 400, 10 20 30 200, 5 10 15 50,
15 5 20 75)))
+124 multipolygon-zm MULTIPOLYGON ZM (((40 40 80 1600, 20 45 65 900, 45 30
75 1350, 40 40 80 1600)), ((20 35 55 700, 10 30 40 300, 10 10 20 100, 30 5 35
150, 45 20 65 900, 20 35 55 700), (30 20 50 600, 20 15 35 300, 20 25 45 500, 30
20 50 600)))
+125 multipolygon-zm
+126 multipolygon-zm MULTIPOLYGON ZM EMPTY
+127 geometrycollection-zm GEOMETRYCOLLECTION ZM (POINT ZM (30 10 40 300))
+128 geometrycollection-zm GEOMETRYCOLLECTION ZM (LINESTRING ZM (30 10 40
300, 10 30 40 300, 40 40 80 1600))
+129 geometrycollection-zm GEOMETRYCOLLECTION ZM (POLYGON ZM ((30 10 40
300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 10 40 300)))
+130 geometrycollection-zm GEOMETRYCOLLECTION ZM (MULTIPOINT ZM ((30 10 40
300)))
+131 geometrycollection-zm GEOMETRYCOLLECTION ZM (MULTILINESTRING ZM ((30
10 40 300, 10 30 40 300, 40 40 80 1600)))
+132 geometrycollection-zm GEOMETRYCOLLECTION ZM (MULTIPOLYGON ZM (((30 10
40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 10 40 300))))
+133 geometrycollection-zm GEOMETRYCOLLECTION ZM (POINT ZM (30 10 40 300),
LINESTRING ZM (30 10 40 300, 10 30 40 300, 40 40 80 1600), POLYGON ZM ((30 10
40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 10 40 300)), MULTIPOINT
ZM ((30 10 40 300)), MULTILINESTRING ZM ((30 10 40 300, 10 30 40 300, 40 40 80
1600)), MULTIPOLYGON ZM (((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30
200, 30 10 40 300))))
+134 geometrycollection-zm
+135 geometrycollection-zm GEOMETRYCOLLECTION ZM EMPTY
diff --git a/data/parsing/example.yaml b/data/parsing/example.yaml
new file mode 100644
index 0000000..260529d
--- /dev/null
+++ b/data/parsing/example.yaml
@@ -0,0 +1,249 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+# These are the values used to generate the content of several other files.
+# Note that Z values are always calculated as X + Y and M values are always
+# calculated as Z * Y for the purposes of this example data.
+
+# Individual row groups for each geometry type/dimensions combination.
+# Each contains at least two non-empty items, a null, and an EMPTY.
+point:
+ - POINT (30 10)
+ - POINT (40 20)
+ - null
+ - POINT EMPTY
+
+linestring:
+ - LINESTRING (30 10, 10 30, 40 40)
+ - LINESTRING (40 20, 20 40, 50 50)
+ - null
+ - LINESTRING EMPTY
+
+polygon:
+ - POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))
+ - POLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))
+ - null
+ - POLYGON EMPTY
+
+multipoint:
+ - MULTIPOINT ((30 10))
+ - MULTIPOINT ((10 40), (40 30), (20 20), (30 10))
+ - null
+ - MULTIPOINT EMPTY
+
+multilinestring:
+ - MULTILINESTRING ((30 10, 10 30, 40 40))
+ - MULTILINESTRING ((10 10, 20 20, 10 40), (40 40, 30 30, 40 20, 30 10))
+ - null
+ - MULTILINESTRING EMPTY
+
+multipolygon:
+ - MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10)))
+ - MULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10,
15 5)))
+ - MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5,
45 20,
+ 20 35), (30 20, 20 15, 20 25, 30 20)))
+ - null
+ - MULTIPOLYGON EMPTY
+
+geometrycollection:
+ - GEOMETRYCOLLECTION (POINT (30 10))
+ - GEOMETRYCOLLECTION (LINESTRING (30 10, 10 30, 40 40))
+ - GEOMETRYCOLLECTION (POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10)))
+ - GEOMETRYCOLLECTION (MULTIPOINT ((30 10)))
+ - GEOMETRYCOLLECTION (MULTILINESTRING ((30 10, 10 30, 40 40)))
+ - GEOMETRYCOLLECTION (MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10))))
+ - GEOMETRYCOLLECTION (POINT (30 10), LINESTRING (30 10, 10 30, 40 40),
POLYGON ((30
+ 10, 40 40, 20 40, 10 20, 30 10)), MULTIPOINT ((30 10)), MULTILINESTRING
((30 10,
+ 10 30, 40 40)), MULTIPOLYGON (((30 10, 40 40, 20 40, 10 20, 30 10))))
+ - null
+ - GEOMETRYCOLLECTION EMPTY
+
+point-z:
+ - POINT Z (30 10 40)
+ - POINT Z (40 20 60)
+ - null
+ - POINT Z EMPTY
+
+linestring-z:
+ - LINESTRING Z (30 10 40, 10 30 40, 40 40 80)
+ - LINESTRING Z (40 20 60, 20 40 60, 50 50 100)
+ - null
+ - LINESTRING Z EMPTY
+
+polygon-z:
+ - POLYGON Z ((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40))
+ - POLYGON Z ((35 10 45, 45 45 90, 15 40 55, 10 20 30, 35 10 45), (20 30 50,
35 35
+ 70, 30 20 50, 20 30 50))
+ - null
+ - POLYGON Z EMPTY
+
+multipoint-z:
+ - MULTIPOINT Z ((30 10 40))
+ - MULTIPOINT Z ((10 40 50), (40 30 70), (20 20 40), (30 10 40))
+ - null
+ - MULTIPOINT Z EMPTY
+
+multilinestring-z:
+ - MULTILINESTRING Z ((30 10 40, 10 30 40, 40 40 80))
+ - MULTILINESTRING Z ((10 10 20, 20 20 40, 10 40 50), (40 40 80, 30 30 60, 40
20 60,
+ 30 10 40))
+ - null
+ - MULTILINESTRING Z EMPTY
+
+multipolygon-z:
+ - MULTIPOLYGON Z (((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40)))
+ - MULTIPOLYGON Z (((30 20 50, 45 40 85, 10 40 50, 30 20 50)), ((15 5 20, 40
10 50,
+ 10 20 30, 5 10 15, 15 5 20)))
+ - MULTIPOLYGON Z (((40 40 80, 20 45 65, 45 30 75, 40 40 80)), ((20 35 55, 10
30 40,
+ 10 10 20, 30 5 35, 45 20 65, 20 35 55), (30 20 50, 20 15 35, 20 25 45, 30
20 50)))
+ - null
+ - MULTIPOLYGON Z EMPTY
+
+geometrycollection-z:
+ - GEOMETRYCOLLECTION Z (POINT Z (30 10 40))
+ - GEOMETRYCOLLECTION Z (LINESTRING Z (30 10 40, 10 30 40, 40 40 80))
+ - GEOMETRYCOLLECTION Z (POLYGON Z ((30 10 40, 40 40 80, 20 40 60, 10 20 30,
30 10
+ 40)))
+ - GEOMETRYCOLLECTION Z (MULTIPOINT Z ((30 10 40)))
+ - GEOMETRYCOLLECTION Z (MULTILINESTRING Z ((30 10 40, 10 30 40, 40 40 80)))
+ - GEOMETRYCOLLECTION Z (MULTIPOLYGON Z (((30 10 40, 40 40 80, 20 40 60, 10
20 30,
+ 30 10 40))))
+ - GEOMETRYCOLLECTION Z (POINT Z (30 10 40), LINESTRING Z (30 10 40, 10 30
40, 40 40
+ 80), POLYGON Z ((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40)),
MULTIPOINT
+ Z ((30 10 40)), MULTILINESTRING Z ((30 10 40, 10 30 40, 40 40 80)),
MULTIPOLYGON
+ Z (((30 10 40, 40 40 80, 20 40 60, 10 20 30, 30 10 40))))
+ - null
+ - GEOMETRYCOLLECTION Z EMPTY
+
+point-m:
+ - POINT M (30 10 300)
+ - POINT M (40 20 800)
+ - null
+ - POINT M EMPTY
+
+linestring-m:
+ - LINESTRING M (30 10 300, 10 30 300, 40 40 1600)
+ - LINESTRING M (40 20 800, 20 40 800, 50 50 2500)
+ - null
+ - LINESTRING M EMPTY
+
+polygon-m:
+ - POLYGON M ((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300))
+ - POLYGON M ((35 10 350, 45 45 2025, 15 40 600, 10 20 200, 35 10 350), (20
30 600,
+ 35 35 1225, 30 20 600, 20 30 600))
+ - null
+ - POLYGON M EMPTY
+
+multipoint-m:
+ - MULTIPOINT M ((30 10 300))
+ - MULTIPOINT M ((10 40 400), (40 30 1200), (20 20 400), (30 10 300))
+ - null
+ - MULTIPOINT M EMPTY
+
+multilinestring-m:
+ - MULTILINESTRING M ((30 10 300, 10 30 300, 40 40 1600))
+ - MULTILINESTRING M ((10 10 100, 20 20 400, 10 40 400), (40 40 1600, 30 30
900, 40
+ 20 800, 30 10 300))
+ - null
+ - MULTILINESTRING M EMPTY
+
+multipolygon-m:
+ - MULTIPOLYGON M (((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10 300)))
+ - MULTIPOLYGON M (((30 20 600, 45 40 1800, 10 40 400, 30 20 600)), ((15 5
75, 40 10
+ 400, 10 20 200, 5 10 50, 15 5 75)))
+ - MULTIPOLYGON M (((40 40 1600, 20 45 900, 45 30 1350, 40 40 1600)), ((20 35
700,
+ 10 30 300, 10 10 100, 30 5 150, 45 20 900, 20 35 700), (30 20 600, 20 15
300, 20
+ 25 500, 30 20 600)))
+ - null
+ - MULTIPOLYGON M EMPTY
+
+geometrycollection-m:
+ - GEOMETRYCOLLECTION M (POINT M (30 10 300))
+ - GEOMETRYCOLLECTION M (LINESTRING M (30 10 300, 10 30 300, 40 40 1600))
+ - GEOMETRYCOLLECTION M (POLYGON M ((30 10 300, 40 40 1600, 20 40 800, 10 20
200, 30
+ 10 300)))
+ - GEOMETRYCOLLECTION M (MULTIPOINT M ((30 10 300)))
+ - GEOMETRYCOLLECTION M (MULTILINESTRING M ((30 10 300, 10 30 300, 40 40
1600)))
+ - GEOMETRYCOLLECTION M (MULTIPOLYGON M (((30 10 300, 40 40 1600, 20 40 800,
10 20
+ 200, 30 10 300))))
+ - GEOMETRYCOLLECTION M (POINT M (30 10 300), LINESTRING M (30 10 300, 10 30
300, 40
+ 40 1600), POLYGON M ((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10
300)),
+ MULTIPOINT M ((30 10 300)), MULTILINESTRING M ((30 10 300, 10 30 300, 40
40 1600)),
+ MULTIPOLYGON M (((30 10 300, 40 40 1600, 20 40 800, 10 20 200, 30 10
300))))
+ - null
+ - GEOMETRYCOLLECTION M EMPTY
+
+point-zm:
+ - POINT ZM (30 10 40 300)
+ - POINT ZM (40 20 60 800)
+ - null
+ - POINT ZM EMPTY
+
+linestring-zm:
+ - LINESTRING ZM (30 10 40 300, 10 30 40 300, 40 40 80 1600)
+ - LINESTRING ZM (40 20 60 800, 20 40 60 800, 50 50 100 2500)
+ - null
+ - LINESTRING ZM EMPTY
+
+polygon-zm:
+ - POLYGON ZM ((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30
10 40 300))
+ - POLYGON ZM ((35 10 45 350, 45 45 90 2025, 15 40 55 600, 10 20 30 200, 35
10 45 350),
+ (20 30 50 600, 35 35 70 1225, 30 20 50 600, 20 30 50 600))
+ - null
+ - POLYGON ZM EMPTY
+
+multipoint-zm:
+ - MULTIPOINT ZM ((30 10 40 300))
+ - MULTIPOINT ZM ((10 40 50 400), (40 30 70 1200), (20 20 40 400), (30 10 40
300))
+ - null
+ - MULTIPOINT ZM EMPTY
+
+multilinestring-zm:
+ - MULTILINESTRING ZM ((30 10 40 300, 10 30 40 300, 40 40 80 1600))
+ - MULTILINESTRING ZM ((10 10 20 100, 20 20 40 400, 10 40 50 400), (40 40 80
1600,
+ 30 30 60 900, 40 20 60 800, 30 10 40 300))
+ - null
+ - MULTILINESTRING ZM EMPTY
+
+multipolygon-zm:
+ - MULTIPOLYGON ZM (((30 10 40 300, 40 40 80 1600, 20 40 60 800, 10 20 30
200, 30 10
+ 40 300)))
+ - MULTIPOLYGON ZM (((30 20 50 600, 45 40 85 1800, 10 40 50 400, 30 20 50
600)), ((15
+ 5 20 75, 40 10 50 400, 10 20 30 200, 5 10 15 50, 15 5 20 75)))
+ - MULTIPOLYGON ZM (((40 40 80 1600, 20 45 65 900, 45 30 75 1350, 40 40 80
1600)),
+ ((20 35 55 700, 10 30 40 300, 10 10 20 100, 30 5 35 150, 45 20 65 900, 20
35 55
+ 700), (30 20 50 600, 20 15 35 300, 20 25 45 500, 30 20 50 600)))
+ - null
+ - MULTIPOLYGON ZM EMPTY
+
+geometrycollection-zm:
+ - GEOMETRYCOLLECTION ZM (POINT ZM (30 10 40 300))
+ - GEOMETRYCOLLECTION ZM (LINESTRING ZM (30 10 40 300, 10 30 40 300, 40 40 80
1600))
+ - GEOMETRYCOLLECTION ZM (POLYGON ZM ((30 10 40 300, 40 40 80 1600, 20 40 60
800, 10
+ 20 30 200, 30 10 40 300)))
+ - GEOMETRYCOLLECTION ZM (MULTIPOINT ZM ((30 10 40 300)))
+ - GEOMETRYCOLLECTION ZM (MULTILINESTRING ZM ((30 10 40 300, 10 30 40 300, 40
40 80
+ 1600)))
+ - GEOMETRYCOLLECTION ZM (MULTIPOLYGON ZM (((30 10 40 300, 40 40 80 1600, 20
40 60
+ 800, 10 20 30 200, 30 10 40 300))))
+ - GEOMETRYCOLLECTION ZM (POINT ZM (30 10 40 300), LINESTRING ZM (30 10 40
300, 10
+ 30 40 300, 40 40 80 1600), POLYGON ZM ((30 10 40 300, 40 40 80 1600, 20 40
60 800,
+ 10 20 30 200, 30 10 40 300)), MULTIPOINT ZM ((30 10 40 300)),
MULTILINESTRING ZM
+ ((30 10 40 300, 10 30 40 300, 40 40 80 1600)), MULTIPOLYGON ZM (((30 10 40
300,
+ 40 40 80 1600, 20 40 60 800, 10 20 30 200, 30 10 40 300))))
+ - null
+ - GEOMETRYCOLLECTION ZM EMPTY