diff --git a/dev/404.html b/dev/404.html index dcf72a1..9b2c699 100644 --- a/dev/404.html +++ b/dev/404.html @@ -16,7 +16,7 @@
- + \ No newline at end of file diff --git a/dev/api.html b/dev/api.html index f646881..3d76041 100644 --- a/dev/api.html +++ b/dev/api.html @@ -12,21 +12,21 @@ - + -
Skip to content

API

# Tyler.ElevationProviderType.
julia
ElevationProvider(color_provider::Union{Nothing, AbstractProvider}=TileProviders.Esri(:WorldImagery); cache_size_gb=5)

Provider rendering elevation data from arcgis. This provider is special, since it uses a second provider for color information, which also means you can provide a cache size, since color tile caching has to be managed by the provider. When set to nothing, no color provider is used and the elevation data is used to color the surface with a colormap directly. Use Map(..., plot_config=Tyler.PlotConfig(colormap=colormap)) to set the colormap and other surface plot attributes.

source


# Tyler.GeoTilePointCloudProviderType.
julia
GeoTilePointCloudProvider(subset="AHN1_T")

The PointCloud provider downloads from geotiles.citg.tudelft, which spans most of the netherlands. You can specify the subset to download from, which can be one of the following:

  • AHN1_T (default): The most corse dataset, but also the fastest to download (1-5mb compressed per tile)

  • AHN2_T: More detailed dataset (~70mb per tile)

  • AHN3_T: ~250mb per tile

  • AHN4_T: 300-500mb showing much detail, takes a long time to load each tile (over 1 minute per tile). Use max_plots=5 to limit the number of tiles loaded at once.

source


# Tyler.InterpolatorType.
julia
Interpolator <: AbstractProvider
+    
Skip to content

API

# Tyler.ElevationProviderType.
julia
ElevationProvider(color_provider::Union{Nothing, AbstractProvider}=TileProviders.Esri(:WorldImagery); cache_size_gb=5)

Provider rendering elevation data from arcgis. This provider is special, since it uses a second provider for color information, which also means you can provide a cache size, since color tile caching has to be managed by the provider. When set to nothing, no color provider is used and the elevation data is used to color the surface with a colormap directly. Use Map(..., plot_config=Tyler.PlotConfig(colormap=colormap)) to set the colormap and other surface plot attributes.

source


# Tyler.GeoTilePointCloudProviderType.
julia
GeoTilePointCloudProvider(subset="AHN1_T")

The PointCloud provider downloads from geotiles.citg.tudelft, which spans most of the netherlands. You can specify the subset to download from, which can be one of the following:

  • AHN1_T (default): The most corse dataset, but also the fastest to download (1-5mb compressed per tile)

  • AHN2_T: More detailed dataset (~70mb per tile)

  • AHN3_T: ~250mb per tile

  • AHN4_T: 300-500mb showing much detail, takes a long time to load each tile (over 1 minute per tile). Use max_plots=5 to limit the number of tiles loaded at once.

source


# Tyler.InterpolatorType.
julia
Interpolator <: AbstractProvider
 
-Interpolator(f; colormap=:thermal, options=Dict(:minzoom=1, :maxzoom=19))

Provides tiles by interpolating them on the fly.

  • f: an Interpolations.jl interpolator or similar.

  • colormap: A Symbol or Vector{RGBA{Float32}}. Default is :thermal.

source


# Tyler.MapType.
julia
Map(extent, [extent_crs=wgs84]; kw...)
-Map(map::Map; ...) # layering another provider on top of an existing map

Tylers main object, it plots tiles onto a Makie.jl Axis, downloading and plotting more tiles as you zoom and pan. When layering providers over each other with Map(map::Map; ...), you can use toggle_visibility!(map) to hide/unhide them.

Arguments

-extent: the initial extent of the map, as a GeometryBasics.Rect or an Extents.Extent in the projection of extent_crs. -extent_crs: Any GeoFormatTypes compatible crs, the default is wsg84.

Keywords

-size: The figure size. -figure: an existing Makie.Figure object. -crs: The providers coordinate reference system. -provider: a TileProviders.jl Provider. -max_parallel_downloads: limits the attempted simultaneous downloads, with a default of 16. -cache_size_gb: limits the cache for storing tiles, with a default of 5. -fetching_scheme=Halo2DTiling(): The tile fetching scheme. Can be SimpleTiling(), Halo2DTiling(), or Tiling3D(). -scale: a tile scaling factor. Low number decrease the downloads but reduce the resolution. The default is 0.5. -plot_config: A PlotConfig object to change the way tiles are plotted. -max_zoom: The maximum zoom level to display, with a default of TileProviders.max_zoom(provider). -max_plots=400: The maximum number of plots to keep displayed at the same time.

source


# Tyler.MapMethod.
julia
Map(m::Map; kw...)

Layering constructor to show another provider on top of an existing map.

Example

julia
lat, lon = (52.395593, 4.884704)
+Interpolator(f; colormap=:thermal, options=Dict(:minzoom=1, :maxzoom=19))

Provides tiles by interpolating them on the fly.

  • f: an Interpolations.jl interpolator or similar.

  • colormap: A Symbol or Vector{RGBA{Float32}}. Default is :thermal.

source


# Tyler.MapType.
julia
Map(extent, [extent_crs=wgs84]; kw...)
+Map(map::Map; ...) # layering another provider on top of an existing map

Tylers main object, it plots tiles onto a Makie.jl Axis, downloading and plotting more tiles as you zoom and pan. When layering providers over each other with Map(map::Map; ...), you can use toggle_visibility!(map) to hide/unhide them.

Arguments

-extent: the initial extent of the map, as a GeometryBasics.Rect or an Extents.Extent in the projection of extent_crs. -extent_crs: Any GeoFormatTypes compatible crs, the default is wsg84.

Keywords

-size: The figure size. -figure: an existing Makie.Figure object. -crs: The providers coordinate reference system. -provider: a TileProviders.jl Provider. -max_parallel_downloads: limits the attempted simultaneous downloads, with a default of 16. -cache_size_gb: limits the cache for storing tiles, with a default of 5. -fetching_scheme=Halo2DTiling(): The tile fetching scheme. Can be SimpleTiling(), Halo2DTiling(), or Tiling3D(). -scale: a tile scaling factor. Low number decrease the downloads but reduce the resolution. The default is 0.5. -plot_config: A PlotConfig object to change the way tiles are plotted. -max_zoom: The maximum zoom level to display, with a default of TileProviders.max_zoom(provider). -max_plots=400: The maximum number of plots to keep displayed at the same time.

source


# Tyler.MapMethod.
julia
Map(m::Map; kw...)

Layering constructor to show another provider on top of an existing map.

Example

julia
lat, lon = (52.395593, 4.884704)
 delta = 0.01
 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta)
 m1 = Tyler.Map(ext)
 m2 = Tyler.Map(m1; provider=TileProviders.Esri(:WorldImagery), plot_config=Tyler.PlotConfig(alpha=0.5, postprocess=(p-> translate!(p, 0, 0, 1f0))))
-m1

source


# Tyler.PlotConfigMethod.
julia
PlotConfig(; preprocess=identity, postprocess=identity, plot_attributes...)

Creates a PlotConfig object to influence how tiles are being plotted.

  • preprocess(tile_data): Function to preprocess the data before plotting. For a tile provider returning image data, preprocess will be called on the image data before plotting.

  • postprocess(tile_data): Function to mutate the plot object after creation. Can be used like this: (plot)-> translate!(plot, 0, 0, 1).

  • plot_attributes: Additional attributes to pass to the plot

