[22:26:46] | <paul121[m]> | Learned about something really cool today.... Cloud Optimized GeoTIFFs |
[22:26:53] | <paul121[m]> | https://www.cogeo.org/ |
[22:27:59] | <paul121[m]> | > A Cloud Optimized GeoTIFF (COG) is a regular GeoTIFF file, aimed at being hosted on a HTTP file server, with an internal organization that enables more efficient workflows on the cloud. It does this by leveraging the ability of clients issuing HTTP GET range requests to ask for just the parts of a file they need. |
[22:28:58] | <paul121[m]> | basically.... hosting imagery layers from a standard file server, no GeoServer required |
[22:29:33] | <paul121[m]> | This site gives a demo that uses OpenLayers: https://geotiffjs.github.io/cog-explorer/#long=16.370&lat=48.210&zoom=5&... |
[22:29:58] | <symbioquine[m]> | Cool! |
[22:31:04] | <paul121[m]> | I was able to generate a COG tif, upload it to my farmOS server (modifying so that `.tif` was a valid file type), and load it into the COG-Explorer !! |
[22:31:20] | <mstenta[m]> | whoa! |
[22:31:24] | <paul121[m]> | And COG-Explorer uses OpenLayers! |
[22:32:37] | <paul121[m]> | Also tried a much higher res Drone image (~100MB tif) and it took a minute to load into the browser... |
[22:33:49] | <paul121[m]> | but I don't think I had optimized the image too much... could probably improve tiling, etc... |
[22:33:56] | <paul121[m]> | it looks like there are some other tools that can do that |
[22:35:09] | <paul121[m]> | but a processed Sentinel-2 image for ~300 acres (500Kb) loads great :D |
[22:36:02] | <mstenta[m]> | wow that is super cool! |
[22:36:03] | <paul121[m]> | can also host imagery from a S3 bucket in the cloud and load into the browser, just by using the link |
[22:37:04] | <paul121[m]> | might need to add `.tif` to the allowed file types ;-) |
[22:37:16] | <paul121[m]> | but also curious if there are reasons it isn't included |
[22:39:11] | <mstenta[m]> | no reason! pull request? :-) |
[22:39:21] | <mstenta[m]> | `.tiff` too? |
[22:39:37] | <mstenta[m]> | we should add it to 2.x as well |
[22:40:38] | <paul121[m]> | I've mostly seen `.tif` while learning about this, but thought the extension was `.tiff`... not sure |
[22:41:07] | <mstenta[m]> | Mm yea I've seen both in general image files... so might as well have both |
[22:41:16] | <mstenta[m]> | I think we have `.jpg` and `.jpeg` |
[22:42:55] | <symbioquine[m]> | <paul121[m] "but a processed Sentinel-2 image"> I'm just curious what you're comparing against? The 100MB image seemed like a good test case, but the 500Kb image presumably wouldn't present a challenge to load all at once without tiled loading... |
[22:43:40] | <paul121[m]> | yeah thats not a good comparison haha |
[22:44:23] | <paul121[m]> | this example appears to be higher res & have tiling + pyramid (where higher res doesn't load until you zoom further) |
[22:44:23] | <paul121[m]> | https://geotiffjs.github.io/cog-explorer/#long=168.456&lat=-17.553&zoom=... |
[22:45:35] | <paul121[m]> | and that performs decently, maybe not quite as well as more traditional (although lots of factors) |
[23:02:28] | <symbioquine[m]> | > and that performs decently, maybe not quite as well as more traditional (although lots of factors) |
[23:02:28] | <symbioquine[m]> | More quantitatively, loading the initial zoom/extent takes just 2.5MB instead of the ~70MB of the source image. Zooming into the max zoom level on a single spot took another 1MB. That shows that it is able to load specific tiles incrementally. We'd need to set up a side-by-side test case to compare the performance with a traditional raster tile server approach, but I'd guess this approach would beat the pants off most |
[23:02:28] | <symbioquine[m]> | single-server/self-hosted solutions since you can easily leverage off-the-shelf edge-caching from S3/competitors... |
[23:03:04] | <symbioquine[m]> | (Assuming the data is fairly static and the "users" are geographically diverse.) |
[23:08:09] | <paul121[m]> | Nice!! |
[23:13:46] | <paul121[m]> | That main site must reference a tool that can do further optimization |
[23:14:30] | <paul121[m]> | I created mine with plain gdal, but seems like there's extensions built around it |
[23:15:37] | <paul121[m]> | But excited to explore this! Until another day... |
[23:25:18] | * farmBOT has joined #farmos |
[09:32:51] | <mstenta[m]> | > might need to add .tif to the allowed file types ;-) |
[09:32:51] | <mstenta[m]> | > we should add it to 2.x as well |
[09:32:51] | <mstenta[m]> | FYI paul121 I am working on the code that defines allowed extensions in 2.x right now, so i'll add `tif` and `tiff` |
[12:32:30] | <paul121[m]> | @generalredneck are you still around? (doesn't look like it??) |
[12:32:59] | <paul121[m]> | using the `migrate_plus` `merge` process plugin which they contributed - super handy! |
[12:34:50] | <mstenta[m]> | cool! |
[12:35:09] | <mstenta[m]> | haha I remember him saying he was a Migrate expert :-) |
[15:37:22] | <skipper_is[m]> | o/ Has farm_quick been removed? I cannot seem to find it on my module list? |
[15:37:45] | <skipper_is[m]> | Although it still seems to work |
[15:56:16] | <mstenta[m]> | Not removed |
[15:56:25] | <mstenta[m]> | Is it missing from the files? |
[16:02:22] | <skipper_is[m]> | Type 1D10T error... |
[16:03:02] | <skipper_is[m]> | my farm_quick_hoof.module was not called farm_quick_hoof.... |
[16:03:10] | <skipper_is[m]> | was called farm_quick.module |
[16:03:28] | <skipper_is[m]> | Sorted now :) However, creating logs from quick forms, farm_log_create? |
[16:08:27] | <mstenta[m]> | Oh haha that would do it |
[16:08:45] | <mstenta[m]> | Yea I think that's right... Check out the egg quick form submit for example |
[16:08:57] | <skipper_is[m]> | Yea, though that uses the quantity log function |
[16:09:53] | <skipper_is[m]> | And I don't need a quantity, just an asset and notes |
[16:17:58] | <mstenta[m]> | Ah |
[16:18:05] | <mstenta[m]> | Tbh I forget :-) |
[16:18:17] | <mstenta[m]> | Not at my computer atm |
[16:18:24] | <skipper_is[m]> | No worries :) |
[16:18:27] | <mstenta[m]> | But that sounds right |
[16:18:56] | <mstenta[m]> | If you find the quantity function you'll see that it delegates to a more general one |
[16:18:59] | <mstenta[m]> | Iirc |
[16:19:01] | <skipper_is[m]> | It works with farm_log_create anyway :) |
[16:19:09] | <mstenta[m]> | 👍 |