<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sean Gillies (Posts about library)</title><link>https://sgillies.net/</link><description></description><atom:link href="https://sgillies.net/tags/library.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><lastBuildDate>Sun, 31 Dec 2023 01:26:18 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Browsing spatially referenced Djatoka images with OpenLayers</title><link>https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html</link><dc:creator>Sean Gillies</dc:creator><description>&lt;p&gt;A while back my colleague Hugh Cayless wrote a &lt;a class="reference external" href="http://sourceforge.net/apps/mediawiki/djatoka/index.php?title=Main_Page"&gt;Djatoka&lt;/a&gt; layer &lt;a class="reference external" href="http://philomousos.blogspot.com/2008/12/openlayers-and-djatoka.html"&gt;for use
with OpenLayers&lt;/a&gt;. It is deployed at UNC's library, allowing you to view over
3000 &lt;a class="reference external" href="http://www.lib.unc.edu/dc/ncmaps/"&gt;North Carolina Maps&lt;/a&gt;. View the source on any map and you'll quickly get
a sense of how it's rigged up. You pass a URL encoding requests for image
regions and a URL encoding requests for image metadata to the OpenURL layer
constructor, it figures out the grid and zoom levels for you, and you add the
layer to a map that's configured using the layer's resolution, maximum extent,
and tile size parameters. It works much like a TMS layer, but in pixel units.&lt;/p&gt;
&lt;p&gt;I began with this code for a different project and modified it to satisfy some
of my project's special needs:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;p&gt;The imagery of a physical object and its annotations will be shown in their
natural units – centimeters.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Square tiles will be used instead of rectangular tiles with the same aspect
ratio as the physical object (approximately 13:1).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Browser and image server are in different domains, complicating discovery
of image metadata.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I decided to go with Djatoka instead of an open source GIS map server like
GeoServer or MapServer because the project, while spatial in nature, doesn't
require cartographic projections or spatial indexing; I was interested in
trying something new; and NYU's already got one running (Thanks, Hugh!). I
ended up modifying Hugh and Cliff's &lt;a class="reference external" href="http://github.com/hcayless/djatoka-openlayers-image-viewer/blob/master/lib/OpenLayers/Layer/OpenURL.js"&gt;OpenURL.js&lt;/a&gt; considerably. Now, it's more
like a hybrid between OpenLayers.Layer.Image and OpenLayers.Layer.WMS. The code
is at &lt;a class="reference external" href="http://github.com/sgillies/tpeutb/blob/master/OpenURL.js"&gt;http://github.com/sgillies/tpeutb/blob/master/OpenURL.js&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Unlike a GIS map
server, Djatoka doesn't pad requests: it fails if you ask for regions outside
the image. To have square pixels, I've had to pad my imagery a bit. It's now 43008 pixels wide by 3072 pixels high, exactly 14:1. This
makes the right tile size 192 x 192 pixels. As things stand, my new OpenURL
layer can't be used in the same map as Hugh's, so I haven't bothered to rename
it yet. It's used like this:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code javascript"&gt;&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-1" name="rest_code_03471097e2ed47b4b225a5570780e8e8-1" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-1"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mf"&gt;60.3&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// Centimeters per pixel&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-2" name="rest_code_03471097e2ed47b4b225a5570780e8e8-2" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-2"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenLayers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;43008&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;3072&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-3" name="rest_code_03471097e2ed47b4b225a5570780e8e8-3" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-3"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;origin&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenLayers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;LonLat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;16.6222&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;1.2174&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-4" name="rest_code_03471097e2ed47b4b225a5570780e8e8-4" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-4"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;extent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenLayers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Bounds&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-5" name="rest_code_03471097e2ed47b4b225a5570780e8e8-5" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-5"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lon&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lon&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;w&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;origin&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;lat&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-6" name="rest_code_03471097e2ed47b4b225a5570780e8e8-6" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-6"&gt;&lt;/a&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-7" name="rest_code_03471097e2ed47b4b225a5570780e8e8-7" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-7"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// Zoom factors of 1/8 to 4&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-8" name="rest_code_03471097e2ed47b4b225a5570780e8e8-8" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-8"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resolutions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mf"&gt;8.0&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;4.0&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;2.0&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;1.0&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.25&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;RES&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-9" name="rest_code_03471097e2ed47b4b225a5570780e8e8-9" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-9"&gt;&lt;/a&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-10" name="rest_code_03471097e2ed47b4b225a5570780e8e8-10" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-10"&gt;&lt;/a&gt;&lt;span class="c1"&gt;// At zoom level 0, the image is covered by 2 x 28 tiles&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-11" name="rest_code_03471097e2ed47b4b225a5570780e8e8-11" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-11"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tileSize&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenLayers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Size&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;192&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;192&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-12" name="rest_code_03471097e2ed47b4b225a5570780e8e8-12" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-12"&gt;&lt;/a&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-13" name="rest_code_03471097e2ed47b4b225a5570780e8e8-13" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-13"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;mosaic&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenLayers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Layer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OpenURL&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-14" name="rest_code_03471097e2ed47b4b225a5570780e8e8-14" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-14"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s1"&gt;'All section, mosaicked'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-15" name="rest_code_03471097e2ed47b4b225a5570780e8e8-15" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-15"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s1"&gt;'http://dl-img.home.nyu.edu/'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-16" name="rest_code_03471097e2ed47b4b225a5570780e8e8-16" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-16"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s1"&gt;'http://pipsqueak.atlantides.org/mosaic.tif'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c1"&gt;// for example, 404 in reality&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-17" name="rest_code_03471097e2ed47b4b225a5570780e8e8-17" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-17"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nx"&gt;extent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-18" name="rest_code_03471097e2ed47b4b225a5570780e8e8-18" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-18"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-19" name="rest_code_03471097e2ed47b4b225a5570780e8e8-19" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-19"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;format&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'image/jpeg'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-20" name="rest_code_03471097e2ed47b4b225a5570780e8e8-20" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-20"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;units&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'cm'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-21" name="rest_code_03471097e2ed47b4b225a5570780e8e8-21" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-21"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;tileSize&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tileSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-22" name="rest_code_03471097e2ed47b4b225a5570780e8e8-22" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-22"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;resolutions&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resolutions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-23" name="rest_code_03471097e2ed47b4b225a5570780e8e8-23" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-23"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-24" name="rest_code_03471097e2ed47b4b225a5570780e8e8-24" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-24"&gt;&lt;/a&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-25" name="rest_code_03471097e2ed47b4b225a5570780e8e8-25" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-25"&gt;&lt;/a&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ow"&gt;new&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;OpenLayers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-26" name="rest_code_03471097e2ed47b4b225a5570780e8e8-26" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-26"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s1"&gt;'map'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-27" name="rest_code_03471097e2ed47b4b225a5570780e8e8-27" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-27"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;units&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'cm'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-28" name="rest_code_03471097e2ed47b4b225a5570780e8e8-28" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-28"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;tileSize&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;tileSize&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-29" name="rest_code_03471097e2ed47b4b225a5570780e8e8-29" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-29"&gt;&lt;/a&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;resolutions&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;resolutions&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;a id="rest_code_03471097e2ed47b4b225a5570780e8e8-30" name="rest_code_03471097e2ed47b4b225a5570780e8e8-30" href="https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html#rest_code_03471097e2ed47b4b225a5570780e8e8-30"&gt;&lt;/a&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="w"&gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;A very simple application of this layer can be seen at &lt;a class="reference external" href="http://pipsqueak.atlantides.org/tpeutv/djatoka.html"&gt;http://pipsqueak.atlantides.org/tpeutv/djatoka.html&lt;/a&gt;.&lt;/p&gt;</description><category>library</category><category>web</category><category>work</category><guid>https://sgillies.net/2010/08/23/browsing-spatially-referenced-djatoka-images-with-openlayers.html</guid><pubDate>Mon, 23 Aug 2010 06:00:00 GMT</pubDate></item><item><title>OpenLayers and Djatoka imagery</title><link>https://sgillies.net/2009/01/04/openlayers-and-djatoka-imagery.html</link><dc:creator>Sean Gillies</dc:creator><description>&lt;p&gt;Hugh Cayless has written an OpenURL image layer for OpenLayers that pulls imagery from &lt;a class="reference external" href="http://philomousos.blogspot.com/2008/12/openlayers-and-djatoka.html"&gt;Djatoka&lt;/a&gt;. I'm eager to see it in action. I've heard other library folks talking about doing this kind of thing with "GeoPDF"; my hope (I'm not speaking for Hugh or UNC) is that they'll take a look at this kind of non-proprietary solution before they do.&lt;/p&gt;</description><category>imagery</category><category>library</category><category>open source</category><category>work</category><guid>https://sgillies.net/2009/01/04/openlayers-and-djatoka-imagery.html</guid><pubDate>Sun, 04 Jan 2009 07:00:00 GMT</pubDate></item></channel></rss>