Example

julia
using Tyler, GLMakie
+m1

source


# Tyler.PlotConfigMethod.
julia
PlotConfig(; preprocess=identity, postprocess=identity, plot_attributes...)

Creates a PlotConfig object to influence how tiles are being plotted.

  • preprocess(tile_data): Function to preprocess the data before plotting. For a tile provider returning image data, preprocess will be called on the image data before plotting.

  • postprocess(tile_data): Function to mutate the plot object after creation. Can be used like this: (plot)-> translate!(plot, 0, 0, 1).

  • plot_attributes: Additional attributes to pass to the plot

Example

julia
using Tyler, GLMakie
 
 config = PlotConfig(
     preprocess = (data) -> data .+ 1,
@@ -36,8 +36,8 @@
 lat, lon = (52.395593, 4.884704)
 delta = 0.1
 extent = Extent(; X=(lon - delta / 2, lon + delta / 2), Y=(lat - delta / 2, lat + delta / 2))
-Tyler.Map(extent; provider=Tyler.TileProviders.Esri(:WorldImagery), plot_config=config)

source


- +Tyler.Map(extent; provider=Tyler.TileProviders.Esri(:WorldImagery), plot_config=config)

source


+ \ No newline at end of file diff --git a/dev/assets/gnjamlo.D4IVceST.png b/dev/assets/agqkdsy.D4IVceST.png similarity index 100% rename from dev/assets/gnjamlo.D4IVceST.png rename to dev/assets/agqkdsy.D4IVceST.png diff --git a/dev/assets/api.md.B7BUmts8.js b/dev/assets/api.md.CYmrZO3C.js similarity index 97% rename from dev/assets/api.md.B7BUmts8.js rename to dev/assets/api.md.CYmrZO3C.js index 7c748f8..06e3f4d 100644 --- a/dev/assets/api.md.B7BUmts8.js +++ b/dev/assets/api.md.CYmrZO3C.js @@ -1,12 +1,12 @@ -import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.nwxVq5pq.js";const c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),t={name:"api.md"},l=e(`

API

# Tyler.ElevationProviderType.
julia
ElevationProvider(color_provider::Union{Nothing, AbstractProvider}=TileProviders.Esri(:WorldImagery); cache_size_gb=5)

Provider rendering elevation data from arcgis. This provider is special, since it uses a second provider for color information, which also means you can provide a cache size, since color tile caching has to be managed by the provider. When set to nothing, no color provider is used and the elevation data is used to color the surface with a colormap directly. Use Map(..., plot_config=Tyler.PlotConfig(colormap=colormap)) to set the colormap and other surface plot attributes.

source


# Tyler.GeoTilePointCloudProviderType.
julia
GeoTilePointCloudProvider(subset="AHN1_T")

The PointCloud provider downloads from geotiles.citg.tudelft, which spans most of the netherlands. You can specify the subset to download from, which can be one of the following:

source


# Tyler.InterpolatorType.
julia
Interpolator <: AbstractProvider
+import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.nwxVq5pq.js";const c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"api.md","filePath":"api.md","lastUpdated":null}'),t={name:"api.md"},l=e(`

API

# Tyler.ElevationProviderType.
julia
ElevationProvider(color_provider::Union{Nothing, AbstractProvider}=TileProviders.Esri(:WorldImagery); cache_size_gb=5)

Provider rendering elevation data from arcgis. This provider is special, since it uses a second provider for color information, which also means you can provide a cache size, since color tile caching has to be managed by the provider. When set to nothing, no color provider is used and the elevation data is used to color the surface with a colormap directly. Use Map(..., plot_config=Tyler.PlotConfig(colormap=colormap)) to set the colormap and other surface plot attributes.

source


# Tyler.GeoTilePointCloudProviderType.
julia
GeoTilePointCloudProvider(subset="AHN1_T")

The PointCloud provider downloads from geotiles.citg.tudelft, which spans most of the netherlands. You can specify the subset to download from, which can be one of the following:

  • AHN1_T (default): The most corse dataset, but also the fastest to download (1-5mb compressed per tile)

  • AHN2_T: More detailed dataset (~70mb per tile)

  • AHN3_T: ~250mb per tile

  • AHN4_T: 300-500mb showing much detail, takes a long time to load each tile (over 1 minute per tile). Use max_plots=5 to limit the number of tiles loaded at once.

source


# Tyler.InterpolatorType.
julia
Interpolator <: AbstractProvider
 
-Interpolator(f; colormap=:thermal, options=Dict(:minzoom=1, :maxzoom=19))

Provides tiles by interpolating them on the fly.

  • f: an Interpolations.jl interpolator or similar.

  • colormap: A Symbol or Vector{RGBA{Float32}}. Default is :thermal.

source


# Tyler.MapType.
julia
Map(extent, [extent_crs=wgs84]; kw...)
-Map(map::Map; ...) # layering another provider on top of an existing map

Tylers main object, it plots tiles onto a Makie.jl Axis, downloading and plotting more tiles as you zoom and pan. When layering providers over each other with Map(map::Map; ...), you can use toggle_visibility!(map) to hide/unhide them.

Arguments

-extent: the initial extent of the map, as a GeometryBasics.Rect or an Extents.Extent in the projection of extent_crs. -extent_crs: Any GeoFormatTypes compatible crs, the default is wsg84.

Keywords

-size: The figure size. -figure: an existing Makie.Figure object. -crs: The providers coordinate reference system. -provider: a TileProviders.jl Provider. -max_parallel_downloads: limits the attempted simultaneous downloads, with a default of 16. -cache_size_gb: limits the cache for storing tiles, with a default of 5. -fetching_scheme=Halo2DTiling(): The tile fetching scheme. Can be SimpleTiling(), Halo2DTiling(), or Tiling3D(). -scale: a tile scaling factor. Low number decrease the downloads but reduce the resolution. The default is 0.5. -plot_config: A PlotConfig object to change the way tiles are plotted. -max_zoom: The maximum zoom level to display, with a default of TileProviders.max_zoom(provider). -max_plots=400: The maximum number of plots to keep displayed at the same time.

source


# Tyler.MapMethod.
julia
Map(m::Map; kw...)

Layering constructor to show another provider on top of an existing map.

Example

julia
lat, lon = (52.395593, 4.884704)
+Interpolator(f; colormap=:thermal, options=Dict(:minzoom=1, :maxzoom=19))

Provides tiles by interpolating them on the fly.

  • f: an Interpolations.jl interpolator or similar.

  • colormap: A Symbol or Vector{RGBA{Float32}}. Default is :thermal.

source


# Tyler.MapType.
julia
Map(extent, [extent_crs=wgs84]; kw...)
+Map(map::Map; ...) # layering another provider on top of an existing map

Tylers main object, it plots tiles onto a Makie.jl Axis, downloading and plotting more tiles as you zoom and pan. When layering providers over each other with Map(map::Map; ...), you can use toggle_visibility!(map) to hide/unhide them.

Arguments

-extent: the initial extent of the map, as a GeometryBasics.Rect or an Extents.Extent in the projection of extent_crs. -extent_crs: Any GeoFormatTypes compatible crs, the default is wsg84.

Keywords

-size: The figure size. -figure: an existing Makie.Figure object. -crs: The providers coordinate reference system. -provider: a TileProviders.jl Provider. -max_parallel_downloads: limits the attempted simultaneous downloads, with a default of 16. -cache_size_gb: limits the cache for storing tiles, with a default of 5. -fetching_scheme=Halo2DTiling(): The tile fetching scheme. Can be SimpleTiling(), Halo2DTiling(), or Tiling3D(). -scale: a tile scaling factor. Low number decrease the downloads but reduce the resolution. The default is 0.5. -plot_config: A PlotConfig object to change the way tiles are plotted. -max_zoom: The maximum zoom level to display, with a default of TileProviders.max_zoom(provider). -max_plots=400: The maximum number of plots to keep displayed at the same time.

source


# Tyler.MapMethod.
julia
Map(m::Map; kw...)

Layering constructor to show another provider on top of an existing map.

Example

julia
lat, lon = (52.395593, 4.884704)
 delta = 0.01
 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta)
 m1 = Tyler.Map(ext)
 m2 = Tyler.Map(m1; provider=TileProviders.Esri(:WorldImagery), plot_config=Tyler.PlotConfig(alpha=0.5, postprocess=(p-> translate!(p, 0, 0, 1f0))))
