{"id":967,"date":"2008-10-18T21:38:29","date_gmt":"2008-10-18T12:38:29","guid":{"rendered":"https:\/\/regex.info\/blog\/2008-10-18\/967"},"modified":"2008-10-18T21:38:29","modified_gmt":"2008-10-18T12:38:29","slug":"lightroom-gps-proximity-search-plugin","status":"publish","type":"post","link":"https:\/\/regex.info\/blog\/2008-10-18\/967","title":{"rendered":"Lightroom &#8220;GPS Proximity Search&#8221; Plugin"},"content":{"rendered":"\n\n<div class='ic'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/GpsProximityPM.png\" width=\"710\" height=\"439\"\nclass=\"raw\"\nid=\"iGpsProximityPM\"\/><\/div>\n\n<p>I'm releasing today a plugin for Adobe <span class='nobr'>Lightroom 2.0<\/span> or later that\nallows you to perform <span class='nobr'>a proximity<\/span> search based on the locations geoencoded\ninto your images. This adds to my stable of Lightroom plugins listed on my\n<a href=\"\/blog\/lightroom-goodies\/\">Lightroom Goodies\npage<\/a>, and is the second that's not <span class='nobr'>a vanilla<\/span> <span class='nobr'>&#8220;export\nto...&#8221;<\/span> plugin (the other being my <a\nhref=\"\/blog\/lightroom-goodies\/metadata-wrangler\/\">Metadata\nWrangler<\/a>).<\/p>\n\n<p>I started writing this the other day after wanting to illustrate my <a\nhref=\"\/blog\/2008-10-11\/960\">Perfect Weather for <span class='nobr'>a Snooze<\/span>\non <span class='nobr'>a Park<\/span> Bench<\/a> post, but couldn't find among the 30,000 images in my\nlibrary some of the Anthony-swinging pictures that <span class='nobr'>I knew<\/span> <span class='nobr'>I had.<\/span> Thinking\nabout how to find them, <span class='nobr'>I had an<\/span> epiphany about how to get around <span class='nobr'>a\nlimitation<\/span> of Lightroom's plugin infrastructure, thereby making <span class='nobr'>a\nproximity<\/span>-search plugin practical.<\/p>\n\n<p class='h'>Geoencoding Your Images<\/p>\n\n<style type='text\/css'>\n  #post967  .h { margin-top:30px; margin-bottom:5px; font-size: 130%; font-weight: bold }\n<\/style>\n\n<p>To be clear up front: this plugin works only with images that are\nalready geoencoded, and does not itself provide any way to geoencode\nimages. If you'd like to add GPS data to images, see my geoencoding\nfeatures in my <a href=\"\/blog\/lightroom-goodies\/gps\/\">GPS\nSupport plugin<\/a>.<\/p>\n\n<!-- href='\/blog\/2008-02-16\/739' -->\n\n<p class='h'>Proximity-Search Results<\/p>\n\n<p>Before getting into the details of how <span class='nobr'>a search<\/span> is performed, <span class='nobr'>I'd like to<\/span> quickly show the results of <span class='nobr'>a search.<\/span> <span class='nobr'>As part of<\/span> the search process, the\nplugin attaches some custom metadata to each image, so that once completed,\nyou can view the results like any other image metadata.<\/p>\n\n<p>Here's an example of the result metadata added for <span class='nobr'>a single<\/span> image that\nwas subject to <span class='nobr'>a search<\/span>:<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/GpsProximityMP.png\" width=\"684\" height=\"449\"\nclass=\"raw\"\nid=\"iGpsProximityMP\"\/><\/div>\n\n<p>The metadata added by this plugin is highlighted in green above. <span class='nobr'>To view it<\/span>, you first have to switch to the &#8220;All Plugin Metadata&#8221; view in the\nMetadata Panel, as highlighted in red. (It's on my overwhelmingly\nlong to-do list to update my <a\nhref=\"\/blog\/2007-06-27\/503\">Lightroom Metadata Viewer\nPreset Builder<\/a> to allow for custom plugin metadata like this.)<\/p>\n\n<p>As you can see above, the plugin indicates how far the image's\ngeoencoded location is from the search location, what I've decided to call\nthe &#8220;search epicenter&#8221;. <span class='nobr'>The distance<\/span> in meters is always listed, but <span class='nobr'>I also<\/span>\ntry to write the appropriate feet\/yards\/miles as well.<\/p>\n\n<p>The &#8220;Epicenter&#8221; item itself is <span class='nobr'>a clickable<\/span> link to <span class='nobr'>a map<\/span> showing the\nlocation used as the epicenter of the search (the location, in this\nexample, 394 meters south-east from this image: according to the results\nshown above, this image is 394 meters at <span class='nobr'>a bearing<\/span> of 38&deg; &ndash;\nthat's north-east &ndash; from the search epicenter).<\/p>\n\n<p>The &#8220;Within Range&#8221; item is perhaps the most important, and is explained\nlater in this post.<\/p>\n\n<p class='h'>Installation<\/p>\n\n<p>You can download my GPS Proximity Search plugin from <a\nhref=\"\/blog\/lightroom-goodies\/gps-proximity\/\">its home\npage<\/a>, on which you'll also find the <a\nhref=\"\/blog\/lightroom-goodies\/plugin-installation\/\">installation\ninstructions<\/a>.<\/p>\n\n<p>This plugin supports one-click upgrading, as described on the install-instructions page.<\/p>\n\n<p>(Each release also has an expiration, to encourage upgrades to pick up\nbug fixes. This is mostly for my own self preservation, because <span class='nobr'>I get<\/span> a\n<i>lot<\/i> of comments and email about bugs that have already been fixed in\nnewer versions.)<\/p>\n\n<p class='h'>Performing <span class='nobr'>a Search<\/span><\/p>\n\n<p>To begin a search, invoke the &#8220;GPS Proximity Search&#8221; item in the &#8220;Plugin Extras&#8221; File menu...<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/GpsProximityLM.png\" width=\"527\" height=\"534\"\nclass=\"raw\"\nid=\"iGpsProximityLM\"\/><\/div>\n\n<p>That in turn brings up the main search dialog...<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/GpsProximityMM.png\" width=\"701\" height=\"528\"\nclass=\"raw\"\nid=\"iGpsProximityMM\"\/><\/div>\n\n\n<p>The dialog has four main sections:<\/p>\n\n<ul><li><p><b>Images to Search...<\/b><\/p>\n     <p>You can always search the entire catalog, but if you wish to narrow the search to <span class='nobr'>a specific<\/span>\n     set of images, you can select them before invoking this dialog.<\/p>\n\n     <p>If you have previously run a search, the plugin will using the performance timing from that\n     to estimate the time needed for this search.<\/p>\n     <\/li>\n\n<li><p><b>Search Epicenter...<\/b><\/p>\n     <p>The &#8220;epicenter&#8221; is the location from which all distances and directions are measured. <span class='nobr'>If an image<\/span> had been selected when the\n     search dialog was brought up (and if it is geoencoded),\n     its location is the default epicenter. <span class='nobr'>If multiple<\/span> images are selected, the active image (the \"most selected' image) is the default\n     if it is geoencoded.<\/p>\n\n     <p>As options, you can always enter <span class='nobr'>a latitude<\/span>\/longitude manually, or cut-and-paste <span class='nobr'>a URL<\/span> from Yahoo! Maps or Google Maps.<\/p>\n     <\/li>\n\n<li><p><b>Area of Interest...<\/b><\/p>\n\n     <p>One's goal in doing a search is likely to find images that are\n     close to the target epicenter location, so this section allows you\n     to specify what &#8220;close&#8221; means for your needs. Images within that distance are marked\n     <span class='nobr'>&#8220;Within Range: Yes&#8221;<\/span>, while others (including images that are not geoencoded) are marked <span class='nobr'>&#8220;Within Range: No&#8221;<\/span>.<\/p>\n\n     <p>After the search, you can filter on the &#8220;Within Range&#8221; item in Lightroom's Library Filter, thereby showing only the images that are, as far as you are concerned,\n     &#8220;within range&#8221;. (I'd like to have the plugin switch to that view\n      automatically, but alas, Lightroom's plugin infrastructure does not allow\n      for that.)<\/p><\/li>\n\n\n<li><p><b>Reporting...<\/b><\/p>\n     <p>You can select what kind of map url you want the &#8220;Epicenter&#8221; metadata item to be. This is to allow you to remember where the center of the search\n     was after the fact, in case you're prone to &#8220;senior moments&#8221; like me.<\/p><\/li>\n<\/ul>\n\n<p>When you actually launch a search by clicking on the <b>Begin Search<\/b>\nbutton, <span class='nobr'>a progress<\/span> bar will pop up and remain until the search is complete.\nLike my export plugins, it calculates and displays an ETA, which can be\nuseful for long searches.<\/p>\n\n<p>When the search is complete, a small dialog pops up with some summary results...<\/p>\n\n<div class='ic tight'><img loading=\"lazy\" decoding=\"async\" src=\"\/i\/lr\/GpsProximityRD.png\" width=\"654\" height=\"277\"\nclass=\"raw\"\nid=\"iGpsProximityRD\"\/><\/div>\n\n<p>Note that as of <span class='nobr'>Lightroom 2.1,<\/span> you can't actually filter on &#8220;Direction&#8221;\ndue to what <span class='nobr'>I assume<\/span> is <span class='nobr'>a bug<\/span> in Lightroom. <span class='nobr'>If I find<\/span> <span class='nobr'>a workaround,<\/span> I'll\npush <span class='nobr'>a new<\/span> version of my plugin.<\/p>\n\n<p class='h'>Bonus Menu Items<\/p>\n\n<p>As a bonus, I've thrown in two other Library Menu items (in\n&#8220;Plugin Extras&#8221;, alongside &#8220;GPS Proximity Search&#8221;,\nas seen in the menu screenshot above):<\/p>\n\n<ul><li>View location in Google Earth<\/li>\n    <li>View location at Panoramio<\/li>\n<\/ul>\n\n<p>They can be invoked while a geoencoded image is selected, and they\nlaunch <a href=\"http:\/\/earth.google.com\/\">Google Earth<\/a> (if you have it\ninstalled), or bring up <a href=\"http:\/\/www.panoramio.com\/\">Panoramio<\/a>\nin your browser.<\/p>\n\n<p>These have nothing to do with the proximity search, and <span class='nobr'>I may<\/span> pull them\nfrom this plugin if <span class='nobr'>I ever<\/span> make some other kind of &#8220;GPS Stuff&#8221; plugin.<\/p>\n\n<p class='h'>Finally...<\/p>\n\n<p>Enjoy.<\/p>\n\n<p>You can download the plugin here: <a href=\"\/blog\/lightroom-goodies\/gps-proximity\/\">Jeffrey's GPS Proximity Lightroom Plugin<\/a>.<\/p>\n\n\n\n","protected":false},"excerpt":{"rendered":"<p>I'm releasing today a plugin for Adobe Lightroom 2.0 or later that allows you to perform a proximity search based on the locations geoencoded into your images. This adds to my stable of Lightroom plugins listed on my Lightroom Goodies page, and is the second that's not a vanilla \"export to...\" plugin (the other being my Metadata Wrangler).<\/p> <p>I started writing this the other day after wanting to illustrate my Perfect Weather for a Snooze on a Park Bench post, but couldn't find among the 30,000 images in my library some of the Anthony-swinging pictures that I knew I had. [...]","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,13,4],"tags":[],"_links":{"self":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/967"}],"collection":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/comments?post=967"}],"version-history":[{"count":0,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/posts\/967\/revisions"}],"wp:attachment":[{"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/media?parent=967"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/categories?post=967"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/regex.info\/blog\/wp-json\/wp\/v2\/tags?post=967"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}