Документация Engee

GeoJSON

Документация по GeoJSON.

Сведения о наиболее часто применяемых методах см. в документации по GeoInterfaces.jl и Tables.jl.

GeoJSON

Считывает файлы GeoJSON с использованием JSON3.jl и предоставляет интерфейс Tables.jl.

Этот пакет во многом вдохновлен и заимствует код из пакета JSONTables.jl, который решает те же задачи для общего формата JSON. GeoJSON помещает геометрию в столбец geometry и добавляет все свойства в столбцы по отдельности.

Использование

GeoJSON предоставляет только простые методы read и write. GeoJSON.read принимает путь к файлу, строку, поток ввода-вывода или байты.

julia> using GeoJSON, DataFrames

julia> fc = GeoJSON.read("path/to/a.geojson")
FeatureCollection with 171 Features

julia> first(fc)
Feature with geometry type Polygon and properties Symbol[:geometry, :timestamp, :version, :changeset, :user, :uid, :area, :highway, :type, :id]

# используем интерфейс Tables для преобразования формата, извлечения данных или перебора строк
julia> df = DataFrame(fc)

# запись в строку
julia> write(fc)
"{\"type\":\"FeatureCollection\",\"features\":[{\"type\":\"Feature\",\"geometry\":{\"type\":\"Polygon\",\"coordinates\":[[[-69.99693762899992...

Доступ по HTTP

Чтобы прочитать данные JSON по URL-адресу, используйте HTTP.jl.

julia> using GeoJSON, HTTP

julia> resp = HTTP.get("https://path/to/file.json")

julia> fc = GeoJSON.read(resp.body)
CRS(type::String, properties::Dict{String,Any})

Эталонная система координат для совместимости. Ее не следует использовать, так как она не входит в спецификацию GeoJSON. CRS объекта GeoJSON всегда равен WGS84.

Feature{D,T}(id::Union{String,Nothing}, bbox::Union{Nothing,Vector{T}}, geometry::Union{Nothing,AbstractGeometry{D,T}}, properties::Union{Nothing,Dict{String,Any}})

Объект Feature с D-мерной геометрией.

FeatureCollection{D,T}(bbox::Union{Nothing,Vector{T}}, features::Vector{Feature{D,T}}, crs::Union{Nothing,CRS})

Объект FeatureCollection с D-мерной геометрией признаков.

GeometryCollection{D,T}(geometries::Vector{AbstractGeometry{D,T}})

Геометрия GeometryCollection с D измерениями.

LazyFeatureCollection{D,T}(bbox::Union{Nothing,Vector{T}}, features::Vector{LazyFeature{D,T}}, crs::Union{Nothing,String})

Объект FeatureCollection с D-мерной геометрией признаков, которые анализируются из строки GeoJSON в отложенном режиме. При обращении к коллекции по индексу производится анализ признака. Это может быть более эффективно, если вас интересуют только несколько функций из большой коллекции или требуется итеративный анализ очень большой коллекции без ее полной загрузки в память.

LineString{D,T}(coordinates::Union{Nothing,Vector{NTuple{D,T}}})

Геометрия LineString с D измерениями.

MultiLineString{D,T}(coordinates::Union{Nothing,Vector{Vector{NTuple{D,T}}}})

Геометрия MultiLineString с D измерениями.

MultiPoint{D,T}(coordinates::Union{Nothing,Vector{NTuple{D,T}}})

Геометрия MultiPoint с D измерениями.

MultiPolygon{D,T}(coordinates::Union{Nothing,Vector{Vector{Vector{NTuple{D,T}}}}})

Геометрия MultiPolygon с D измерениями.

Point{D,T}(coordinates::Union{Nothing,NTuple{D,T}})

Геометрия Point с D измерениями.

Polygon{D,T}(coordinates::Union{Nothing,Vector{Vector{NTuple{D,T}}}})

Геометрия Polygon с D измерениями.

GeoJSON.read(json; lazyfc=false, ndim=2, numbertype=Float32)

Считывает данные GeoJSON в объект, совместимый с GeoInterface.jl.

Аргументы

  • json: путь к файлу, строка, поток ввода-вывода или байты (AbstractVector{UInt8) со считываемыми данными JSON.

  • lazyfc::Bool=false: при считывании очень больших коллекций признаков (более 1 млн)

задайте lazyfc=true, чтобы они анализировались с передачей в память только при обращении к ним.

  • ndim::Int=2: используйте значение 3 для трехмерных геометрий; оно также применяется в случае сбоя двухмерного анализа.

  • numbertype::DataType=Float32: если требуется точность, используйте Float64.

write([io], geometry)

Записывает совместимый с GeoInterface.jl признак или геометрию в объект String GeoJSON.

io может быть строкой String с именем файла или объектом IO.