-m1

source


# Tyler.PlotConfigMethod.
julia
PlotConfig(; preprocess=identity, postprocess=identity, plot_attributes...)

Creates a PlotConfig object to influence how tiles are being plotted.

  • preprocess(tile_data): Function to preprocess the data before plotting. For a tile provider returning image data, preprocess will be called on the image data before plotting.

  • postprocess(tile_data): Function to mutate the plot object after creation. Can be used like this: (plot)-> translate!(plot, 0, 0, 1).

  • plot_attributes: Additional attributes to pass to the plot

Example

julia
using Tyler, GLMakie
+m1

source


# Tyler.PlotConfigMethod.
julia
PlotConfig(; preprocess=identity, postprocess=identity, plot_attributes...)

Creates a PlotConfig object to influence how tiles are being plotted.

  • preprocess(tile_data): Function to preprocess the data before plotting. For a tile provider returning image data, preprocess will be called on the image data before plotting.

  • postprocess(tile_data): Function to mutate the plot object after creation. Can be used like this: (plot)-> translate!(plot, 0, 0, 1).

  • plot_attributes: Additional attributes to pass to the plot

Example

julia
using Tyler, GLMakie
 
 config = PlotConfig(
     preprocess = (data) -> data .+ 1,
@@ -16,4 +16,4 @@ import{_ as i,c as s,o as a,a7 as e}from"./chunks/framework.nwxVq5pq.js";const c
 lat, lon = (52.395593, 4.884704)
 delta = 0.1
 extent = Extent(; X=(lon - delta / 2, lon + delta / 2), Y=(lat - delta / 2, lat + delta / 2))
-Tyler.Map(extent; provider=Tyler.TileProviders.Esri(:WorldImagery), plot_config=config)

source


`,13),h=[l];function n(p,k,r,d,o,E){return a(),s("div",null,h)}const y=i(t,[["render",n]]);export{c as __pageData,y as default}; +Tyler.Map(extent; provider=Tyler.TileProviders.Esri(:WorldImagery), plot_config=config)

source


`,13),h=[l];function n(p,k,r,d,o,E){return a(),s("div",null,h)}const y=i(t,[["render",n]]);export{c as __pageData,y as default}; diff --git a/dev/assets/api.md.B7BUmts8.lean.js b/dev/assets/api.md.CYmrZO3C.lean.js similarity index 100% rename from dev/assets/api.md.B7BUmts8.lean.js rename to dev/assets/api.md.CYmrZO3C.lean.js diff --git a/dev/assets/fhojxsm.CWBOpJST.png b/dev/assets/fdnfwyt.CWBOpJST.png similarity index 100% rename from dev/assets/fhojxsm.CWBOpJST.png rename to dev/assets/fdnfwyt.CWBOpJST.png diff --git a/dev/assets/sfrzyqb.ClPOavzS.png b/dev/assets/fhffojy.ClPOavzS.png similarity index 100% rename from dev/assets/sfrzyqb.ClPOavzS.png rename to dev/assets/fhffojy.ClPOavzS.png diff --git a/dev/assets/getting_started.md.xHrgP20f.js b/dev/assets/getting_started.md.CggpcE5Z.js similarity index 98% rename from dev/assets/getting_started.md.xHrgP20f.js rename to dev/assets/getting_started.md.CggpcE5Z.js index e2479ba..07d0c70 100644 --- a/dev/assets/getting_started.md.xHrgP20f.js +++ b/dev/assets/getting_started.md.CggpcE5Z.js @@ -1,4 +1,4 @@ -import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const t="/Tyler.jl/dev/assets/hufarev.5ZR8LzbV.png",e="/Tyler.jl/dev/assets/goedxcq.BzR0Inj3.png",l="/Tyler.jl/dev/assets/lanmleb.Dfb-ygTk.jpeg",u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),p={name:"getting_started.md"},h=n(`

Tyler.jl

A package for downloading map tiles on demand from different data source providers.

This package is currently in the initial phase of development. It needs support. Sponsorships are welcome!

Installation

In the Julia REPL type:

julia
] add Tyler

The ] character starts the Julia package manager. Hit backspace key to return to Julia prompt.

Or, explicitly use Pkg

julia
using Pkg
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const t="/Tyler.jl/dev/assets/zxcnmqj.5ZR8LzbV.png",e="/Tyler.jl/dev/assets/tdpmxgn.CkRD7Hgn.png",l="/Tyler.jl/dev/assets/psteboy.Dfb-ygTk.jpeg",u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),p={name:"getting_started.md"},h=n(`

Tyler.jl

A package for downloading map tiles on demand from different data source providers.

This package is currently in the initial phase of development. It needs support. Sponsorships are welcome!

Installation

In the Julia REPL type:

julia
] add Tyler

The ] character starts the Julia package manager. Hit backspace key to return to Julia prompt.

Or, explicitly use Pkg

julia
using Pkg
 Pkg.add(["Tyler.jl"])

Demo: London

julia
using Tyler, GLMakie
 m = Tyler.Map(Rect2f(-0.0921, 51.5, 0.04, 0.025))

INFO

A Rect2f definition takes as input the origin, first two entries, and the width and hight, last two numbers.

Tile provider

We can use a different tile provider as well as any style theme from Makie as follows:

julia
using GLMakie, Tyler
 using Tyler.TileProviders
