GeoFormatTypes.jl
GeoFormatTypes.GeoFormatTypes
— ModuleGeoFormatTypes
GeoFormatTypes defines wrapper types to make it easy to pass and dispatch on geographic formats like Well Known Text or GeoJSON between packages. This way information about what format is contained is kept for later use, - instead of passing a String
or Int
that could mean anything.
Wrapper types also allow methods such as convert
to work with data in multiple formats, instead of defining lists of format-specific handling methods. Currently ArchGDAL.jl is privileged to define convert
methods for GeoFormatTypes.jl objects, using GDAL. When it is loaded, objects can be converted from one format to another:
julia> using GeoFormatTypes, ArchGDAL
julia> convert(WellKnownText, EPSG(4326))
WellKnownText{GeoFormatTypes.CRS, String}(GeoFormatTypes.CRS(), "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AXIS[\"Latitude\",NORTH],AXIS[\"Longitude\",EAST],AUTHORITY[\"EPSG\",\"4326\"]]")
ArchGDAL.jl is not a direct dependency of GeoFormatTypes.jl, so small packages that handle geospatial formats in some way can depend on GeoFormatTypes.jl without worry about large dependencies.
One complexity of GeoFormat
objects is that some formats can hold either CRS (Coordinate Reference System) or geometric data, or even both at the same time.
This is handled using the CRS
, Geom
and Mixed
traits. When the contents are explicitly known to be e.g. crs data, then CRS
can be used, for example with all types of well known text:
crs = WellKnownText2(CRS(), crs_string)
If the contents are not known, the default Mixed()
will mostly do the right thing anyway - it can be converted to either CRS or geometry formats using convert
, given that it is actually possible to do with the contained data.
We thank Julia Computing for supporting contributions to this package.
GeoFormatTypes.AbstractWellKnownText
— TypeAbstractWellKnownText <: MixedFormat
Well known text has a number of versions and standards, and can hold either coordinate reference systems or geometric data in string format.
GeoFormatTypes.CRS
— TypeCRS <: FormatMode
CRS()
Trait specifying that a format object, like WellKnownText
, contains only coordinate reference system data.
GeoFormatTypes.CoordSys
— TypeCoordSys <: CoordinateReferenceSystemFormat
CoordSys(val)
Wrapper for a Mapinfo CoordSys string.
GeoFormatTypes.CoordinateReferenceSystemFormat
— TypeCoordinateReferenceSystemFormat <: GeoFormat
Formats representing coordinate reference systems
GeoFormatTypes.EPSG
— TypeEPSG <: CoordinateReferenceSystemFormat
EPSG(input)
EPSG code representing a coordinate reference system from the EPSG spatial reference system registry.
String input must start with "EPSG:". EPSG
can be converted to an Int
or String
using convert
, or another CoordinateReferenceSystemFormat
when ArchGDAL.jl is loaded.
GeoFormatTypes.ESRIWellKnownText
— TypeESRIWellKnownText <: AbstractWellKnownText
ESRIWellKnownText(x::String)
ESRIWellKnownText(::CRS, x::String)
ESRIWellKnownText(::Geom, x::String)
Wrapper for Well-known text strings, following the ESRI standard.
These may hold CRS or geometry data. The default mode is Unknown
, and conversions to either type will be attempted where possible. A specific type can be specified if it is known, e.g:
crs = ESRIWellKnownText(CRS(), crs_string)
GeoFormatTypes.Extended
— TypeExtended <: MixedFormatMode <: FormatMode
Extended()
Trait specifying that a mixed format object, like WellKnownText
, contains both geometry and coordinate reference system.
GeoFormatTypes.FormatMode
— TypeFormatMode
Traits to indicate the format type, such as Geom
, CRS
or MixedFormat
.
GeoFormatTypes.GML
— TypeGML <: MixedFormat
Wrapper for Geography Markup Language string.
These contain geometry data, but may also have embedded crs information. GML
can be converted to either a GeometryFormat
or CoordinateReferenceSystemFormat
.
GeoFormatTypes.GeoFormat
— TypeGeoFormat
Abstract supertype for geospatial data formats
GeoFormatTypes.GeoJSON
— TypeGeoJSON <: GeometryFormat
Wrapper for a GeoJSON String
or Dict
.
Conversion between Dict
and String
values is not yet handled.
GeoFormatTypes.Geom
— TypeGeom <: FormatMode
Geom()
Trait specifying that a format object, like WellKnownText
, contains geometry data.
GeoFormatTypes.GeometryFormat
— TypeGeometryFormat <: GeoFormat
Formats representing geometries. These wrappers simply mark string formats that may optionally be converted to Geoetry objects at a later point.
GeoFormatTypes.KML
— TypeKML <: GeometryFormat
Wrapper object for "Keyhole Markup Language" (KML) strings.
See: https://www.ogc.org/standards/kml/
Can be converted to a String
. Conversion to crs will convert from EPSG(4326)
, which is the default for KML.
GeoFormatTypes.MixedFormat
— TypeMixedFormat <: GeoFormat
Formats that may hold either or both coordinate reference systems and geometries.
GeoFormatTypes.MixedFormatMode
— TypeMixedFormatMode <: FormatMode
Abstract subtype of FormatMode
where both geometry and coordinate reference system data are or may be present.
GeoFormatTypes.ProjJSON
— TypeProjJSON <: CoordinateReferenceSystemFormat
ProjJSON(x::Dict{String,<:Any})
ProjJSON(x::String)
Wrapper for PROJJSON.
GeoFormatTypes.ProjString
— TypeProjString <: CoordinateReferenceSystemFormat
ProjString(x::String)
Wrapper for Proj strings. String input must start with "+proj=".
GeoFormatTypes.Unknown
— TypeUnknown <: MixedFormatMode <: FormatMode
Unknown()
Trait specifying that for a mixed format object, like WellKnownText
, it is unknown whether it stores geometry or coordinate reference system data, or both.
GeoFormatTypes.WellKnownBinary
— TypeWellKnownBinary <: MixedFormat
Wrapper for Well-known binary (WKB) objects.
These may hold CRS or geometry data. The default mode is Unknown
, and conversions to either type will be attempted where possible. A specific type can be specified if it is known, e.g:
crs = WellKnownBinary(CRS(), crs_blob)
GeoFormatTypes.WellKnownText
— TypeWellKnownText <: AbstractWellKnownText
WellKnownText(val)
WellKnownText(mode, val)
Wrapper for Well-known text (WKT) v1, following the OGC standard. These may hold CRS or geometry data.
These may hold CRS or geometry data. The default mode is Mixed()
, and conversions to either type will be attempted where possible. A specific type can be specified if it is known, e.g.:
geom = WellKnownText(Geom(), geom_string)
GeoFormatTypes.WellKnownText2
— TypeWellKnownText2 <: AbstractWellKnownText
WellKnownText2(val)
WellKnownText2(mode, val)
Wrapper for Well-known text v2 objects, following the new OGC standard.
These may hold CRS or geometry data. The default mode is Unknown()
, and conversions to either type will be attempted where possible. A specific type can be specified if it is known, e.g.:
crs = WellKnownText2(CRS(), crs_string)
GeoFormatTypes.val
— Functionval(f::GeoFormat)
Get the contained value of a GeoFormat type.