@@ -2,6 +2,7 @@ package geoparquet
22
33import (
44 "encoding/json"
5+ "errors"
56 "fmt"
67 "io"
78
@@ -62,9 +63,20 @@ func FromParquet(input parquet.ReaderAtSeeker, output io.Writer, convertOptions
6263 datasetInfo := geo .NewDatasetStats (true )
6364 transformSchema := func (fileReader * file.Reader ) (* schema.Schema , error ) {
6465 inputSchema := fileReader .MetaData ().Schema
66+ inputRoot := inputSchema .Root ()
6567 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 )
6880 name := field .Name ()
6981 if _ , ok := metadata .Columns [name ]; ! ok {
7082 continue
@@ -78,9 +90,7 @@ func FromParquet(input parquet.ReaderAtSeeker, output io.Writer, convertOptions
7890 return inputSchema , nil
7991 }
8092
81- inputRoot := inputSchema .Root ()
8293 numFields := inputRoot .NumFields ()
83-
8494 fields := make ([]schema.Node , numFields )
8595 for fieldNum := 0 ; fieldNum < numFields ; fieldNum += 1 {
8696 inputField := inputRoot .Field (fieldNum )
0 commit comments