diff --git a/dev/assets/getting_started.md.xHrgP20f.lean.js b/dev/assets/getting_started.md.CggpcE5Z.lean.js
similarity index 64%
rename from dev/assets/getting_started.md.xHrgP20f.lean.js
rename to dev/assets/getting_started.md.CggpcE5Z.lean.js
index 8ae9387..763b2fe 100644
--- a/dev/assets/getting_started.md.xHrgP20f.lean.js
+++ b/dev/assets/getting_started.md.CggpcE5Z.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const t="/Tyler.jl/dev/assets/hufarev.5ZR8LzbV.png",e="/Tyler.jl/dev/assets/goedxcq.BzR0Inj3.png",l="/Tyler.jl/dev/assets/lanmleb.Dfb-ygTk.jpeg",u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),p={name:"getting_started.md"},h=n("",27),k=[h];function r(d,o,E,g,c,y){return a(),i("div",null,k)}const C=s(p,[["render",r]]);export{u as __pageData,C as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const t="/Tyler.jl/dev/assets/zxcnmqj.5ZR8LzbV.png",e="/Tyler.jl/dev/assets/tdpmxgn.CkRD7Hgn.png",l="/Tyler.jl/dev/assets/psteboy.Dfb-ygTk.jpeg",u=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"getting_started.md","filePath":"getting_started.md","lastUpdated":null}'),p={name:"getting_started.md"},h=n("",27),k=[h];function r(d,o,E,g,c,y){return a(),i("div",null,k)}const C=s(p,[["render",r]]);export{u as __pageData,C as default};
diff --git a/dev/assets/goedxcq.BzR0Inj3.png b/dev/assets/goedxcq.BzR0Inj3.png
deleted file mode 100644
index 5d9211e..0000000
Binary files a/dev/assets/goedxcq.BzR0Inj3.png and /dev/null differ
diff --git a/dev/assets/iceloss_ex.md.DHQTG4hW.js b/dev/assets/iceloss_ex.md.C6XyQ6lS.js
similarity index 99%
rename from dev/assets/iceloss_ex.md.DHQTG4hW.js
rename to dev/assets/iceloss_ex.md.C6XyQ6lS.js
index 84d47ac..de85c5b 100644
--- a/dev/assets/iceloss_ex.md.DHQTG4hW.js
+++ b/dev/assets/iceloss_ex.md.C6XyQ6lS.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/ppfzmof.BOQDrqgM.png",k="/Tyler.jl/dev/assets/jwubbzk.UCCf-SDM.png",l="/Tyler.jl/dev/assets/fnbrhyk.D1RGM03U.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"iceloss_ex.md","filePath":"iceloss_ex.md","lastUpdated":null}'),p={name:"iceloss_ex.md"},t=h(`

Greenland ice loss example: animated & interactive

julia
using Tyler
+import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/pmxjjob.BOQDrqgM.png",k="/Tyler.jl/dev/assets/nkietjr.UCCf-SDM.png",l="/Tyler.jl/dev/assets/jtjeckm.D1RGM03U.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"iceloss_ex.md","filePath":"iceloss_ex.md","lastUpdated":null}'),p={name:"iceloss_ex.md"},t=h(`

Greenland ice loss example: animated & interactive

julia
using Tyler
 using Tyler.TileProviders
 using Tyler.Extents
 using Dates
diff --git a/dev/assets/iceloss_ex.md.DHQTG4hW.lean.js b/dev/assets/iceloss_ex.md.C6XyQ6lS.lean.js
similarity index 63%
rename from dev/assets/iceloss_ex.md.DHQTG4hW.lean.js
rename to dev/assets/iceloss_ex.md.C6XyQ6lS.lean.js
index 6cd7859..daefd58 100644
--- a/dev/assets/iceloss_ex.md.DHQTG4hW.lean.js
+++ b/dev/assets/iceloss_ex.md.C6XyQ6lS.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/ppfzmof.BOQDrqgM.png",k="/Tyler.jl/dev/assets/jwubbzk.UCCf-SDM.png",l="/Tyler.jl/dev/assets/fnbrhyk.D1RGM03U.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"iceloss_ex.md","filePath":"iceloss_ex.md","lastUpdated":null}'),p={name:"iceloss_ex.md"},t=h("",26),e=[t];function E(d,r,g,y,F,c){return a(),i("div",null,e)}const u=s(p,[["render",E]]);export{C as __pageData,u as default};
+import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/pmxjjob.BOQDrqgM.png",k="/Tyler.jl/dev/assets/nkietjr.UCCf-SDM.png",l="/Tyler.jl/dev/assets/jtjeckm.D1RGM03U.png",C=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"iceloss_ex.md","filePath":"iceloss_ex.md","lastUpdated":null}'),p={name:"iceloss_ex.md"},t=h("",26),e=[t];function E(d,r,g,y,F,c){return a(),i("div",null,e)}const u=s(p,[["render",E]]);export{C as __pageData,u as default};
diff --git a/dev/assets/interpolation.md.FzBOsxTA.js b/dev/assets/interpolation.md.Bi5v-BFe.js
similarity index 99%
rename from dev/assets/interpolation.md.FzBOsxTA.js
rename to dev/assets/interpolation.md.Bi5v-BFe.js
index 0b38af8..302e9f8 100644
--- a/dev/assets/interpolation.md.FzBOsxTA.js
+++ b/dev/assets/interpolation.md.Bi5v-BFe.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/spgrhdz.ILeCrnN1.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"interpolation.md","filePath":"interpolation.md","lastUpdated":null}'),k={name:"interpolation.md"},l=n(`

Using Interpolation On The Fly

INFO

Sine waves

julia
using Tyler, GLMakie
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/qsiwkee.ILeCrnN1.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"interpolation.md","filePath":"interpolation.md","lastUpdated":null}'),k={name:"interpolation.md"},l=n(`

Using Interpolation On The Fly

INFO

Sine waves

julia
using Tyler, GLMakie
 using Interpolations: interpolate, Gridded, Linear
 
 f(lon,lat)=cosd(16*lon)+sind(16*lat)
