API
GeoDataFrames.read Function
read(driver::GeoParquetDriver, fn::AbstractString; kwargs...)Read fn using the GeoParquetDriver driver. Any additional keyword arguments are passed to Parquet2.read.
read(driver::FlatGeobufDriver, fn::AbstractString; kwargs...)Read fn using the FlatGeobufDriver driver.
read(driver::GeoArrowDriver, fn::AbstractString; kwargs...)Read fn using the GeoArrowDriver driver. Any additional keyword arguments are passed to Arrow.read.
read(driver::GeoJSONDriver, fn::AbstractString; kwargs...)Read fn using the GeoJSONDriver driver.
read(fn::AbstractString; create_index=true, kwargs...)Read a file into a DataFrame. Any kwargs are passed to the driver, by default set to ArchGDALDriver. Geometry columns are wrapped in GeometryVector and indexed eagerly by default; pass create_index=false to skip building the spatial tree.
Returns a DataFrame whose geometry column(s) hold GeoInterface.jl compatible geometries, with the coordinate reference system and geometry column names stored as table metadata.
Example
julia> df = DataFrame(geometry = GeoInterface.Point.([(1.0, 2.0), (3.0, 4.0)]), name = ["a", "b"]);
julia> path = GeoDataFrames.write(joinpath(tempdir(), "example.gpkg"), df);
julia> df2 = GeoDataFrames.read(path);
julia> names(df2)
3-element Vector{String}:
"fid"
"geometry"
"name"read(driver::ArchGDALDriver, fn::AbstractString; layer::Union{Integer,AbstractString}, kwargs...)Read a file into a DataFrame using the ArchGDAL driver. By default you only get the first layer, unless you specify either the index (0 based) or name (string) of the layer. Other supported kwargs are passed to the ArchGDAL read method. The options keyword argument can be used to pass GDAL open options. Returns a DataFrame.
GeoDataFrames.write Function
write(driver::GeoParquetDriver, fn::AbstractString, table; kwargs...)Write the provided table to fn using the GeoParquetDriver driver. Any additional keyword arguments are passed to Parquet2.write.
write(driver::FlatGeobufDriver, fn::AbstractString, table; kwargs...)Write the provided table to fn using the FlatGeobufDriver driver.
Warning
This backend cannot write files yet; it will fall back to ArchGDAL.
write(driver::GeoArrowDriver, fn::AbstractString, table; kwargs...)Write the provided table to fn using the GeoArrowDriver driver. Any additional keyword arguments are passed to Arrow.write.
write(driver::GeoJSONDriver, fn::AbstractString, table; kwargs...)Write the provided table to fn using the GeoJSONDriver driver.
write(fn::AbstractString, table; kwargs...)Write the provided table to fn. A driver is selected based on the extension of fn.
Returns the path fn that was written.
Example
julia> df = DataFrame(geometry = GeoInterface.Point.([(1.0, 2.0), (3.0, 4.0)]), name = ["a", "b"]);
julia> path = GeoDataFrames.write(joinpath(tempdir(), "example.gpkg"), df);
julia> isfile(path)
truewrite(driver::AbstractDriver, fn::AbstractString, table; kwargs...)Write the provided table to fn using the specified driver. Any kwargs are passed to the driver, by default set to ArchGDALDriver. Returns the path fn that was written.
write(driver::ArchGDALDriver, fn::AbstractString, table; layer_name="data", crs::Union{GFT.GeoFormat,Nothing}=getcrs(table), driver::Union{Nothing,AbstractString}=nothing, options::Dict{String,String}=Dict(), geom_columns::Tuple{Symbol}=getgeometrycolumns(table), kwargs...)Write the provided table to fn using the ArchGDAL driver. Returns the path fn that was written.
Drivers
The following drivers are provided:
GeoDataFrames.GeoJSONDriver Type
GeoJSONDriver()Driver for reading and writing GeoJSON files, backed by the GeoJSON package. Load GeoJSON to enable it.
GeoDataFrames.ShapefileDriver Type
ShapefileDriver()Driver for reading and writing ESRI Shapefiles, backed by the Shapefile package. Load Shapefile to enable it.
GeoDataFrames.GeoParquetDriver Type
GeoParquetDriver()Driver for reading and writing (Geo)Parquet files, backed by the GeoParquet package. Load GeoParquet to enable it.
GeoDataFrames.FlatGeobufDriver Type
FlatGeobufDriver()Driver for reading and writing FlatGeobuf files, backed by the FlatGeobuf package. Load FlatGeobuf to enable it.
GeoDataFrames.ArchGDALDriver Type
ArchGDALDriver()Default driver, backed by the ArchGDAL package. Supports a wide range of formats and is always available, requiring no extra package to be loaded.
GeoDataFrames.GeoArrowDriver Type
GeoArrowDriver()Driver for reading and writing (Geo)Arrow files, backed by the GeoArrow package. Load GeoArrow to enable it.
These can be passed to the read and write functions as the first argument, but require the corresponding package to be loaded. You can find the corresponding package to load in the Package extensions section.
Utility functions
GeoDataFrames.setgeometrycolumn! Function
setgeometrycolumn!(df::DataFrame, column::Symbol)
setgeometrycolumn!(df::DataFrame, columns::Tuple{Vararg{Symbol}})Set the geometry column(s) of a GeoDataFrame df. Retrieve them with GeoInterface.geometrycolumns(df).
GeoDataFrames.setcrs! Function
setcrs!(df::DataFrame, crs)Set the coordinate reference system of the geometry column(s) of a GeoDataFrame df. Note that this overrides any existing CRS without transforming the geometries. For transforming geometries, use reproject!(df, target_crs) instead.
crs should be one of GeoFormatTypes wrappers, such as EPSG(code). Retrieve it with GeoInterface.crs(df).
GeoDataFrames.GeoDataFrame Function
GeoDataFrame(source; geometrycolumn=:geometry, geometry=:auto)Convert a supported geospatial source to a DataFrame with a GeoInterface-compatible geometry column and coordinate reference system metadata.
Loading DimensionalData.jl adds methods for dimensional arrays and stacks. Band dimensions become separate value columns. With geometry=:auto, point-sampled dimensions produce point geometry and interval-sampled dimensions produce cell extents. Use geometry=:point to represent interval-sampled dimensions by their lookup points instead.
GeometryOps.reproject Function
reproject(df::DataFrame, target_crs; [always_xy=true,])Reproject the geometries in a DataFrame df to a new Coordinate Reference System target_crs, from the current CRS. See also reproject(df, source_crs, target_crs) and the in place version reproject!(df, target_crs). always_xy (true by default) can override the default axis mapping strategy of the CRS. If true, input is assumed to be in the traditional GIS order (longitude, latitude). Returns a new DataFrame; the input df is left unchanged.
reproject(df::DataFrame, source_crs, target_crs; [always_xy=true])Reproject the geometries in a DataFrame df from the crs source_crs to a new crs target_crs. This overrides any current CRS of the Dataframe. Returns a new DataFrame; the input df is left unchanged.
GeoDataFrames.reproject! Function
reproject!(df::DataFrame, target_crs; [always_xy=true])Reproject the geometries in a DataFrame df to a new Coordinate Reference System target_crs, from the current CRS, in place. Returns the modified df.
reproject!(df::DataFrame, source_crs, target_crs; [always_xy=true])Reproject the geometries in a DataFrame df from the crs source_crs to a new crs target_crs in place. This overrides any current CRS of the Dataframe. Returns the modified df.
GeometryVector
GeoDataFrames.GeometryVector Type
GeometryVector(A[, index])Wrapper for geometry columns in GeoDataFrames.
GeometryVector behaves like a mutable AbstractVector and stores one optional spatial tree in index. Supported mutations clear that stored tree.