Types - 14
- NullShape
- Point
- PolyLine
- Polygon
- MultiPoint
- PointZ
- PolylineZ
- PolygonZ
- MultiPointZ
- PointM
- PolyLineM
- PolygonM
- MultiPointM
- MultiPatch
- DBF
- DBF proper resource handling (cats bracket? closing in finally?)
TODO Edge Cases
- Verify PointZ file with M values
- Verify MultiPointZ with M values
- Convert MultiPointZ to hold Vector[PointZ] values
- PolylineZ with M Values
- *-Z encoding with empty M values -- should omit entirely rather than encoding 0's
- PolyLineZ Sample File
- Import test cases from gdal https://github.com/OSGeo/gdal/tree/master/autotest/ogr/data/shp