diff --git a/dev/assets/interpolation.md.FzBOsxTA.lean.js b/dev/assets/interpolation.md.Bi5v-BFe.lean.js
similarity index 85%
rename from dev/assets/interpolation.md.FzBOsxTA.lean.js
rename to dev/assets/interpolation.md.Bi5v-BFe.lean.js
index 8a07c51..4ecde2c 100644
--- a/dev/assets/interpolation.md.FzBOsxTA.lean.js
+++ b/dev/assets/interpolation.md.Bi5v-BFe.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/spgrhdz.ILeCrnN1.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"interpolation.md","filePath":"interpolation.md","lastUpdated":null}'),k={name:"interpolation.md"},l=n("",6),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(k,[["render",p]]);export{o as __pageData,c as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/qsiwkee.ILeCrnN1.png",o=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"interpolation.md","filePath":"interpolation.md","lastUpdated":null}'),k={name:"interpolation.md"},l=n("",6),t=[l];function p(e,E,r,d,g,y){return a(),i("div",null,t)}const c=s(k,[["render",p]]);export{o as __pageData,c as default};
diff --git a/dev/assets/fnbrhyk.D1RGM03U.png b/dev/assets/jtjeckm.D1RGM03U.png
similarity index 100%
rename from dev/assets/fnbrhyk.D1RGM03U.png
rename to dev/assets/jtjeckm.D1RGM03U.png
diff --git a/dev/assets/gacchaj.C15-rSlK.png b/dev/assets/knoikvl.C15-rSlK.png
similarity index 100%
rename from dev/assets/gacchaj.C15-rSlK.png
rename to dev/assets/knoikvl.C15-rSlK.png
diff --git a/dev/assets/map-3d.md.Dk-Ilc2Z.js b/dev/assets/map-3d.md.BTmyEh5P.js
similarity index 99%
rename from dev/assets/map-3d.md.Dk-Ilc2Z.js
rename to dev/assets/map-3d.md.BTmyEh5P.js
index 6500739..7dae268 100644
--- a/dev/assets/map-3d.md.Dk-Ilc2Z.js
+++ b/dev/assets/map-3d.md.BTmyEh5P.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const k="/Tyler.jl/dev/assets/fhojxsm.CWBOpJST.png",n="/Tyler.jl/dev/assets/vbxiyyk.DI256DNy.png",l="/Tyler.jl/dev/assets/hxnzhoq.Bp6QQMSt.png",t="/Tyler.jl/dev/assets/jvlebvx.MJxNWkuo.png",p="/Tyler.jl/dev/assets/alpine.CXfd9LFs.png",e="/Tyler.jl/dev/assets/pointclouds.CWR3APBN.png",B=JSON.parse('{"title":"Map3D","description":"","frontmatter":{},"headers":[],"relativePath":"map-3d.md","filePath":"map-3d.md","lastUpdated":null}'),E={name:"map-3d.md"},r=h(`

Map3D

Tyler also offers to view tiles in 3D, and offers a simple Elevation and PointCloud provider.

julia
using Tyler, GLMakie
+import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const k="/Tyler.jl/dev/assets/fdnfwyt.CWBOpJST.png",n="/Tyler.jl/dev/assets/uorjiyk.DI256DNy.png",l="/Tyler.jl/dev/assets/pgkucip.Bp6QQMSt.png",t="/Tyler.jl/dev/assets/winkirv.MJxNWkuo.png",p="/Tyler.jl/dev/assets/alpine.CXfd9LFs.png",e="/Tyler.jl/dev/assets/pointclouds.CWR3APBN.png",B=JSON.parse('{"title":"Map3D","description":"","frontmatter":{},"headers":[],"relativePath":"map-3d.md","filePath":"map-3d.md","lastUpdated":null}'),E={name:"map-3d.md"},r=h(`

Map3D

Tyler also offers to view tiles in 3D, and offers a simple Elevation and PointCloud provider.

julia
using Tyler, GLMakie
 using Tyler: ElevationProvider
 
 lat, lon = (47.087441, 13.377214)
diff --git a/dev/assets/map-3d.md.Dk-Ilc2Z.lean.js b/dev/assets/map-3d.md.BTmyEh5P.lean.js
similarity index 71%
rename from dev/assets/map-3d.md.Dk-Ilc2Z.lean.js
rename to dev/assets/map-3d.md.BTmyEh5P.lean.js
index 8dc9bff..aa14dad 100644
--- a/dev/assets/map-3d.md.Dk-Ilc2Z.lean.js
+++ b/dev/assets/map-3d.md.BTmyEh5P.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const k="/Tyler.jl/dev/assets/fhojxsm.CWBOpJST.png",n="/Tyler.jl/dev/assets/vbxiyyk.DI256DNy.png",l="/Tyler.jl/dev/assets/hxnzhoq.Bp6QQMSt.png",t="/Tyler.jl/dev/assets/jvlebvx.MJxNWkuo.png",p="/Tyler.jl/dev/assets/alpine.CXfd9LFs.png",e="/Tyler.jl/dev/assets/pointclouds.CWR3APBN.png",B=JSON.parse('{"title":"Map3D","description":"","frontmatter":{},"headers":[],"relativePath":"map-3d.md","filePath":"map-3d.md","lastUpdated":null}'),E={name:"map-3d.md"},r=h("",24),d=[r];function g(y,F,o,C,c,D){return a(),i("div",null,d)}const u=s(E,[["render",g]]);export{B as __pageData,u as default};
+import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const k="/Tyler.jl/dev/assets/fdnfwyt.CWBOpJST.png",n="/Tyler.jl/dev/assets/uorjiyk.DI256DNy.png",l="/Tyler.jl/dev/assets/pgkucip.Bp6QQMSt.png",t="/Tyler.jl/dev/assets/winkirv.MJxNWkuo.png",p="/Tyler.jl/dev/assets/alpine.CXfd9LFs.png",e="/Tyler.jl/dev/assets/pointclouds.CWR3APBN.png",B=JSON.parse('{"title":"Map3D","description":"","frontmatter":{},"headers":[],"relativePath":"map-3d.md","filePath":"map-3d.md","lastUpdated":null}'),E={name:"map-3d.md"},r=h("",24),d=[r];function g(y,F,o,C,c,D){return a(),i("div",null,d)}const u=s(E,[["render",g]]);export{B as __pageData,u as default};
diff --git a/dev/assets/xvmncrp.Cgkv0qLG.png b/dev/assets/mijzmbj.Cgkv0qLG.png
similarity index 100%
rename from dev/assets/xvmncrp.Cgkv0qLG.png
rename to dev/assets/mijzmbj.Cgkv0qLG.png
diff --git a/dev/assets/jwubbzk.UCCf-SDM.png b/dev/assets/nkietjr.UCCf-SDM.png
similarity index 100%
rename from dev/assets/jwubbzk.UCCf-SDM.png
rename to dev/assets/nkietjr.UCCf-SDM.png
diff --git a/dev/assets/osmmakie.md.BIFnY-Fn.js b/dev/assets/osmmakie.md.B2dk2JQn.js
similarity index 99%
rename from dev/assets/osmmakie.md.BIFnY-Fn.js
rename to dev/assets/osmmakie.md.B2dk2JQn.js
index 3039deb..c42643e 100644
--- a/dev/assets/osmmakie.md.BIFnY-Fn.js
+++ b/dev/assets/osmmakie.md.B2dk2JQn.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/gnjamlo.D4IVceST.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"osmmakie.md","filePath":"osmmakie.md","lastUpdated":null}'),k={name:"osmmakie.md"},l=n(`

OpenStreetMap data (OSM)

In this example, we combine OpenStreetMap data, loading some roads and buildings and plotting them on top of a Tyler map.

julia
using Tyler, Tyler.TileProviders
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/agqkdsy.D4IVceST.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"osmmakie.md","filePath":"osmmakie.md","lastUpdated":null}'),k={name:"osmmakie.md"},l=n(`

OpenStreetMap data (OSM)

In this example, we combine OpenStreetMap data, loading some roads and buildings and plotting them on top of a Tyler map.

julia
using Tyler, Tyler.TileProviders
 using GLMakie, OSMMakie, LightOSM
 
 area = (
diff --git a/dev/assets/osmmakie.md.BIFnY-Fn.lean.js b/dev/assets/osmmakie.md.B2dk2JQn.lean.js
similarity index 85%
rename from dev/assets/osmmakie.md.BIFnY-Fn.lean.js
rename to dev/assets/osmmakie.md.B2dk2JQn.lean.js
index e537214..ff0ec34 100644
--- a/dev/assets/osmmakie.md.BIFnY-Fn.lean.js
+++ b/dev/assets/osmmakie.md.B2dk2JQn.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/gnjamlo.D4IVceST.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"osmmakie.md","filePath":"osmmakie.md","lastUpdated":null}'),k={name:"osmmakie.md"},l=n("",4),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{F as __pageData,c as default};
+import{_ as s,c as i,o as a,a7 as n}from"./chunks/framework.nwxVq5pq.js";const h="/Tyler.jl/dev/assets/agqkdsy.D4IVceST.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"osmmakie.md","filePath":"osmmakie.md","lastUpdated":null}'),k={name:"osmmakie.md"},l=n("",4),p=[l];function t(e,E,r,d,g,y){return a(),i("div",null,p)}const c=s(k,[["render",t]]);export{F as __pageData,c as default};
diff --git a/dev/assets/hxnzhoq.Bp6QQMSt.png b/dev/assets/pgkucip.Bp6QQMSt.png
similarity index 100%
rename from dev/assets/hxnzhoq.Bp6QQMSt.png
rename to dev/assets/pgkucip.Bp6QQMSt.png
diff --git a/dev/assets/ppfzmof.BOQDrqgM.png b/dev/assets/pmxjjob.BOQDrqgM.png
similarity index 100%
rename from dev/assets/ppfzmof.BOQDrqgM.png
rename to dev/assets/pmxjjob.BOQDrqgM.png
diff --git a/dev/assets/points_poly_text.md.DAl0UcON.js b/dev/assets/points_poly_text.md.kTY3WIHA.js
similarity index 99%
rename from dev/assets/points_poly_text.md.DAl0UcON.js
rename to dev/assets/points_poly_text.md.kTY3WIHA.js
index 0391a02..07a8358 100644
--- a/dev/assets/points_poly_text.md.DAl0UcON.js
+++ b/dev/assets/points_poly_text.md.kTY3WIHA.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/xvmncrp.Cgkv0qLG.png",h="/Tyler.jl/dev/assets/gacchaj.C15-rSlK.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"points_poly_text.md","filePath":"points_poly_text.md","lastUpdated":null}'),p={name:"points_poly_text.md"},l=t(`

