@@ -2,6 +2,7 @@ package geoparquet
2
2
3
3
import (
4
4
"encoding/json"
5
+ "errors"
5
6
"fmt"
6
7
"io"
7
8
@@ -62,9 +63,20 @@ func FromParquet(input parquet.ReaderAtSeeker, output io.Writer, convertOptions
62
63
datasetInfo := geo .NewDatasetStats (true )
63
64
transformSchema := func (fileReader * file.Reader ) (* schema.Schema , error ) {
64
65
inputSchema := fileReader .MetaData ().Schema
66
+ inputRoot := inputSchema .Root ()
65
67
metadata := getMetadata (fileReader , convertOptions )
66
- for fieldNum := 0 ; fieldNum < inputSchema .Root ().NumFields (); fieldNum += 1 {
67
- field := inputSchema .Root ().Field (fieldNum )
68
+ for geomColName := range metadata .Columns {
69
+ if inputRoot .FieldIndexByName (geomColName ) < 0 {
70
+ message := fmt .Sprintf (
71
+ "expected a geometry column named %q," +
72
+ " use the --input-primary-column to supply a different primary geometry" ,
73
+ geomColName ,
74
+ )
75
+ return nil , errors .New (message )
76
+ }
77
+ }
78
+ for fieldNum := 0 ; fieldNum < inputRoot .NumFields (); fieldNum += 1 {
79
+ field := inputRoot .Field (fieldNum )
68
80
name := field .Name ()
69
81
if _ , ok := metadata .Columns [name ]; ! ok {
70
82
continue
@@ -78,9 +90,7 @@ func FromParquet(input parquet.ReaderAtSeeker, output io.Writer, convertOptions
78
90
return inputSchema , nil
79
91
}
80
92
81
- inputRoot := inputSchema .Root ()
82
93
numFields := inputRoot .NumFields ()
83
-
84
94
fields := make ([]schema.Node , numFields )
85
95
for fieldNum := 0 ; fieldNum < numFields ; fieldNum += 1 {
86
96
inputField := inputRoot .Field (fieldNum )
0 commit comments