Description
I understand that the way to have geometries with attributes behave like tables in this package is to create a StructArray for the collection.
Do you have any idea what we could do when we want to represent different geometry types? Most commonly a dataset is all of the same type, but there are exceptions, and it would be nice to be able to represent them as well.
This understandably fails:
point = meta(Point(3, 1), city="Abuja", rainfall=1221.2)
polygon = meta(Polygon(Point{2, Int}[(3, 1), (4, 4), (2, 4), (1, 2), (3, 1)]), city="Borongan", rainfall=4114.8)
StructArray([point, polygon]) # ArgumentError: type does not have a definite number of fields
If I try to throw it into for instance a TypedTables.Table, it works fine, accepting geometry as a Vector{Any}.
using TypedTables
Table(
geometry=[Point(3, 1), Polygon(Point{2, Int}[(3, 1), (4, 4), (2, 4), (1, 2), (3, 1)])],
city=["Abuja", "Borongan"],
rainfall=[1221.2, 4114.0],
)
I know this is more of a basic StructArrays vs TypedTables question, and understand that with a Vector{Any} things will be slower. But it would be nice to have a "GeometryBasics" table solution for this as well.
EDIT: concrete example here: https://github.com/visr/GeoJSONTables.jl/blob/4104e66a638814d77ef98af1d205450549361519/test/basics.jl#L97-L101