Add points, polygons and text to a map

Load packages

julia
using Tyler, GLMakie
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/mijzmbj.Cgkv0qLG.png",h="/Tyler.jl/dev/assets/knoikvl.C15-rSlK.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"points_poly_text.md","filePath":"points_poly_text.md","lastUpdated":null}'),p={name:"points_poly_text.md"},l=t(`

Add points, polygons and text to a map

Load packages

julia
using Tyler, GLMakie
 using Tyler.TileProviders
 using Tyler.MapTiles
 using Tyler.Extents

select a map provider

julia
provider = TileProviders.Esri(:WorldImagery)
TileProviders.Provider("https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", Dict{Symbol, Any}(:url => "https://server.arcgisonline.com/ArcGIS/rest/services/{variant}/MapServer/tile/{z}/{y}/{x}", :attribution => "Tiles (C) Esri -- Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community", :variant => "World_Imagery", :name => "Esri.WorldImagery", :html_attribution => "Tiles &copy; Esri &mdash; Source: Esri, i-cubed, USDA, USGS, AEX, GeoEye, Getmapping, Aerogrid, IGN, IGP, UPR-EGP, and the GIS User Community"))

define a point to plot on the map

julia
# point location to add to map
diff --git a/dev/assets/points_poly_text.md.DAl0UcON.lean.js b/dev/assets/points_poly_text.md.kTY3WIHA.lean.js
similarity index 74%
rename from dev/assets/points_poly_text.md.DAl0UcON.lean.js
rename to dev/assets/points_poly_text.md.kTY3WIHA.lean.js
index a0dba63..30f7507 100644
--- a/dev/assets/points_poly_text.md.DAl0UcON.lean.js
+++ b/dev/assets/points_poly_text.md.kTY3WIHA.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/xvmncrp.Cgkv0qLG.png",h="/Tyler.jl/dev/assets/gacchaj.C15-rSlK.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"points_poly_text.md","filePath":"points_poly_text.md","lastUpdated":null}'),p={name:"points_poly_text.md"},l=t("",21),k=[l];function e(E,d,r,g,y,o){return a(),i("div",null,k)}const C=s(p,[["render",e]]);export{F as __pageData,C as default};
+import{_ as s,c as i,o as a,a7 as t}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/mijzmbj.Cgkv0qLG.png",h="/Tyler.jl/dev/assets/knoikvl.C15-rSlK.png",F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"points_poly_text.md","filePath":"points_poly_text.md","lastUpdated":null}'),p={name:"points_poly_text.md"},l=t("",21),k=[l];function e(E,d,r,g,y,o){return a(),i("div",null,k)}const C=s(p,[["render",e]]);export{F as __pageData,C as default};
diff --git a/dev/assets/lanmleb.Dfb-ygTk.jpeg b/dev/assets/psteboy.Dfb-ygTk.jpeg
similarity index 100%
rename from dev/assets/lanmleb.Dfb-ygTk.jpeg
rename to dev/assets/psteboy.Dfb-ygTk.jpeg
diff --git a/dev/assets/spgrhdz.ILeCrnN1.png b/dev/assets/qsiwkee.ILeCrnN1.png
similarity index 100%
rename from dev/assets/spgrhdz.ILeCrnN1.png
rename to dev/assets/qsiwkee.ILeCrnN1.png
diff --git a/dev/assets/tdpmxgn.CkRD7Hgn.png b/dev/assets/tdpmxgn.CkRD7Hgn.png
new file mode 100644
index 0000000..1371f4c
Binary files /dev/null and b/dev/assets/tdpmxgn.CkRD7Hgn.png differ
diff --git a/dev/assets/fbahzbk.CD7ioMBF.png b/dev/assets/umjsgls.CD7ioMBF.png
similarity index 100%
rename from dev/assets/fbahzbk.CD7ioMBF.png
rename to dev/assets/umjsgls.CD7ioMBF.png
diff --git a/dev/assets/vbxiyyk.DI256DNy.png b/dev/assets/uorjiyk.DI256DNy.png
similarity index 100%
rename from dev/assets/vbxiyyk.DI256DNy.png
rename to dev/assets/uorjiyk.DI256DNy.png
diff --git a/dev/assets/whale_shark.md.DSVXDXc7.js b/dev/assets/whale_shark.md.CTuz2tJl.js
similarity index 99%
rename from dev/assets/whale_shark.md.DSVXDXc7.js
rename to dev/assets/whale_shark.md.CTuz2tJl.js
index d94d90c..a2dcc3b 100644
--- a/dev/assets/whale_shark.md.DSVXDXc7.js
+++ b/dev/assets/whale_shark.md.CTuz2tJl.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/sfrzyqb.ClPOavzS.png",l="/Tyler.jl/dev/assets/fbahzbk.CD7ioMBF.png",k="/Tyler.jl/dev/assets/whale_shark_128786.CI6mIDHF.mp4",C=JSON.parse('{"title":"Whale shark's trajectory","description":"","frontmatter":{},"headers":[],"relativePath":"whale_shark.md","filePath":"whale_shark.md","lastUpdated":null}'),t={name:"whale_shark.md"},p=h(`

Whale shark's trajectory

The full stack of Makie's ecosystem works.

Load packages

julia
using Tyler, GLMakie
+import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/fhffojy.ClPOavzS.png",l="/Tyler.jl/dev/assets/umjsgls.CD7ioMBF.png",k="/Tyler.jl/dev/assets/whale_shark_128786.CI6mIDHF.mp4",C=JSON.parse('{"title":"Whale shark's trajectory","description":"","frontmatter":{},"headers":[],"relativePath":"whale_shark.md","filePath":"whale_shark.md","lastUpdated":null}'),t={name:"whale_shark.md"},p=h(`

Whale shark's trajectory

The full stack of Makie's ecosystem works.

Load packages

julia
using Tyler, GLMakie
 using Tyler.TileProviders
 using Tyler.MapTiles
 using CSV, DataFrames
@@ -44,4 +44,4 @@ import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n
         recordframe!(io)  # record a new frame
     end
 end
-set_theme!() # reset theme (default)

',19),e=[p];function E(r,d,g,y,o,F){return a(),i("div",null,e)}const A=s(t,[["render",E]]);export{C as __pageData,A as default}; +set_theme!() # reset theme (default)

',19),e=[p];function E(r,d,g,y,o,F){return a(),i("div",null,e)}const u=s(t,[["render",E]]);export{C as __pageData,u as default}; diff --git a/dev/assets/whale_shark.md.DSVXDXc7.lean.js b/dev/assets/whale_shark.md.CTuz2tJl.lean.js similarity index 56% rename from dev/assets/whale_shark.md.DSVXDXc7.lean.js rename to dev/assets/whale_shark.md.CTuz2tJl.lean.js index ff7e956..7116555 100644 --- a/dev/assets/whale_shark.md.DSVXDXc7.lean.js +++ b/dev/assets/whale_shark.md.CTuz2tJl.lean.js @@ -1 +1 @@ -import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/sfrzyqb.ClPOavzS.png",l="/Tyler.jl/dev/assets/fbahzbk.CD7ioMBF.png",k="/Tyler.jl/dev/assets/whale_shark_128786.CI6mIDHF.mp4",C=JSON.parse('{"title":"Whale shark's trajectory","description":"","frontmatter":{},"headers":[],"relativePath":"whale_shark.md","filePath":"whale_shark.md","lastUpdated":null}'),t={name:"whale_shark.md"},p=h("",19),e=[p];function E(r,d,g,y,o,F){return a(),i("div",null,e)}const A=s(t,[["render",E]]);export{C as __pageData,A as default}; +import{_ as s,c as i,o as a,a7 as h}from"./chunks/framework.nwxVq5pq.js";const n="/Tyler.jl/dev/assets/fhffojy.ClPOavzS.png",l="/Tyler.jl/dev/assets/umjsgls.CD7ioMBF.png",k="/Tyler.jl/dev/assets/whale_shark_128786.CI6mIDHF.mp4",C=JSON.parse('{"title":"Whale shark's trajectory","description":"","frontmatter":{},"headers":[],"relativePath":"whale_shark.md","filePath":"whale_shark.md","lastUpdated":null}'),t={name:"whale_shark.md"},p=h("",19),e=[p];function E(r,d,g,y,o,F){return a(),i("div",null,e)}const u=s(t,[["render",E]]);export{C as __pageData,u as default}; diff --git a/dev/assets/jvlebvx.MJxNWkuo.png b/dev/assets/winkirv.MJxNWkuo.png similarity index 100% rename from dev/assets/jvlebvx.MJxNWkuo.png rename to dev/assets/winkirv.MJxNWkuo.png diff --git a/dev/assets/hufarev.5ZR8LzbV.png b/dev/assets/zxcnmqj.5ZR8LzbV.png similarity index 100% rename from dev/assets/hufarev.5ZR8LzbV.png rename to dev/assets/zxcnmqj.5ZR8LzbV.png diff --git a/dev/getting_started.html b/dev/getting_started.html index d3264bb..3db5445 100644 --- a/dev/getting_started.html +++ b/dev/getting_started.html @@ -12,7 +12,7 @@ - + @@ -20,7 +20,7 @@
Skip to content

Tyler.jl

A package for downloading map tiles on demand from different data source providers.

This package is currently in the initial phase of development. It needs support. Sponsorships are welcome!

Installation

In the Julia REPL type:

julia
] add Tyler

