<div dir="ltr"><div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">I am interested in the discussions comparing COG with JPEG2000.</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">To start with I</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-s-lparen"> </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-h-lparen">(with</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> the Mapbox Satellite team, in particular, Vincent Sarago) wrote </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-url"><a target="_blank" class="gmail-dynamiclink" href="https://github.com/mapbox/COGDumper" rel="noreferrer nofollow noopener">https://github.com/mapbox/COGDumper</a></span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> to refresh our memory of the TIFF spec. This highlighted an issue with JPEG compressed tiles and masks inside a COG. In that to be effective over the wire the masks needs to be adjacent to the tile data.</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">I noted in </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-url"><a target="_blank" class="gmail-dynamiclink" href="https://medium.com/radiant-earth-insights/cloud-optimized-geotiff-birds-of-a-feather-at-foss4g-na-def26572ae1b" rel="noreferrer nofollow noopener">https://medium.com/radiant-earth-insights/cloud-optimized-geotiff-birds-of-a-feather-at-foss4g-na-def26572ae1b</a></span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> the interest in comparing COG to JPEG2000.</span></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"><br></span></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">When I first saw COG I thought<span> </span></span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">—<span> </span></span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">why not Compressed Optimized Wavelets</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-s-lparen" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span> </span></span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-h-lparen" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">(COW)</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z gmail-h-lparen" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial">?</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z" style="color:rgb(34,34,34);font-family:arial,sans-serif;font-size:small;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;font-weight:400;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;background-color:rgb(255,255,255);text-decoration-style:initial;text-decoration-color:initial"><span> </span>However you are not really comparing apples with apples here.</span><br></span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">ISO JPEG2000 part 9 is JPIP, an internet protocol for stateful transfer of JPEG2000 data over potentially choppy network connections</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-s-lparen"> </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-h-lparen">(very</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> low bandwidth, contention, bursts, dropout etc). This standard also include stateless requests but is centred around a server model.</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">JPEG2000 Wavelets are progressive in resolution, spatial</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-s-lparen"> </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-h-lparen">(X/Y)</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> and quality layers. Due the nature of the stream they are also fault tolerant to missing bytes in transmission. This isn't the case with TIFF, TIFF is progressive in X/Y and if you are missing bytes then the tile isn't going to render. It is to be seen at what</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-s-lparen"> </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-h-lparen">(low,</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> or high number of users) bandwidths COG is effective.</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">COG is about tiled data</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z">; </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">JPEG2000 has a concept of a tile</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z">,</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> but to be effective over limited networks uses precincts</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z gmail-s-lparen"> </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z gmail-h-lparen">(</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z gmail-h-lparen">a</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z"> </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z">specified </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">group of code blocks</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z">)</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">. As precinct edges overlap with adjacent edges you will get a fuzzy edge until the adjacent precinct is retrieved, which is fine as it is still less data than retrieving a complete tile.</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">I have more to come on this as I am currently creating a library with the Satellite team at Mapbox to explore COW/COG in more detail. In a similar way to COG it should be possible to create a JPEG2000 profile that specifies the codestream layout in a way that the JPEG2000 data can be retrieved efficiently with HTTP requests and does not require a server.</span></div><div><br></div><div><span class="gmail-thread-310218311799393034112805 gmail-attrcomment gmail-attrcommentfirst gmail-thread-310218311799393034112805-first gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z">While this work is still experimental, we see a number of clear benefits to COW over HTTP:</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">* Progressive in spatial position, resolution and quality</span></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">* Region of Interest encoding</span></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">* Bandwidth savings</span></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">* Finer control over region access</span></div><div><br></div><div><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">The biggest stumbling block with JPEG2000 has always been understanding the core spec which </span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z9z84z5z122zz86z4xz70zz80zz66zz84zxyz82zz69zoz73zgz72zz78ze9z71z8tz74zz84zgeyz79z">is very complex</span><span class="gmail-author-d-iz88z86z86za0dz67zz78zz78zz74zz68zjz80zz71z9iz90z8gz66zz65zpz66zz85znvkpiz122zz90znuz70z1z66zz79zz71z4z84zz83zqz75z31yz81zz73z">. I hope to expand on this over the next few months with some examples.</span></div><br></div><div>Norman</div><div><br></div><div><br></div></div>