GeoFormatTypes.jl
GeoFormatTypes.GeoFormatTypes — Module
GeoFormatTypes
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 — Type
AbstractWellKnownText <: MixedFormatWell known text has a number of versions and standards, and can hold either coordinate reference systems or geometric data in string format.
GeoFormatTypes.CRS — Type
CRS <: FormatMode
CRS()Trait specifying that a format object, like WellKnownText, contains only coordinate reference system data.
GeoFormatTypes.CoordSys — Type
CoordSys <: CoordinateReferenceSystemFormat
CoordSys(val)Wrapper for a Mapinfo CoordSys string.
GeoFormatTypes.CoordinateReferenceSystemFormat — Type
CoordinateReferenceSystemFormat <: GeoFormatFormats representing coordinate reference systems
GeoFormatTypes.EPSG — Type
EPSG <: 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 — Type
ESRIWellKnownText <: 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 — Type
Extended <: MixedFormatMode <: FormatMode
Extended()Trait specifying that a mixed format object, like WellKnownText, contains both geometry and coordinate reference system.
GeoFormatTypes.FormatMode — Type
FormatModeTraits to indicate the format type, such as Geom, CRS or MixedFormat.
GeoFormatTypes.GML — Type
GML <: MixedFormatWrapper 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 — Type
GeoFormatAbstract supertype for geospatial data formats
GeoFormatTypes.GeoJSON — Type
GeoJSON <: GeometryFormatWrapper for a GeoJSON String or Dict.
Conversion between Dict and String values is not yet handled.
GeoFormatTypes.Geom — Type
Geom <: FormatMode
Geom()Trait specifying that a format object, like WellKnownText, contains geometry data.
GeoFormatTypes.GeometryFormat — Type
GeometryFormat <: GeoFormatFormats representing geometries. These wrappers simply mark string formats that may optionally be converted to Geometry objects at a later point.
GeoFormatTypes.KML — Type
KML <: GeometryFormatWrapper 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 — Type
MixedFormat <: GeoFormatFormats that may hold either or both coordinate reference systems and geometries.
GeoFormatTypes.MixedFormatMode — Type
MixedFormatMode <: FormatMode
Abstract subtype of FormatMode where both geometry and coordinate reference system data are or may be present.
GeoFormatTypes.ProjJSON — Type
ProjJSON <: CoordinateReferenceSystemFormat
ProjJSON(x::Dict{String,<:Any})
ProjJSON(x::String)Wrapper for PROJJSON.
GeoFormatTypes.ProjString — Type
ProjString <: CoordinateReferenceSystemFormat
ProjString(x::String)Wrapper for Proj strings. String input must start with "+proj=".
GeoFormatTypes.Unknown — Type
Unknown <: 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 — Type
WellKnownBinary <: MixedFormatWrapper 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 — Type
WellKnownText <: 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 — Type
WellKnownText2 <: 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 — Function
val(f::GeoFormat)Get the contained value of a GeoFormat type.