The ] character starts the Julia package manager. Hit backspace key to return to Julia prompt.

Or, explicitly use Pkg

julia
using Pkg
 Pkg.add(["Tyler.jl"])

Demo: London

julia
using Tyler, GLMakie
-m = Tyler.Map(Rect2f(-0.0921, 51.5, 0.04, 0.025))

INFO

A Rect2f definition takes as input the origin, first two entries, and the width and hight, last two numbers.

Tile provider

We can use a different tile provider as well as any style theme from Makie as follows:

julia
using GLMakie, Tyler
+m = Tyler.Map(Rect2f(-0.0921, 51.5, 0.04, 0.025))

INFO

A Rect2f definition takes as input the origin, first two entries, and the width and hight, last two numbers.

Tile provider

We can use a different tile provider as well as any style theme from Makie as follows:

julia
using GLMakie, Tyler
 using Tyler.TileProviders
 
 provider = TileProviders.OpenStreetMap(:Mapnik)
@@ -31,7 +31,7 @@
     hidedecorations!(m.axis)
     hidespines!(m.axis)
     m
-end

Providers list

More providers are available. See the following list:

julia
providers = TileProviders.list_providers()
Dict{Function, Vector{Symbol}} with 40 entries:
+end

Providers list

More providers are available. See the following list:

julia
providers = TileProviders.list_providers()
Dict{Function, Vector{Symbol}} with 40 entries:
   Google                => [:satelite, :roadmap, :terrain, :hybrid]
   Esri                  => [:WorldStreetMap, :DeLorme, :WorldTopoMap, :WorldIma…
   OpenTopoMap           => []
@@ -65,8 +65,8 @@
     hidedecorations!(ax)
     hidespines!(ax)
     fig
-end

Next, we could add any other plot type on top of the ax axis defined above.

- +end

Next, we could add any other plot type on top of the ax axis defined above.

+ \ No newline at end of file diff --git a/dev/hashmap.json b/dev/hashmap.json index 055a069..a8e816b 100644 --- a/dev/hashmap.json +++ b/dev/hashmap.json @@ -1 +1 @@ -{"api.md":"B7BUmts8","getting_started.md":"xHrgP20f","iceloss_ex.md":"DHQTG4hW","index.md":"BnAOmo7V","interpolation.md":"FzBOsxTA","map-3d.md":"Dk-Ilc2Z","osmmakie.md":"BIFnY-Fn","points_poly_text.md":"DAl0UcON","whale_shark.md":"DSVXDXc7"} +{"api.md":"CYmrZO3C","getting_started.md":"CggpcE5Z","iceloss_ex.md":"C6XyQ6lS","index.md":"BnAOmo7V","interpolation.md":"Bi5v-BFe","map-3d.md":"BTmyEh5P","osmmakie.md":"B2dk2JQn","points_poly_text.md":"kTY3WIHA","whale_shark.md":"CTuz2tJl"} diff --git a/dev/iceloss_ex.html b/dev/iceloss_ex.html index 03ff1f3..c530b7e 100644 --- a/dev/iceloss_ex.html +++ b/dev/iceloss_ex.html @@ -12,7 +12,7 @@ - + @@ -42,8 +42,8 @@ cmap = Colors.alphacolor.(Makie.to_colormap(:thermal), alpha); cmap = Observable(cmap);

show map

julia
fig = Figure(; size = (1200,600))
 ax = Axis(fig[1,1])
-m = Tyler.Map(extent; provider, figure=fig, axis=ax)

create initial scatter plot

julia
scatter!(ax, X, Y; color = Z, colormap = cmap, colorrange = [0, n], markersize = 10);
-m

add colorbar

julia
a,b = extrema(df.Date);
+m = Tyler.Map(extent; provider, figure=fig, axis=ax)

create initial scatter plot

julia
scatter!(ax, X, Y; color = Z, colormap = cmap, colorrange = [0, n], markersize = 10);
+m

add colorbar

julia
a,b = extrema(df.Date);
 a = year(a);
 b = year(b);
 Colorbar(fig[1,2]; colormap = cmap, colorrange = [a,b],
@@ -52,7 +52,7 @@
 hidedecorations!(ax);
 # hide frames
 hidespines!(ax);
-m

loop to create animation

julia
for k = 1:15
+m

loop to create animation

julia
for k = 1:15
     # reset apha
     alpha[:] = zeros(nc);
     cmap[] = Colors.alphacolor.(cmap[], alpha)
@@ -64,7 +64,7 @@
         sleep(0.001);
     end
 end

- + \ No newline at end of file diff --git a/dev/index.html b/dev/index.html index 9c30576..258552f 100644 --- a/dev/index.html +++ b/dev/index.html @@ -19,7 +19,7 @@
Skip to content

Tyler.jl

Maps

Download Map Tiles on Demand

Tyler
- + \ No newline at end of file diff --git a/dev/interpolation.html b/dev/interpolation.html index a5dec0b..a3c586b 100644 --- a/dev/interpolation.html +++ b/dev/interpolation.html @@ -12,7 +12,7 @@ - + @@ -42,8 +42,8 @@ p2 = Tyler.Interpolator(fun; options) b = Rect2f(-20.0, -20.0, 40.0, 40.0) -m = Tyler.Map(b, provider=p1)

TIP

Try b = Rect2f(-180.0, -89.9, 360.0, 179.8)

INFO

interpolated_getindex requires input i to be in the 0-1 range.

- +m = Tyler.Map(b, provider=p1)

TIP

Try b = Rect2f(-180.0, -89.9, 360.0, 179.8)

INFO

interpolated_getindex requires input i to be in the 0-1 range.

+ \ No newline at end of file diff --git a/dev/map-3d.html b/dev/map-3d.html index 113e0bb..808ae55 100644 --- a/dev/map-3d.html +++ b/dev/map-3d.html @@ -12,7 +12,7 @@ - + @@ -24,7 +24,7 @@ lat, lon = (47.087441, 13.377214) delta = 0.3 ext = Rect2f(lon-delta/2, lat-delta/2, delta, delta) -m = Tyler.Map3D(ext; provider=ElevationProvider())

Elevation with PlotConfig

With PlotConfig one can change the way tiles are plotted. The it has a preprocess + postprocess function and allows to pass any plot attribute to the tile. These attributes are global and will be passed to every tile plot.

julia
lat, lon = (47.087441, 13.377214)
+m = Tyler.Map3D(ext; provider=ElevationProvider())

Elevation with PlotConfig

With PlotConfig one can change the way tiles are plotted. The it has a preprocess + postprocess function and allows to pass any plot attribute to the tile. These attributes are global and will be passed to every tile plot.

julia
lat, lon = (47.087441, 13.377214)
 delta = 0.3
 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta)
 cfg = Tyler.PlotConfig(
@@ -32,11 +32,11 @@
     shading=FastShading,
     colormap=:alpine
 )
-m = Tyler.Map3D(ext; provider=ElevationProvider(nothing), plot_config=cfg)

PointClouds

The PointCloud provider downloads from geotiles.citg.tudelft, which spans most of the netherlands.

julia
lat, lon = (52.40459835, 4.84763329)
+m = Tyler.Map3D(ext; provider=ElevationProvider(nothing), plot_config=cfg)

PointClouds

The PointCloud provider downloads from geotiles.citg.tudelft, which spans most of the netherlands.

julia
lat, lon = (52.40459835, 4.84763329)
 delta = 0.03
 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta)
 provider = Tyler.GeoTilePointCloudProvider()
-m = Tyler.Map3D(ext; provider=provider)

Pointclouds with PlotConfig + Meshscatter

There is also a MeshScatter plot config, which can be used to switch the point cloud plotting from scatter to meshscatter. This looks better, at a significant slow down.

julia
lat, lon = (52.40459835, 4.84763329)
+m = Tyler.Map3D(ext; provider=provider)

Pointclouds with PlotConfig + Meshscatter

There is also a MeshScatter plot config, which can be used to switch the point cloud plotting from scatter to meshscatter. This looks better, at a significant slow down.

julia
lat, lon = (52.40459835, 4.84763329)
 delta = 0.008
 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta)
 provider = Tyler.GeoTilePointCloudProvider()
@@ -45,7 +45,7 @@
 m1 = Tyler.Map3D(ext; provider=provider, plot_config=cfg)
 cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=FastShading, colormap=:alpine)
 m2 = Tyler.Map3D(m1; provider=image, plot_config=cfg)
-m1

Using RPRMakie

julia
using RPRMakie, FileIO
+m1

Using RPRMakie

julia
using RPRMakie, FileIO
 function render_rpr(m, name, radiance=1000000)
     wait(m)
     ax = m.axis
@@ -94,7 +94,7 @@
 m2 = Tyler.Map3D(m; provider=ElevationProvider(nothing), plot_config=cfg, max_plots=5)
 render_rpr(m, "pointclouds")
 cp(Tyler)

- + \ No newline at end of file diff --git a/dev/osmmakie.html b/dev/osmmakie.html index db2d81d..a3dbf80 100644 --- a/dev/osmmakie.html +++ b/dev/osmmakie.html @@ -12,7 +12,7 @@ - + @@ -53,8 +53,8 @@ m.axis.aspect = map_aspect(area.minlat, area.maxlat) p = osmplot!(m.axis, osm; buildings) # DataInspector(m.axis) # this is broken/slow -m

- +m

+ \ No newline at end of file diff --git a/dev/points_poly_text.html b/dev/points_poly_text.html index 1ed6dc0..8a4dd20 100644 --- a/dev/points_poly_text.html +++ b/dev/points_poly_text.html @@ -12,7 +12,7 @@ - + @@ -26,7 +26,7 @@ lon = -118.1714;
-118.1714

convert to point in web_mercator

julia
pts = Point2f(MapTiles.project((lon,lat), MapTiles.wgs84, MapTiles.web_mercator))
2-element GeometryBasics.Point{2, Float32} with indices SOneTo(2):
  -1.315478f7
   4.0558638f6

set how much area to map in degrees and define an Extent for display in web_mercator

julia
delta = 1
-extent = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta);
GeometryBasics.HyperRectangle{2, Float32}(Float32[-118.6714, 33.7013], Float32[1.0, 1.0])

show map

julia
m = Tyler.Map(extent; provider, size=(1000, 600))

now plot a point, polygon and text on the map

julia
objscatter = scatter!(m.axis, pts; color = :red,
+extent = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta);
GeometryBasics.HyperRectangle{2, Float32}(Float32[-118.6714, 33.7013], Float32[1.0, 1.0])

show map

julia
m = Tyler.Map(extent; provider, size=(1000, 600))

now plot a point, polygon and text on the map

julia
objscatter = scatter!(m.axis, pts; color = :red,
     marker = '⭐', markersize = 50)
 # hide ticks, grid and lables
 hidedecorations!(m.axis)
@@ -47,8 +47,8 @@
 text!(pts2, text = "Basic Example"; fontsize = 30,
     color = :darkblue, align = (:center, :center)
     )
-m

- +m

+ \ No newline at end of file diff --git a/dev/whale_shark.html b/dev/whale_shark.html index cf2e3b1..fa07caf 100644 --- a/dev/whale_shark.html +++ b/dev/whale_shark.html @@ -12,7 +12,7 @@ - + @@ -42,7 +42,7 @@ fig = Figure(; size = (1200, 600)) ax = Axis(fig[1,1]) m = Tyler.Map(Rect2f(Rect2f(lomn - δlon/2, lamn-δlat/2, 2δlon, 2δlat)); - provider, figure=fig, axis=ax)

Initial point

julia
nt = 30
+    provider, figure=fig, axis=ax)

Initial point

julia
nt = 30
 trail = CircularBuffer{Point2f}(nt)
 fill!(trail, points[1]) # add correct values to the circular buffer
 trail = Observable(trail) # make it an observable
@@ -56,7 +56,7 @@
     strokecolor=:white, strokewidth=1.5)
 hidedecorations!(ax)
 hidespines!(ax)
-m

Animated trajectory

The animation is done by updating the Observable values

julia
record(fig, "whale_shark_128786.mp4") do io
+m

Animated trajectory

The animation is done by updating the Observable values

julia
record(fig, "whale_shark_128786.mp4") do io
     for i in 2:steps
         push!(trail[], points[i])
         whale[] = points[i]
@@ -65,7 +65,7 @@
     end
 end
 set_theme!() # reset theme (default)

- + \ No newline at end of file