CINXE.COM
geo | code.flickr.com
<!DOCTYPE html> <!--[if IE 6]> <html id="ie6" lang="en-US"> <![endif]--> <!--[if IE 7]> <html id="ie7" lang="en-US"> <![endif]--> <!--[if IE 8]> <html id="ie8" lang="en-US"> <![endif]--> <!--[if !(IE 6) & !(IE 7) & !(IE 8)]><!--> <html lang="en-US"> <!--<![endif]--> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width" /> <title> geo | code.flickr.com </title> <link rel="profile" href="https://gmpg.org/xfn/11" /> <link rel="stylesheet" type="text/css" media="all" href="https://code.flickr.net/wp-content/themes/flickr-code/style.css?ver=20190507" /> <link rel="pingback" href="https://code.flickr.net/xmlrpc.php"> <!--[if lt IE 9]> <script src="https://code.flickr.net/wp-content/themes/twentyeleven/js/html5.js?ver=3.7.0" type="text/javascript"></script> <![endif]--> <meta name='robots' content='max-image-preview:large' /> <style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style> <link rel='dns-prefetch' href='//stats.wp.com' /> <link rel="alternate" type="application/rss+xml" title="code.flickr.com » Feed" href="https://code.flickr.net/feed/" /> <link rel="alternate" type="application/rss+xml" title="code.flickr.com » Comments Feed" href="https://code.flickr.net/comments/feed/" /> <link rel="alternate" type="application/rss+xml" title="code.flickr.com » geo Category Feed" href="https://code.flickr.net/category/geo/feed/" /> <script type="text/javascript"> /* <![CDATA[ */ window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.0.3\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/code.flickr.net\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.7.1"}}; /*! This file is auto-generated */ !function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\u2b1b","\ud83d\udc26\u200b\u2b1b")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings); /* ]]> */ </script> <style id='wp-emoji-styles-inline-css'> img.wp-smiley, img.emoji { display: inline !important; border: none !important; box-shadow: none !important; height: 1em !important; width: 1em !important; margin: 0 0.07em !important; vertical-align: -0.1em !important; background: none !important; padding: 0 !important; } </style> <link rel='stylesheet' id='all-css-2' href='https://code.flickr.net/wp-includes/css/dist/block-library/style.min.css?m=1732206022g' type='text/css' media='all' /> <style id='wp-block-library-theme-inline-css'> .wp-block-audio :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio :where(figcaption){color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed :where(figcaption){color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}:root :where(.wp-block-image figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme :root :where(.wp-block-image figcaption){color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote:where(.has-text-align-right){border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote:where(.has-text-align-center){border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote:where(.is-style-plain){border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table :where(figcaption){color:#ffffffa6}.wp-block-video :where(figcaption){color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video :where(figcaption){color:#ffffffa6}.wp-block-video{margin:0 0 1em}:root :where(.wp-block-template-part.has-background){margin-bottom:0;margin-top:0;padding:1.25em 2.375em} </style> <link rel='stylesheet' id='all-css-6' href='https://code.flickr.net/_static/??-eJzTLy/QzcxLzilNSS3WzyrWz01NyUxMzUnNTc0rQeEU5CRWphbp5qSmJyZX6uVm5uklFxfr6OPTDpRD5sM02efaGpobGxkZmBkYGQMARIMu1Q==' type='text/css' media='all' /> <style id='jetpack-sharing-buttons-style-inline-css'> .jetpack-sharing-buttons__services-list{display:flex;flex-direction:row;flex-wrap:wrap;gap:0;list-style-type:none;margin:5px;padding:0}.jetpack-sharing-buttons__services-list.has-small-icon-size{font-size:12px}.jetpack-sharing-buttons__services-list.has-normal-icon-size{font-size:16px}.jetpack-sharing-buttons__services-list.has-large-icon-size{font-size:24px}.jetpack-sharing-buttons__services-list.has-huge-icon-size{font-size:36px}@media print{.jetpack-sharing-buttons__services-list{display:none!important}}.editor-styles-wrapper .wp-block-jetpack-sharing-buttons{gap:0;padding-inline-start:0}ul.jetpack-sharing-buttons__services-list.has-background{padding:1.25em 2.375em} </style> <style id='classic-theme-styles-inline-css'> /*! This file is auto-generated */ .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} </style> <style id='global-styles-inline-css'> :root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #fff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--color--blue: #1982d1;--wp--preset--color--dark-gray: #373737;--wp--preset--color--medium-gray: #666;--wp--preset--color--light-gray: #e2e2e2;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;} :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;} :root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;} </style> <link rel='stylesheet' id='all-css-12' href='https://code.flickr.net/_static/??-eJzTLy/QTc7PK0nNK9EvyUjNTS3WLykHcipTc1LLUvP0i0sqc1L1kouLdfQxVablZCZnFwFFU1LxK0QxMiknPzm7GKTUPtfW0NzI0NDQxMDUEABaNTMI' type='text/css' media='all' /> <link rel="https://api.w.org/" href="https://code.flickr.net/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://code.flickr.net/wp-json/wp/v2/categories/29160" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://code.flickr.net/xmlrpc.php?rsd" /> <meta name="generator" content="WordPress 6.7.1" /> <style>img#wpstats{display:none}</style> <style type="text/css" id="twentyeleven-header-css"> #site-title, #site-description { position: absolute; clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ clip: rect(1px, 1px, 1px, 1px); } </style> <style type="text/css" id="wp-custom-css"> body { background: #fff; } body,input,textarea { font-family: Arial, sans-serif; color: #404040; } #page { margin: 1em auto; max-width: 1000px; } a:link { text-decoration: none; color: #0063dc; } a:visited { text-decoration: none; color: #0063dc; } a:hover { text-decoration: none; background: #0063dc; color: #fff; } a:active { text-decoration: none; background-color: #0259c4; color: #fff; } #branding { border: none; } #branding .only-search #s,#branding .only-search #s:focus { width: 280px; background-color: transparent; border-color: #ddd; } #branding #searchform { right: 0; } nav#access { background: none; box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none; margin: 0; } nav#access a { font-weight: bold; margin: 11px 28px 0 0; padding: 0; line-height: 21px; } nav#access a:link,nav#access a:visited { text-decoration: none; color: #888; } nav#access a:hover,nav#access li:hover > a,nav#access a:focus,nav#access a:active { text-decoration: none; color: #0063dc; background: none; } #branding .only-search + nav#access div { padding-right: 300px; } nav#access div,nav#access ul { margin: 0; } @media screen and (max-width: 768px) { #branding .only-search + nav#access div { padding-right: 0; } #branding #searchform { display: none; position: static; text-align: center; } #branding .with-image #searchform { max-width: 100%; } #branding .only-search #s,#branding .only-search #s:focus { width: 85%; float: none; } nav#access { margin: 0 0 0 5%; } } @media screen and (max-width: 480px) { nav#access { display: none; } } #content { margin: 0 20% 0 0; width: 80%; } #content .comments-link { display: none; } @media screen and (max-width: 800px) { #main { padding-top: 0; overflow: hidden; } #branding { padding-bottom: 0; } #main #content { margin: 0; } .entry-title,.entry-header .entry-meta { padding-right: 0; } } .singular #content,.left-sidebar.singular #content { margin: 0 10%; width: 80%; } .singular .entry-header,.singular .entry-content,.singular footer.entry-meta,.singular #comments-title { width: 100%; } .hentry,.no-results { border-bottom: 1px dotted #dadada; } .singular .hentry { padding-top: 1em; } .entry-title { padding-bottom: 0; } .entry-title,.entry-title a { font-size: 28px; color: #000; } .entry-title a:hover,.entry-title a:focus,.entry-title a:active { color: #0063dc; background-color: transparent; } @media screen and (max-width: 650px) { .singular .entry-title { padding-top: 0; line-height: 42px; } } .singular .entry-content { margin-top: 0; } #jp-post-flair { margin-top: 3em; } footer.entry-meta .cat-links,footer.entry-meta .sep,footer.entry-meta .tag-links { display: none; } .singular .entry-meta .edit-link a { position: static; } .singular footer.entry-meta { margin-top: 2em; } #comments { display: none; } #site-generator { background: transparent; border-top: none; padding: 0 .5em; } img#wpstats { position: absolute !important; clip: rect(1px 1px 1px 1px); } #secondary { margin-right: 0; width: 16%; text-align: right; } #secondary #s { display: none; } #secondary aside ul { list-style: none; } #secondary .widget-title { color: #999; font-size: 12px; letter-spacing: auto; text-transform: none; } .widget a { font-weight: normal; } .widget a:hover,.widget a:focus,.widget a:active { text-decoration: none; } #everything-after-this-line-is-a-post-level-style---yay-for-wordpress-stripping-comments-from-css { color: #000; } .entry-content p { margin-bottom: 1.3em; } .entry-content p.note { padding: 11px; background-color: #fffdeb; border-bottom: 1px solid #fff9c2; } .entry-content p.warning { padding: 11px; background-color: #fdf8f8; border-bottom: 1px solid #f7dedd; } .entry-content .aside { margin-bottom: 1.3em; padding: 11px; background-color: #f8fdf8; border-bottom: 1px solid #def6df; } .entry-content .aside p:last-child { margin-bottom: 0; } .entry-content h2,.entry-content h3,.entry-content h4 { font-weight: bold; color: #000; text-transform: none; } .entry-content h2 { font-size: 22px; } .entry-content h3 { font-size: 16px; letter-spacing: 0; line-height: 1.3em; margin-bottom: 1em; } .entry-content h4 { font-size: 13px; line-height: 1.4em; margin-bottom: 0; } .entry-content p.flickr-photo,.entry-content p.flickr-photo a,.entry-content p.figure { color: #999; font-size: 14px; } .entry-content p.flickr-photo a:hover,.entry-content p.flickr-photo a:active { color: #0063dc; background-color: transparent; } .entry-content p.flickr-photo .caption { display: block; padding-left: 22px; background: url('http://farm4.staticflickr.com/3329/favicons/72157601614001242_7730.png') no-repeat 0 3px; } .entry-content img { max-width: 100%; height: auto; } .undersized-image-container { text-align: center; } .entry-content code { color: #000; font-family: "Consolas", "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 14px; background-color: #F6FcFF; border-bottom: 1px solid #ebf5ff; } .entry-content ul { list-style: disc; } .entry-content ol ol { list-style: lower-alpha; } .entry-content table caption { font-size: 13px; font-weight: bold; color: #000; } .entry-content table tr.odd td,.entry-content table tr.odd th { background-color: #f8f8f8; } .entry-content table td,.entry-content table th { padding: 3px 10px; line-height: 1.4em; } .entry-content table tr th { color: #000; font-weight: bold; text-transform: none; font-size: 13px; letter-spacing: 0; border-top: 1px solid #ddd; } .entry-content table tr td { font-size: 14px; } .entry-content table.data tr td,.entry-content table.data thead tr th { text-align: right; } .entry-content table.tight td,.entry-content table.tight th { padding: 3px 6px; } .entry-content table.tight th { font-size: 12px; } .entry-content table.tight td { font-size: 13px; } @media screen and (max-width: 650px) { .entry-content table td,.entry-content table th { padding: 3px 5px; } .entry-content table tr th { font-size: 12px; } .entry-content table tr td { font-size: 13px; } .entry-content table.tight td,.entry-content table.tight th { padding: 3px 4px; } .entry-content table.tight th { font-size: 11px; } .entry-content table.tight td { font-size: 12px; } } .entry-content blockquote { font-family: inherit; font-style: normal; font-weight: normal; margin: 0 2em 1.3em; padding: 1em; background: #F9F9F9; border-bottom: 1px solid #ececec; } .entry-content blockquote p.source { margin-bottom: 0; } .entry-content .hiring-banner { position: relative; background: #ffebf5; padding: 11px 11px 11px 88px; border-bottom: 1px solid #ffc5e2; margin: 2em 0; } .entry-content .hiring-banner p { margin-bottom: 0; } .entry-content .hiring-banner .group-photo { position: absolute; left: -57px; top: -5px; width: 120px; padding: 6px; background: #fff; -webkit-box-shadow: 1px 1px 8px rgba(50,50,50,0.8); -moz-box-shadow: 1px 1px 8px rgba(50,50,50,0.8); box-shadow: 1px 1px 8px rgba(50,50,50,0.8); -webkit-transform: rotate(-11deg); -moz-transform: rotate(-11deg); -o-transform: rotate(-11deg); -ms-transform: rotate(-11deg); } .entry-content .hiring-banner .group-photo img { display: block; margin: 0; max-width: 100%; } @media screen and (max-width: 800px) { .entry-content .hiring-banner { padding-left: 11px; } .entry-content .hiring-banner .group-photo { display: none; } } #everything-after-this-line-is-for-the-syntaxhighlighter---all-rules-require-important { color: #000; } #main .syntaxhighlighter .lines { border-bottom: 1px solid #ebf5ff !important; } #main .syntaxhighlighter,#main .syntaxhighlighter div,#main .syntaxhighlighter code,#main .syntaxhighlighter table,#main .syntaxhighlighter table td,#main .syntaxhighlighter table tr,#main .syntaxhighlighter table tbody { font-size: 14px !important; } #main .syntaxhighlighter .line.alt1,#main .syntaxhighlighter .line.alt2 { background-color: #fafdff !important; } #main .syntaxhighlighter .line.highlighted { background-color: #fffbd6 !important; } #main .syntaxhighlighter .plain,#main .syntaxhighlighter .plain a { color: #000 !important; } #main .syntaxhighlighter .comments,#main .syntaxhighlighter .comments a { color: #999 !important; } #main .syntaxhighlighter .string,#main .syntaxhighlighter .string a { color: #ff52a9 !important; } #main .syntaxhighlighter .keyword { color: #0034fe !important; font-weight: normal !important; } #main .syntaxhighlighter .preprocessor { color: #417ba9 !important; } #main .syntaxhighlighter .variable { color: #b130c0 !important; } #main .syntaxhighlighter .value { color: #6b77f7 !important; } #main .syntaxhighlighter .functions { color: #002ad5 !important; } #main .syntaxhighlighter .constants { color: #d11e08 !important; } #main .syntaxhighlighter .script { background-color: yellow !important; } #main .syntaxhighlighter .color1,#main .syntaxhighlighter .color1 a { color: #808080 !important; } #main .syntaxhighlighter .color2,#main .syntaxhighlighter .color2 a { color: #ff1493 !important; } #main .syntaxhighlighter .color3,#main .syntaxhighlighter .color3 a { color: red !important; } a[data-flickr-embed] img { width: 800px; } </style> </head> <body class="archive category category-geo category-29160 custom-background wp-embed-responsive jps-theme-flickr-code two-column right-sidebar"> <div class="skip-link"><a class="assistive-text" href="#content">Skip to primary content</a></div><div class="skip-link"><a class="assistive-text" href="#secondary">Skip to secondary content</a></div><div id="page" class="hfeed"> <header id="branding"> <hgroup> <h1 id="site-title"><span><a href="https://code.flickr.net/" rel="home">code.flickr.com</a></span></h1> <h2 id="site-description"></h2> </hgroup> <a href="https://code.flickr.net/"> <img src="https://wp.flickr.net/wp-content/uploads/sites/3/2012/09/code-flickr-com-drawn-header-grey-large.png" width="1000" height="157" alt="code.flickr.com" /> </a> <div class="only-search with-image"> <form method="get" id="searchform" action="https://code.flickr.net/"> <label for="s" class="assistive-text">Search</label> <input type="text" class="field" name="s" id="s" placeholder="Search" /> <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" /> </form> </div> <nav id="access"> <h3 class="assistive-text">Main menu</h3> <div class="menu-menu-container"><ul id="menu-menu" class="menu"><li id="menu-item-2084" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2084"><a href="http://www.flickr.com/">Flickr</a></li> <li id="menu-item-2085" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2085"><a href="http://blog.flickr.net/">Flickr Blog</a></li> <li id="menu-item-2250" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2250"><a href="http://twitter.com/flickr">@flickr</a></li> <li id="menu-item-2086" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2086"><a href="http://twitter.com/flickrapi">@flickrapi</a></li> <li id="menu-item-2087" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2087"><a href="https://www.flickr.com/services/developer/">Developer Guidelines</a></li> <li id="menu-item-2088" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2088"><a href="http://www.flickr.com/services/api/">API</a></li> <li id="menu-item-2089" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-2089"><a href="http://www.flickr.com/jobs/">Jobs</a></li> </ul></div> </nav><!-- #access --> </header><!-- #branding --> <div id="main"> <section id="primary"> <div id="content" role="main"> <header class="page-header"> <h1 class="page-title"> Category Archives: <span>geo</span> </h1> <div class="category-archive-meta"><p>All things geo related</p> </div> </header> <nav id="nav-above"> <h3 class="assistive-text">Post navigation</h3> <div class="nav-previous"><a href="https://code.flickr.net/category/geo/page/2/" ><span class="meta-nav">←</span> Older posts</a></div> <div class="nav-next"></div> </nav><!-- #nav-above --> <article id="post-2751" class="post-2751 post type-post status-publish format-standard hentry category-geo category-labs tag-cc tag-creative-commons tag-data tag-research"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2014/10/15/the-ins-and-outs-of-the-yahoo-flickr-100-million-creative-commons-dataset/" rel="bookmark">The Ins and Outs of the Yahoo Flickr Creative Commons 100 Million Dataset</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2014/10/15/the-ins-and-outs-of-the-yahoo-flickr-100-million-creative-commons-dataset/" title="8:42 pm" rel="bookmark"><time class="entry-date" datetime="2014-10-15T20:42:15-07:00">October 15, 2014</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/bthomee/" title="View all posts by bthomee" rel="author">bthomee</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <p style="text-align:justify;">This past summer we (Yahoo Labs and Flickr) released the YFCC100M <a href="http://bit.ly/yfcc100m">dataset</a> that is the largest and most ambitious collection of Flickr photos and videos ever, containing 99,206,564 photos and 793,436 videos from 581,099 different photographers. We’re super excited about the dataset, because it is a reflection of how Flickr and photography have evolved over the past 10 years. And it contains photos and videos of almost everything under the sun (and yes, loads of cats).</p> <p style="text-align:justify;">We’ve received a lot of emails and tweets asking for more details about the dataset, so in this blog post, we’ll gladly tell you. Each of the 100 million photos and videos is associated with a Creative Commons license that indicates how it may be used by others. The table below shows the complete breakdown of licenses in our dataset. Approximately 31.8% is marked for commercial use, while 17.3% has the most liberal license, which only requires attribution to the photographer.</p> <table style="width:auto;margin:auto;border:0;padding-bottom:10px;" align="center"> <tbody> <tr style="border:0;"> <th style="padding:0 5px;border:0;"><strong><em>License</em></strong></th> <th style="padding:0 5px;border:0;text-align:right;"><strong><em>Photos</em></strong></th> <th style="padding:0 5px;border:0;text-align:right;"><strong><em>Videos</em></strong></th> </tr> <tr style="border:0;"> <td style="padding:0 5px;border:0;"><img decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by/3.0/80x15.png" alt="" width="80" height="15" /></td> <td style="padding:0 5px;border:0;text-align:right;">17,210,144</td> <td style="padding:0 5px;border:0;text-align:right;">137,503</td> </tr> <tr style="border:0;"> <td style="padding:0 5px;border:0;text-align:left;"><img decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-sa/3.0/80x15.png" alt="" width="80" height="15" /></td> <td style="padding:0 5px;border:0;text-align:right;">9,408,154</td> <td style="padding:0 5px;border:0;text-align:right;">72,116</td> </tr> <tr style="border:0;"> <td style="padding:0 5px;border:0;text-align:left;"><img decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nd/3.0/80x15.png" alt="" width="80" height="15" /></td> <td style="padding:0 5px;border:0;text-align:right;">4,910,766</td> <td style="padding:0 5px;border:0;text-align:right;">37,542</td> </tr> <tr style="border:0;"> <td style="padding:0 5px;border:0;text-align:left;"><img loading="lazy" decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nc/3.0/80x15.png" alt="" width="80" height="15" /></td> <td style="padding:0 5px;border:0;text-align:right;">12,674,885</td> <td style="padding:0 5px;border:0;text-align:right;">102,288</td> </tr> <tr style="border:0;"> <td style="padding:0 5px;border:0;text-align:left;"><img loading="lazy" decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/80x15.png" alt="" width="80" height="15" /></td> <td style="padding:0 5px;border:0;text-align:right;">28,776,835</td> <td style="padding:0 5px;border:0;text-align:right;">235,319</td> </tr> <tr style="border:0;"> <td style="padding:0 5px;border:0;text-align:left;"><img loading="lazy" decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png" alt="" width="80" height="15" /></td> <td style="padding:0 5px;border:0;text-align:right;">26,225,780</td> <td style="padding:0 5px;border:0;text-align:right;">208,668</td> </tr> </tbody> </table> <p style="text-align:justify;">The photos and videos themselves are very diverse. We’ve found photos showing street scenes captured as part of photographer <a href="http://www.flickr.com/photos/24917258@N05">Andy Nystrom</a>‘s life-logging activities, photos of real-world events like protests and rallies, as well as photos of natural phenomena.</p> <table style="width:auto;margin:auto;border:0;" align="center"> <tbody> <tr> <td style="border:0;"><a title="Five years of Iraq war die-in by Steve Rhodes, on Flickr" href="https://www.flickr.com/photos/ari/2349844181" target="_blank"><img loading="lazy" decoding="async" style="border:0;" src="https://farm4.staticflickr.com/3237/2349844181_13da761b26_m.jpg" alt="Five years of Iraq war die-in" width="240" height="161" /></a></td> <td style="border:0;"><a title="IMG_9793 by Andy Nystrom, on Flickr" href="https://www.flickr.com/photos/24917258@N05/11942372293"><img loading="lazy" decoding="async" style="border:0;" src="https://farm4.staticflickr.com/3701/11942372293_b800fbd6d5_m.jpg" alt="IMG_9793" width="240" height="180" /></a></td> <td style="border:0;"><a title="851-Aurora Borealis Northern Lights from Lodge near Fairbanks 1 Sep 28, 2011 1-11 AM 1600x1060 by BJ Graf, on Flickr" href="https://www.flickr.com/photos/bjgraf/8976613751" target="_blank"><img loading="lazy" decoding="async" style="border:0;" src="https://farm9.staticflickr.com/8268/8976613751_27c7998210_m.jpg" alt="851-Aurora Borealis Northern Lights from Lodge near Fairbanks 1 Sep 28, 2011 1-11 AM 1600x1060" width="240" height="159" /></a></td> </tr> <tr> <th style="text-align:center;border:0;">Steve Rhodes<br /> <img loading="lazy" decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/80x15.png" alt="" width="80" height="15" /></th> <th style="text-align:center;border:0;">Andy Nystrom<br /> <img loading="lazy" decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nc-nd/3.0/80x15.png" alt="" width="80" height="15" /></th> <th style="text-align:center;border:0;">BJ Graf<br /> <img loading="lazy" decoding="async" style="border:0;" src="http://i.creativecommons.org/l/by-nc-sa/3.0/80x15.png" alt="" width="80" height="15" /></th> </tr> </tbody> </table> <p style="text-align:justify;">To understand more about the visual content of the photos in the dataset, the Flickr Vision team used a deep-learning approach to find the presence of visual concepts, such as people, animals, objects, events, architecture, and scenery across a large sample of the corpus. There’s a diverse collection of visual concepts present in the photos and videos, ranging from indoor to outdoor images, faces to food, nature to automobiles.</p> <table style="width:auto;margin:auto;border:0;padding-bottom:10px;" align="center"> <tbody> <tr style="border:0;"> <th style="border:0;"><strong><em>Concept</em></strong></th> <th style="border:0;text-align:right;"><strong><em>Count</em></strong></th> </tr> <tr> <td style="border:0;">outdoor</td> <td style="border:0;text-align:right;">32,968,167</td> </tr> <tr> <td style="border:0;">indoor</td> <td style="border:0;text-align:right;">12,522,140</td> </tr> <tr> <td style="border:0;">face</td> <td style="border:0;text-align:right;">8,462,783</td> </tr> <tr> <td style="border:0;">people</td> <td style="border:0;text-align:right;">8,462,783</td> </tr> <tr> <td style="border:0;">building</td> <td style="border:0;text-align:right;">4,714,916</td> </tr> <tr> <td style="border:0;">animal</td> <td style="border:0;text-align:right;">3,515,971</td> </tr> <tr> <td style="border:0;">nature</td> <td style="border:0;text-align:right;">3,281,513</td> </tr> <tr> <td style="border:0;">landscape</td> <td style="border:0;text-align:right;">3,080,696</td> </tr> <tr> <td style="border:0;">tree</td> <td style="border:0;text-align:right;">2,885,045</td> </tr> <tr> <td style="border:0;">sports</td> <td style="border:0;text-align:right;">2,817,425</td> </tr> <tr> <td style="border:0;">architecture</td> <td style="border:0;text-align:right;">2,539,511</td> </tr> <tr> <td style="border:0;">plant</td> <td style="border:0;text-align:right;">2,533,575</td> </tr> <tr> <td style="border:0;">house</td> <td style="border:0;text-align:right;">2,258,396</td> </tr> <tr> <td style="border:0;">groupshot</td> <td style="border:0;text-align:right;">2,249,707</td> </tr> <tr> <td style="border:0;">vehicle</td> <td style="border:0;text-align:right;">2,064,329</td> </tr> <tr> <td style="border:0;">water</td> <td style="border:0;text-align:right;">2,040,048</td> </tr> <tr> <td style="border:0;">mountain</td> <td style="border:0;text-align:right;">2,017,749</td> </tr> <tr> <td style="border:0;">automobile</td> <td style="border:0;text-align:right;">1,351,444</td> </tr> <tr> <td style="border:0;">car</td> <td style="border:0;text-align:right;">1,340,751</td> </tr> <tr> <td style="border:0;">food</td> <td style="border:0;text-align:right;">1,218,207</td> </tr> <tr> <td style="border:0;">concert</td> <td style="border:0;text-align:right;">1,174,346</td> </tr> <tr> <td style="border:0;">flower</td> <td style="border:0;text-align:right;">1,164,607</td> </tr> <tr> <td style="border:0;">game</td> <td style="border:0;text-align:right;">1,110,219</td> </tr> <tr> <td style="border:0;">text</td> <td style="border:0;text-align:right;">1,105,763</td> </tr> <tr> <td style="border:0;">night</td> <td style="border:0;text-align:right;">1,105,296</td> </tr> </tbody> </table> <p style="text-align:justify;">There are 68,971,123 photos and videos in the set that have user-annotated tags. If we look at specific tags used, we see it is very common for people to use the year of capture, the camera brand, place names, scenery, and activities as tags. The top 25 tags (excluding the years of capture) and how often they were used are listed below, as well as the tag frequency distribution for the 100 most-frequently used tags.</p> <table style="width:auto;margin:auto;border:0;padding-bottom:10px;" align="center"> <tbody> <tr> <th style="border:0;"><strong><em>User Tag</em></strong></th> <th style="border:0;text-align:right;"><strong><em>Count</em></strong></th> </tr> <tr> <td style="border:0;">nikon</td> <td style="border:0;text-align:right;">1,195,576</td> </tr> <tr> <td style="border:0;">travel</td> <td style="border:0;text-align:right;">1,195,467</td> </tr> <tr> <td style="border:0;">usa</td> <td style="border:0;text-align:right;">1,188,344</td> </tr> <tr> <td style="border:0;">canon</td> <td style="border:0;text-align:right;">1,101,769</td> </tr> <tr> <td style="border:0;">london</td> <td style="border:0;text-align:right;">996,166</td> </tr> <tr> <td style="border:0;">japan</td> <td style="border:0;text-align:right;">932,294</td> </tr> <tr> <td style="border:0;">france</td> <td style="border:0;text-align:right;">917,578</td> </tr> <tr> <td style="border:0;">nature</td> <td style="border:0;text-align:right;">872,029</td> </tr> <tr> <td style="border:0;">art</td> <td style="border:0;text-align:right;">854,669</td> </tr> <tr> <td style="border:0;">music</td> <td style="border:0;text-align:right;">826,692</td> </tr> <tr> <td style="border:0;">europe</td> <td style="border:0;text-align:right;">782,932</td> </tr> <tr> <td style="border:0;">beach</td> <td style="border:0;text-align:right;">758,799</td> </tr> <tr> <td style="border:0;">united states</td> <td style="border:0;text-align:right;">743,470</td> </tr> <tr> <td style="border:0;">england</td> <td style="border:0;text-align:right;">739,346</td> </tr> <tr> <td style="border:0;">wedding</td> <td style="border:0;text-align:right;">728,240</td> </tr> <tr> <td style="border:0;">city</td> <td style="border:0;text-align:right;">689,518</td> </tr> <tr> <td style="border:0;">italy</td> <td style="border:0;text-align:right;">688,743</td> </tr> <tr> <td style="border:0;">canada</td> <td style="border:0;text-align:right;">686,254</td> </tr> <tr> <td style="border:0;">new york</td> <td style="border:0;text-align:right;">685,311</td> </tr> <tr> <td style="border:0;">vacation</td> <td style="border:0;text-align:right;">680,142</td> </tr> <tr> <td style="border:0;">germany</td> <td style="border:0;text-align:right;">672,819</td> </tr> <tr> <td style="border:0;">party</td> <td style="border:0;text-align:right;">663,968</td> </tr> <tr> <td style="border:0;">park</td> <td style="border:0;text-align:right;">651,717</td> </tr> <tr> <td style="border:0;">people</td> <td style="border:0;text-align:right;">641,285</td> </tr> <tr> <td style="border:0;">water</td> <td style="border:0;text-align:right;">640,234</td> </tr> </tbody> </table> <p><a title="User tag distribution in the YFCC100M Dataset by David Shamma, on Flickr" href="https://www.flickr.com/photos/ayman/15350834578"><img loading="lazy" decoding="async" class="aligncenter" src="https://farm4.staticflickr.com/3944/15350834578_beb2ca36e5_n.jpg" alt="User tag distribution in the YFCC100M Dataset" width="320" height="309" /></a></p> <p style="text-align:justify;">Some photos and videos (3,350,768 to be exact) carry <a href="http://www.flickr.com/groups/api/discuss/72157594497877875/">machine tags</a>. Noteworthy machine tags are those having the “siwild” namespace, referring to photos uploaded by scientists of the <a href="http://www.flickr.com/photos/51045845@N08">Smithsonian</a>, and the “taxonomy” namespace, which refers to photos in which flora and fauna have been carefully classified. The most frequently occurring namespace, “uploaded,” refers to the applications used to share the photos on Flickr, which are principally the Flickr and Instagram iOS apps. Other interesting machine tags are those referring to the different filters that can be applied to a photo, or roughly 750,000 photos. Overall, most machine tags are related to food and drink, events, camera and application metadata, as well as locations.</p> <table style="width:auto;margin:auto;border:0;padding-bottom:10px;" align="center"> <tbody> <tr> <th style="border:0;"><strong><em>Machine Tag</em></strong></th> <th style="border:0;text-align:right;"><strong><em>Count</em></strong></th> </tr> <tr> <td style="border:0;">uploaded</td> <td style="border:0;text-align:right;">1,917,650</td> </tr> <tr> <td style="border:0;">siwild</td> <td style="border:0;text-align:right;">1,169,957</td> </tr> <tr> <td style="border:0;">taxonomy</td> <td style="border:0;text-align:right;">1,067,857</td> </tr> <tr> <td style="border:0;">foursquare</td> <td style="border:0;text-align:right;">894,265</td> </tr> <tr> <td style="border:0;">exif</td> <td style="border:0;text-align:right;">617,287</td> </tr> <tr> <td style="border:0;">flickriosapp</td> <td style="border:0;text-align:right;">538,829</td> </tr> <tr> <td style="border:0;">geo</td> <td style="border:0;text-align:right;">443,762</td> </tr> <tr> <td style="border:0;">sequence</td> <td style="border:0;text-align:right;">429,948</td> </tr> <tr> <td style="border:0;">lastfm</td> <td style="border:0;text-align:right;">313,379</td> </tr> <tr> <td style="border:0;">flickrandroidapp</td> <td style="border:0;text-align:right;">222,238</td> </tr> </tbody> </table> <p style="text-align:justify;">In terms of locations, the photos and videos in the dataset have been taken all over the world. In total, 48,366,323 photos and 103,506 videos were geotagged. The most popular cities where photos and videos were shot are concentrated in the United States, principally New York City, San Francisco, Los Angeles, Chicago, and Seattle; in Europe, they were principally London, Berlin, Barcelona, Rome and Amsterdam. There are also photos that have been taken in remote locations like <a href="https://www.flickr.com/photos/66558155@N00/238367815/">Kiribati</a>, icy places like <a href="https://www.flickr.com/photos/ytwhitelight/184257087/">Svalbard</a>, and exotic places like <a href="https://www.flickr.com/photos/trekkwik/3922243661/">Comoros</a>. In fact, photos and videos from this dataset have been taken in 249 different territories (countries, islands, etc) around the world, and even in international waters or airspace.</p> <p><a title="One Million Creative Commons Geo-tagged Photos by David Shamma, on Flickr" href="https://www.flickr.com/photos/ayman/14446556792" target="_blank"><img loading="lazy" decoding="async" class="aligncenter" src="https://farm4.staticflickr.com/3889/14446556792_c9f18d9864.jpg" alt="One Million Creative Commons Geo-tagged Photos" width="500" height="390" /></a></p> <p style="text-align:justify;">Our dataset further reveals that there are many different cameras in use within the Flickr community. The Canon EOS 400D and 350D have a lead over the Nikon D90 (calm down…we’re not starting anything by saying that). Apple’s iPhones form the most popular type of cameraphone.</p> <table style="width:auto;margin:auto;border:0;padding-bottom:10px;" align="center"> <tbody> <tr> <th style="border:0;"><strong><em>Make</em></strong></th> <th style="border:0;"><strong><em>Camera</em></strong></th> <th style="border:0;text-align:right;"><strong><em>Count</em></strong></th> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 400D</td> <td style="border:0;text-align:right;">2,539,571</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 350D</td> <td style="border:0;text-align:right;">2,140,722</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D90</td> <td style="border:0;text-align:right;">1,998,637</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 5D Mark II</td> <td style="border:0;text-align:right;">1,896,219</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D80</td> <td style="border:0;text-align:right;">1,719,045</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 7D</td> <td style="border:0;text-align:right;">1,526,158</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 450D</td> <td style="border:0;text-align:right;">1,509,334</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D40</td> <td style="border:0;text-align:right;">1,358,791</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 40D</td> <td style="border:0;text-align:right;">1,334,891</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 550D</td> <td style="border:0;text-align:right;">1,175,229</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D7000</td> <td style="border:0;text-align:right;">1,068,591</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D300</td> <td style="border:0;text-align:right;">1,053,745</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D50</td> <td style="border:0;text-align:right;">1,032,019</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 500D</td> <td style="border:0;text-align:right;">1,031,044</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D700</td> <td style="border:0;text-align:right;">942,806</td> </tr> <tr> <td style="border:0;">Apple</td> <td style="border:0;">iPhone 4</td> <td style="border:0;text-align:right;">922,675</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D200</td> <td style="border:0;text-align:right;">919,688</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 20D</td> <td style="border:0;text-align:right;">843,133</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 50D</td> <td style="border:0;text-align:right;">831,570</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 30D</td> <td style="border:0;text-align:right;">820,838</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 60D</td> <td style="border:0;text-align:right;">772,700</td> </tr> <tr> <td style="border:0;">Apple</td> <td style="border:0;">iPhone 4S</td> <td style="border:0;text-align:right;">761,231</td> </tr> <tr> <td style="border:0;">Apple</td> <td style="border:0;">iPhone</td> <td style="border:0;text-align:right;">743,735</td> </tr> <tr> <td style="border:0;">Nikon</td> <td style="border:0;">D70</td> <td style="border:0;text-align:right;">742,591</td> </tr> <tr> <td style="border:0;">Canon</td> <td style="border:0;">EOS 5D</td> <td style="border:0;text-align:right;">699,381</td> </tr> </tbody> </table> <p style="text-align:justify;">Our collection of 100 million photos and videos marks a new milestone in the history of datasets. The collection is one of the largest released for academic use, and it’s incredibly varied—not just in terms of the content shown in the photos and videos, but also the locations where they were taken, the photographers who took them, the tags that were applied, the cameras that were used, etc. The best thing about the dataset is that it is completely free to <a href="http://bit.ly/yfcc100md">download</a> by anyone, given that all photos and videos have a Creative Commons license. Whether you are a researcher, a developer, a hobbyist or just plain curious about online photography, the dataset is the best way to study and explore a wide sample of Flickr photos and videos. Happy researching and happy hacking!</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a>, <a href="https://code.flickr.net/category/labs/" rel="category tag">labs</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/cc/" rel="tag">cc</a>, <a href="https://code.flickr.net/tag/creative-commons/" rel="tag">creative commons</a>, <a href="https://code.flickr.net/tag/data/" rel="tag">data</a>, <a href="https://code.flickr.net/tag/research/" rel="tag">research</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-2751 --> <article id="post-2273" class="post-2273 post type-post status-publish format-standard hentry category-geo tag-geo tag-shapefile"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2012/10/24/2273/" rel="bookmark">We saved you a step…</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2012/10/24/2273/" title="5:41 pm" rel="bookmark"><time class="entry-date" datetime="2012-10-24T17:41:45-07:00">October 24, 2012</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/standardpixel/" title="View all posts by Eric Gelinas" rel="author">Eric Gelinas</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <p>It seems when we launched <a href="http://code.flickr.com/blog/2011/01/08/flickr-shapefiles-public-dataset-2-0/">version 2.0</a> of our <a href="http://code.flickr.com/blog/2008/10/30/the-shape-of-alpha/">Flickr shapes</a>, we posted them with a flaw which made them useless to most popular geo applications.</p> <p>Awwwww…</p> <p>Luckily, <a href="http://twitter.com/cmanning88">Christopher Manning</a> wrote a <a href="http://www.christophermanning.org/writing/make-flickr-shapes-json-parsable/">python script</a> which makes them useful.</p> <p>Yaaaayyyyy!</p> <p>The least we can do is post an update which has already been christopher-manning-ified, So, we are very happy to announce version 2.0.1 of the Flickr shape files which can be downloaded here:<br /> <a href="http://www.flickr.com/services/shapefiles/2.0.1/">http://www.flickr.com/services/shapefiles/2.0.1/</a></p> <p>Look, it works:</p> <p class="figure"> <img loading="lazy" decoding="async" src="http://farm9.staticflickr.com/8196/8075284257_ef27d63253_c.jpg" width="800" height="506"><br /> <span class="caption">Flickr Shapes 2.0.1 in TileMill</span> </p> <p>A very hearty THANKS! from your friends at Flickr, Christopher.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/geo/" rel="tag">geo</a>, <a href="https://code.flickr.net/tag/shapefile/" rel="tag">shapefile</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-2273 --> <article id="post-1638" class="post-1638 post type-post status-publish format-standard hentry category-geo tag-geo tag-privacy"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2011/08/30/in-the-privacy-of-our-homes/" rel="bookmark">In the privacy of our homes</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2011/08/30/in-the-privacy-of-our-homes/" title="5:27 pm" rel="bookmark"><time class="entry-date" datetime="2011-08-30T17:27:23-07:00">August 30, 2011</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/hartsell/" title="View all posts by Trevor Hartsell" rel="author">Trevor Hartsell</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <p>The best thing about working at Flickr is that my coworkers all love the site and product ideas can come from anyone.</p> <p>Recently, the Flickr staff had to work from home while our office was disassembled and relocated a few floors down. A chance to sleep in and start the weekend early? Or get together with a few ambitious coworkers and hack together a new feature?</p> <p>We met at Nolan’s house, ate a farmer’s breakfast, and brainstormed.</p> <p><a href="http://www.flickr.com/photos/nolancaudill/5518277039/"><img loading="lazy" decoding="async" class="alignnone" src="http://farm6.static.flickr.com/5057/5518277039_68d747ffc9.jpg" alt="Flickr Satellite Office" width="500" height="332" /></a></p> <p>We wanted to build something fun, which a few of us could start working on that morning and have a demo ready by the end of the day. Something suited to the talents and interests of the people in the room. Secret Faves? Risqué Explore?</p> <p><a href="http://www.flickr.com/photos/bertrandom/">Bert</a> wanted to help people geotag more photos, but he wanted more sophisticated privacy controls first. I’d been using a <a href="http://www.flickr.com/services/apps/72157623941942987/">simple web app</a> that I built with the Flickr API to manage the geo privacy of my photos, and it seemed like something more people should have access to.</p> <p>So we had a need. We had a proof of concept. We had enough highly caffeinated engineers to fill a small dinner table. “Let’s build geofences.”</p> <p></p> <h2>What the beep is a geofence?</h2> <p></p> <p><a href="http://www.flickr.com/photos/dunstan/4892270954/"><img loading="lazy" decoding="async" class="alignnone" src="http://farm5.static.flickr.com/4096/4892270954_2b7619b15a.jpg" alt="Parked outside a school! by Dunstan" width="500" height="374" /></a></p> <p>You probably know what geotagging is. It’s nerd-speak for putting your photos on a map. Flickr pioneered geotagging about five years ago, and our members have geotagged around 300 million photos and videos.</p> <p>We’ve always offered the same privacy settings for location data that we offer for commenting, tagging, and who can see your photos. You have default settings for your account, which are applied to all new uploads, and which you can override on a photo-by-photo basis.</p> <p>This works well for most metadata. I have a few photos that I don’t want people to comment on or add notes to, but for the most part, one setting fits all my needs.</p> <p>But geo is special. I often override my default geo privacy. Every time I upload a photo taken at my house, I mark it “Contacts only”. Same for my grandma’s house. And that dark place with the goats and candles? Sorry, it’s private.</p> <p>Managing geo privacy by hand is tedious and error prone. Geofences make it easier.</p> <p><img loading="lazy" decoding="async" class="alignnone" src="http://farm7.static.flickr.com/6146/5986014124_bbae35ac35_o.jpg" alt="geofences" width="500" height="280" /></p> <p>Geofences are special locations that deserve their own geo privacy settings. Simply draw a circle on a map, choose a geo privacy setting for that area, and you’re done. Existing photos in that location are updated with your new setting, and any time you geotag a photo in that area, it gets that setting too.</p> <p>Geofences are applied at upload time, or when you geotag a photo after uploading it. It doesn’t matter how you upload or tag your photos: <a href="http://www.flickr.com/photos/organize/">The Organizr</a>, the map on your photo page, and <a href="http://www.flickr.com/services/api/flickr.photos.geo.setLocation.html">the API</a> all use geofences.</p> <p>If you’re ready to dive in, visit your <a href="http://www.flickr.com/account/geo/privacy/">account geo privacy page</a> and make your first geofence.</p> <p></p> <h2>Boring details</h2> <p></p> <p>When dealing with privacy, we need to be conservative, reliable, and have clearly defined rules. The geofences concept is simple, but the edge cases can be confusing.</p> <p><img loading="lazy" decoding="async" class="alignnone" src="http://farm7.static.flickr.com/6020/5978844678_7b76143922_o.png" alt="no geofences, common use case" width="500" height="152" /><br /> <i style="display:inline-block;width:250px;text-align:center;">No geofences</i><i style="display:inline-block;width:250px;text-align:center;">Common use case</i></p> <ul style="padding:10px 25px;"> <li>What happens when you have overlapping geofences?</li> <li>What if you move a photo from outside a geofence to inside one?</li> <li>Where does your default geo privacy setting fit in?</li> </ul> <p></p> <p>The vast majority of Flickr members will never encounter these edge cases. But when they do, Flickr plays it safe and chooses the most private setting from the following options:</p> <ul style="padding:10px 25px;"> <li>The member’s default geo privacy</li> <li>The current geo privacy of the photo (if it was already geotagged)</li> <li>Any geofences for the new location</li> </ul> <p></p> <p>If your account default is more private than your geofences, the geofences won’t take effect. If you have overlapping geofences for a point, the most private one will take effect. If you move a photo whose location was private into a contacts-only geofence, it will stay private.</p> <p><img loading="lazy" decoding="async" class="alignnone" src="http://farm7.static.flickr.com/6147/5978844806_33621c0a67_o.png" alt="overlapping geofences, more private account default" width="500" height="152" /><br /> <i style="display:inline-block;width:250px;text-align:center;">Overlapping geofences</i><i style="display:inline-block;width:250px;text-align:center;">More private account default</i></p> <p>As a reminder, here’s the ranking of our privacy settings:</p> <p><img loading="lazy" decoding="async" class="alignnone" src="http://farm7.static.flickr.com/6016/5985978788_6e89a4aec8_o.png" alt="" width="222" height="345" /></p> <p>Note that friends and family are at the same level in the hierarchy. Your family shouldn’t see locations marked as friends only, and vice versa.</p> <p>With that in mind, what should Flickr do when someone geotags a photo where friends and family overlap? Maybe he wants both friends and family to see it, or maybe he wants neither friends nor family to see it. To really be safe, we must make that location completely private.</p> <p><img loading="lazy" decoding="async" class="alignnone" src="http://farm7.static.flickr.com/6135/5978844962_c63cfa6e03_o.png" alt="friends and family overlap" width="500" height="152" /><br /> <i style="display:inline-block;width:500px;text-align:center;">Friends and family overlap</i></p> <p></p> <h2>Go forth and geotag</h2> <p></p> <p>A few years ago, privacy controls like this would have been overkill. Geo data was new and underused, and the answer to privacy concerns was often, “you upload it, you deal with it.”</p> <p>But today, physical places are important to how we use the web. Sometimes you want everyone to know exactly where you took a photo. And sometimes you don’t.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/geo/" rel="tag">geo</a>, <a href="https://code.flickr.net/tag/privacy/" rel="tag">privacy</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-1638 --> <article id="post-1394" class="post-1394 post type-post status-publish format-standard hentry category-geo tag-clustr tag-geo tag-shapefile"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2011/01/08/flickr-shapefiles-public-dataset-2-0/" rel="bookmark">Flickr Shapefiles Public Dataset 2.0</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2011/01/08/flickr-shapefiles-public-dataset-2-0/" title="12:47 am" rel="bookmark"><time class="entry-date" datetime="2011-01-08T00:47:11-08:00">January 8, 2011</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <p><a href="http://www.flickr.com/photos/straup/5049664321/"><img loading="lazy" decoding="async" class="alignnone" src="http://farm5.static.flickr.com/4131/5049664321_3282398ebd.jpg" alt="" width="500" height="399" /></a></p> <p>An embarrassingly long time ago we released the first public version of <a href="http://code.flickr.com/blog/2009/05/21/flickr-shapefiles-public-dataset-10/">the Flickr Shapefiles</a>. What does this have to do with Captain America and a cat? Nothing, really.</p> <p>Anyway, we haven’t completely forgotten about shapefiles and have finally gotten around to generating a new batch (read about <a href="http://code.flickr.com/blog/2008/10/30/the-shape-of-alpha/">Alpha Shapes</a> to find out how it’s done). When Aaron did the first run we had somewhere around ninety million (90M) geotagged photos. Today we have over one hundred and ninety million (190M) and that number is growing rapidly. Of course lots of those will fall within the boundaries of the existing shapes and won’t give us any new information, but some of them will improve the boundaries of old shapes, and others will help create new shapes where there weren’t any before. Version 1 of the dataset had shapes for around one hundred and eighty thousand (180K) WOE IDs, and now we have shapes for roughly two hundred and seventy thousand (270K) WOE IDs. Woo.</p> <p>The dataset is available for download today, available for use under the <a href="http://creativecommons.org/publicdomain/zero/1.0/">Creative Commons Zero Waiver</a>:</p> <p style="text-align: center; padding-top: 20px; padding-bottom: 20px; border: 1px dotted #666; margin-top: 30px; margin-bottom: 30px;"><strong style="font-family: sans-serif; font-size: large;"><a href="http://www.flickr.com/services/shapefiles/2.0/">http://www.flickr.com/services/shapefiles/2.0/</a></strong></p> <h2>Little Johnny JSON</h2> <p><a title="Today I'm a Cop. by jspaw, on Flickr" href="http://www.flickr.com/photos/allspaw/456597470/"><img loading="lazy" decoding="async" src="http://farm1.static.flickr.com/243/456597470_f85795df09.jpg" alt="Today I'm a Cop." width="500" height="333" /></a></p> <p>Originally we provided the full dataset in our own home-grown XML format because, well, it seemed like a good idea. For version two we’re releasing the shapes in GeoJSON format. We think this is a Good Thing because unlike our old XML format, <a href="http://wiki.geojson.org/Users">at least one other person in the world</a> already knows how to read and write GeoJSON. For example, Our friends over at <a href="http://stamen.com/">Stamen Design</a> and <a href="http://simplegeo.com/">SimpleGeo</a> have created a ridiculously easy-to-use JavaScript library called <a href="http://polymaps.org/">Polymaps</a> which of course reads GeoJSON out of the box. With a few lines of JavaScript you can render the Flickr shapefiles and start using them without all that pesky XML parsing stuff:</p> <p><a title="Statez by : Nils, on Flickr" href="http://www.flickr.com/photos/slopetrash/5327825882/"><img loading="lazy" decoding="async" src="http://farm6.static.flickr.com/5086/5327825882_df9ec897ed.jpg" alt="Statez" width="500" height="479" /></a></p> <p>Or if GeoJSON doesn’t suit you you can use a free tool like <a href="http://www.gdal.org/ogr2ogr.html">ogr2ogr</a> to convert it to something that does.</p> <h2>Layers</h2> <p><a title="1000 layers by doug88888, on Flickr" href="http://www.flickr.com/photos/doug88888/3139395660/"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3292/3139395660_38594071e7.jpg" alt="1000 layers" width="333" height="500" /></a></p> <h6>(photo by <a href="http://www.flickr.com/photos/doug88888/">doug88888</a>)</h6> <p>The GeoJSON format allows grouping of features (and their related geometries) into <a href="http://geojson.org/geojson-spec.html#feature-collection-objects">FeatureCollection</a> objects. A FeatureCollection seems to be roughly equivalent to a layer in a typical GIS, or a placetype in <a href="http://developer.yahoo.com/geo/geoplanet/guide/concepts.html">WhereOnEarth-speak</a>. To make the dataset a little easier to manage we decided to break the shapes up into FeatureCollections based on placetype; one each for continents, countries, regions (states), counties, localities (cities), and neighbourhoods. Each of these is its own GeoJSON file in the dataset.</p> <p>Here’s an example of what one of our GeoJSON objects looks like:</p> <pre>{ "type": "FeatureCollection", "name": "Flickr Shapes Public Dataset 2.0 - Regions", "features": [ { "type": "Feature", "id": 2344541, "properties": { "woe_id": 2344541, "place_id": "Cxf0SmObApi9R9T8", "place_type": "region", "place_type_id": 8, "label": "Barbuda, AG, Antigua and Barbuda", }, "geometry": { "type": "MultiPolygon", "created": 1292444482, "alpha": 0.03, "points": 118, "edges": 17, "is_donuthole": 0, "link": { "href": "http://farm6.static.flickr.com/5209/shapefiles/2344541_20101215_724c4cae47.tar.gz", }, "bbox": [-62.314453125,17.086019515991,-61.690979003906,17.93692779541], "coordinates": [ [ [[-61.739044,17.587740], [-61.735268,17.546171], [-61.690979,17.426649], [-61.765137,17.413546] ... etc</pre> <p>A file is a single FeatureCollection object which holds an array of Features, which each hold a Geometry which is a MultiPolygon, which holds an array of Polygons which in turn each consist of an array of LinearRings. Got it?</p> <h2>You’ve Been Superseded</h2> <p>We’ve also included a separate file/layer called flickr_shapes_superseded.geojson. This is a FeatureCollection that consists of all the WOE IDs that have been “superseded”. Occasionally (too often?) a WOE ID needs to be <a href="http://developer.yahoo.com/geo/geoplanet/guide/concepts.html">retired and replaced with a new one</a>. We keep up to date with these and are always reverse-geocoding against the latest WOE IDs. However, there are plenty of old photos (and Flickr shapes) that have been assigned to one of these old IDs, and we have shapes for them (currently a little more than nine thousand). A simple solution might be to just re-assign these photos to the new WOE IDs (when a WOE ID is retired its replacement is specified), or even just re-run the reverse-geocoding process. This may not be what the owner of the photo wants; it might come out with a different result than they had at first (which they may have been perfectly happy with), if the size and location of the WOE rectangle changed (which it probably did). So it’s a problem without a clear solution. And since we have data for these old WOE IDs we’ve included their associated shapes in the dataset. In most cases there will be shapes corresponding to the new WOE IDs that will over time become more and more accurate as more photos get uploaded and end up being assigned to the new WOE IDs. But you can have the old ones too.</p> <h2>WTF</h2> <p>Sometimes, Clustr just gets it wrong. As mentioned in previous posts many of the Flickr shapes are just plain weird. It may be due to a lack of data (i.e. source photos), a weakness of the algorithm, an inappropriate choice of the alpha parameter or (shame!) a plain old bug. One of the things that surprised us was that Clustr was not supposed to output <em>inner rings</em>, or polygons with holes. It turns out that it does. In the GeoJSON output this can cause some weirdness (depending on what you use to render the shapes) since the GeoJSON is formatted with the assumption that each ring is a distinct polygon, instead of possibly one part of a single polygon with holes in it. This and other weirdness are known issues and something we shall strive to fix in the future, however we felt it best to release the existing dataset now rather than spend forever trying to get it perfect, and end up not releasing anything at all.</p> <p>You may also notice that unlike version 1 of the dataset, there is only a single shape per WOE ID. All of the previous versions of the shapes are still available via <a href="http://www.flickr.com/services/api/flickr.places.getShapeHistory.html">the Flickr API</a>, but in the interests of keeping the file size down we’ve limited this download to just the latest versions of each shape.</p> <p>And as always, there’s lots more to do.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/clustr/" rel="tag">clustr</a>, <a href="https://code.flickr.net/tag/geo/" rel="tag">geo</a>, <a href="https://code.flickr.net/tag/shapefile/" rel="tag">shapefile</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-1394 --> <article id="post-557" class="post-557 post type-post status-publish format-standard hentry category-change-log category-geo"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2009/02/13/changelog-yahoo-updated-map-tiles-and-some-osm-ones/" rel="bookmark">[changelog] Yahoo! updated map tiles and some OSM ones.</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2009/02/13/changelog-yahoo-updated-map-tiles-and-some-osm-ones/" title="12:41 am" rel="bookmark"><time class="entry-date" datetime="2009-02-13T00:41:40-08:00">February 13, 2009</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <p>Recently Yahoo!! released new map tiles … ah heck, actually it was a couple of months ago, I just suck at writing blog posts … <i>anyway</i>, here’s their post from last December: <a href="http://www.ygeoblog.com/blog/2008/12/16/yahoo-maps-new-international-coverage/">Yahoo! Maps – New International Coverage</a> which goes on to say …</p> <blockquote><p><i>“We’ve added detailed coverage to 45 new countries, with new data in a further 30 countries, to make it easier for you to navigate to exotic locales as you plan for your winter travel.”</i></p></blockquote> <p>I’m as keen as the next person to have 45 new countries, so I bumped our version of the maps API used over here at Flickr to make use of the new tiles.</p> <p>Which gives us more to work with for many bits of Albania, Andorra, Argentina, Australia, Austria, Bahrain, Belarus, Belgium, Bosnia & Herzegovina, Botswana, Brazil, Bulgaria, Canada, Croatia, Cyprus, Czech Republic, Denmark, Estonia, Finland, France, Germany, Gibraltar, Greece, Hong Kong, Hungary, Iceland, India, Indonesia, Ireland, Italy, Kuwait, Latvia, Lesotho, Liechtenstein, Lithuania, Luxembourg, Macau-China, Macedonia, Malaysia, Malta, Mexico, Moldova, Monaco, Montenegro, Namibia, Netherlands, New Zealand, Norway, Oman, Philippines, Poland, Portugal, Qatar, Romania, Russia, San Marino, Saudi Arabia, Serbia, Singapore, Slovakia, Slovenia, South Africa, South Korea, Spain, Swaziland, Sweden, Switzerland, Taiwan, Thailand, Turkey, US, United Arab Emirates, United Kingdom and [catch breath], Vietnam.</p> <p>Often we’ll try to improve our coverage with the help of (the frankly awesome) <a href="http://www.openstreetmap.org/">OpenStreetMap<a> (OSM) peeps, as previously mentioned in; <a href="http://blog.flickr.net/en/2008/08/12/around-the-world-and-back-again/">Around the World and Back Again,</a> <a href="http://code.flickr.com/blog/2008/08/25/flickr-heart-burning-man-heart-openstreetmap/">Flickr [heart] Burning Man [heart] OpenStreetMap</a> and <a href="http://blog.flickr.net/en/2008/10/30/more-cities/">More new map tiles</a>.</p> <p>With this roll out we’ve actually removed some OSM tiles. Mexico City, Rio de Janeiro, Sao Paulo are now covered in more detail by Yahoo! … here’s the tiles for Mexico City …</p> <p><a href="http://www.flickr.com/photos/35468159852@N01/3275534502" title="View 'Mexico City - Yahoo Map Tiles' on Flickr.com"></p> <div style="text-align:center;"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3338/3275534502_b57a8c4859.jpg" alt="Mexico City - Yahoo Map Tiles" border="0" width="500" height="406" /></div> <p></a></p> <p>… which as you can see are pretty good.</p> <p>But from OpenStreetMap we’ve added <a href="http://www.flickr.com/map?&fLat=5.5617&fLon=-0.2061&zl=5">Accra</a>, <a href="http://www.flickr.com/map?&fLat=36.7589&fLon=3.0692&zl=6">Algiers</a>, <a href="http://www.flickr.com/map?&fLat=30.0593&fLon=31.263&zl=6">Cairo</a>, <a href="http://www.flickr.com/map?&fLat=-17.8233&fLon=31.0502&zl=5">Harare</a>, <a href="http://www.flickr.com/map?&fLat=-4.3322&fLon=15.2917&zl=5">Kinshasa</a>, <a href="http://www.flickr.com/map?&fLat=2.0354&fLon=45.3404&zl=5">Mogadishu</a> and <a href="http://www.flickr.com/map?&fLat=-1.2772&fLon=36.8109&zl=5">Nairobi</a>, you can see the before and after for Nairobi below …</p> <p><b>Before</b><br /> <a href="http://www.flickr.com/photos/35468159852@N01/3275448058" title="View 'Nairobi - Yahoo Tiles' on Flickr.com"></p> <div style="text-align:center;"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3431/3275448058_459e1d275c.jpg" alt="Nairobi - Yahoo Tiles" border="0" width="500" height="406" /></div> <p></a></p> <p><b>After, with OSM Tiles</b><br /> <a href="http://www.flickr.com/photos/35468159852@N01/3274627401" title="View 'Nairobi OSM tiles' on Flickr.com"></p> <div style="text-align:center;"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3462/3274627401_1c74ac59c9.jpg" alt="Nairobi OSM tiles" border="0" width="500" height="406" /></div> <p></a></p> <p>… which as you can see are also pretty good :)</p> <p>Clearly we can’t spend forever swapping tiles in and out, well maybe we can, but at some point there’ll probably be a better way of managing this kind of thing.</p> <p>In the meantime though, this being the code blog, and just for fun, here’s a little bit of what happens in the world of JavaScript.</p> <p><b>Warning, some code ahead!</b></p> <p>This check_map function is called each time you move, zoom or switch map views …</p> <pre> check_map: function(map_obj, parent_node) { // Grab the focus, zoomlevel and maptype of the current view var lat_lon = map_obj.getCenterLatLon(); var zl = map_obj.getZoomLevel(); var map_type = map_obj.getCurrentMapType(); </pre> <p>Then we check the location against a list of places we want to load OSM tiles for, we could do this any number of ways, but pragmatically this just works (scroll the below code all the way to the right for the interesting bits, if you’re not reading this in an RSS feed) …</p> <pre> // Now see if we match any of these following tests to work out if we need to switch to osm or not. // The meta-test is if we are in MAP mode. var in_the_zone = false; if (map_type == 'YAHOO_MAP') { if (zl < 8 && lat_lon.Lat >= 39.8558502197 && lat_lon.Lat <= 40.0156097412 && lat_lon.Lon >= 116.2662734985 && lat_lon.Lon <= 116.4829177856) in_the_zone = true; // Beijing if (zl < 7 && lat_lon.Lat >= 40.735551 && lat_lon.Lat <= 40.807533 && lat_lon.Lon >= -119.272041 && lat_lon.Lon <= -119.163379) in_the_zone = true; // Black Rock City, 2008 if (zl < 9 && lat_lon.Lat >= 35.46290704974905 && lat_lon.Lat <= 36.02799998329552 && lat_lon.Lon >= 139.21875 && lat_lon.Lon <= 140.27069091796875) in_the_zone = true; // Tokyo if (zl < 8 && lat_lon.Lat >= -34.6944313049 && lat_lon.Lat <= -34.4146499634 && lat_lon.Lon >= -58.6389389038 && lat_lon.Lon <= -58.2992210388) in_the_zone = true; // Buenos Aires // Yahoo Better if (zl < 8 && lat_lon.Lat >= 18.9466495514 && lat_lon.Lat <= 19.6985702515 && lat_lon.Lon >= -99.5071487427 && lat_lon.Lon <= -98.7429122925) in_the_zone = true; // Mexico City // Yahoo Better if (zl < 8 && lat_lon.Lat >= -23.0837802887 && lat_lon.Lat <= -22.7662200928 && lat_lon.Lon >= -43.7946395874 && lat_lon.Lon <= -43.1328392029) in_the_zone = true; // Rio de Janeiro // Yahoo Better if (zl < 8 && lat_lon.Lat >= -24.0083808899 && lat_lon.Lat <= -23.3576107025 && lat_lon.Lon >= -46.8253898621 && lat_lon.Lon <= -46.3648300171) in_the_zone = true; // Sao Paulo if (zl < 8 && lat_lon.Lat >= -35.2210502625 && lat_lon.Lat <= -34.6507987976 && lat_lon.Lon >= 138.4653778076 && lat_lon.Lon <= 138.7634735107) in_the_zone = true; // Adelaide if (zl < 8 && lat_lon.Lat >= -34.1896095276 && lat_lon.Lat <= -33.5781402588 && lat_lon.Lon >= 150.5171661377 && lat_lon.Lon <= 151.3425750732) in_the_zone = true; // Sydney if (zl < 8 && lat_lon.Lat >= -27.8130893707 && lat_lon.Lat <= -27.0251598358 && lat_lon.Lon >= 152.6393127441 && lat_lon.Lon <= 153.3230438232) in_the_zone = true; // Brisbane if (zl < 8 && lat_lon.Lat >= -35.4803314209 && lat_lon.Lat <= -35.1245193481 && lat_lon.Lon >= 148.9959259033 && lat_lon.Lon <= 149.2332458496) in_the_zone = true; // Canberra if (zl < 8 && lat_lon.Lat >= -38.4112510681 && lat_lon.Lat <= -37.5401115417 && lat_lon.Lon >= 144.5532073975 && lat_lon.Lon <= 145.5077362061) in_the_zone = true; // Melbourne if (zl < 8 && lat_lon.Lat >= 33.2156982422 && lat_lon.Lat <= 33.4300994873 && lat_lon.Lon >= 44.2592010498 && lat_lon.Lon <= 44.5364112854) in_the_zone = true; // baghdad if (zl < 8 && lat_lon.Lat >= 34.4611015320 && lat_lon.Lat <= 34.5925598145 && lat_lon.Lon >= 69.0997009277 && lat_lon.Lon <= 69.2699813843) in_the_zone = true; // kabul if (zl < 10 && lat_lon.Lat >= -4.3634901047 && lat_lon.Lat <= -4.3009300232 && lat_lon.Lon >= 15.2374696732 && lat_lon.Lon <= 15.3460502625) in_the_zone = true; // kinshasa if (zl < 10 && lat_lon.Lat >= 2.0093801022 && lat_lon.Lat <= 2.0614199638 && lat_lon.Lon >= 45.3139114380 && lat_lon.Lon <= 45.3669013977) in_the_zone = true; // mogadishu if (zl < 10 && lat_lon.Lat >= -17.8511505127 && lat_lon.Lat <= -17.7955493927 && lat_lon.Lon >= 31.0210304260 && lat_lon.Lon <= 31.0794296265) in_the_zone = true; // harare if (zl < 10 && lat_lon.Lat >= -1.3165600300 && lat_lon.Lat <= -1.2379800081 && lat_lon.Lon >= 36.7483406067 && lat_lon.Lon <= 36.8735618591) in_the_zone = true; // nairobi if (zl < 10 && lat_lon.Lat >= 5.5237197876 && lat_lon.Lat <= 5.5998301506 && lat_lon.Lon >= -0.2535800040 && lat_lon.Lon <= -0.1586299986) in_the_zone = true; // accra if (zl < 10 && lat_lon.Lat >= 30.0068798065 && lat_lon.Lat <= 30.1119003296 && lat_lon.Lon >= 31.2149791718 && lat_lon.Lon <= 31.3111705780) in_the_zone = true; // cairo if (zl < 10 && lat_lon.Lat >= 36.6997604370 && lat_lon.Lat <= 36.8181610107 && lat_lon.Lon >= 2.9909501076 && lat_lon.Lon <= 3.1476099491) in_the_zone = true; // algiers } </pre> <p>If we found a match up there, then "in_the_zone" would have been set, in which case we'll check to see if were already showing osm tiles, if not we'll tell the YAHOO API to use our OSM tiles rather than the YAHOO ones ...</p> <pre> // ok, if we've match one of the above tests then we are in osm land ... if (in_the_zone) { // if we aren't already osming, then we need to switch the map tiles. if (!this.osming) { // Say that we are now osming this.osming = true; // Put the new tiles in YMapConfig.tileReg=['/our_openstreetmap_tile_broker.xxx?t=m&','/our_openstreetmap_tile_broker.xxx?t=m&']; // Tell the maps to clear out the tile cache and load in the new tiles. map_obj._cleanTileCache(); map_obj._callTiles(); } } else { </pre> <p>"YMapConfig.tileReg=" tells the map API to load tiles from us rather than the default ones, hint, you should set this to <i>your own</i> tile server ;)</p> <p>"_cleanTileCache()" and "_callTiles()" are two undocumented functions (and therefor may break at some point) that allows you to force the map to load in new tiles. Otherwise the current view of the map will still show the Yahoo tiles and not use the new ones until you next pan the map around. Again there's probably a better way of doing this, but there's still a lot to be said for it-just-works!</p> <p>The next bit runs if we're not "in the zone" to see if we need to turn the OSM tiles back off. </p> <pre> // otherwise we are not looking at an osm spot, in which case check to see if // we *were* looking at one, and if so, turn it all off again if (this.osming == true) { // say that we are no longer osming this.osming = false; // turn the tiles back YMapConfig.tileReg=this.oldTileReg; // Tell the maps to clear out the tile cache and load in the new tiles. map_obj._cleanTileCache(); map_obj._callTiles(); } } </pre> <p>Which is roughly the opposite of turning them on. The only thing to note is that is the line ...</p> <pre> YMapConfig.tileReg=this.oldTileReg </pre> <p>... when we created the map I used this ...</p> <pre> // record what the old tiles were this.oldTileReg=YMapConfig.tileReg; </pre> <p>... to record where YMapConfig thinks it aught to be loading tiles from when in map view (as opposed to hybrid or satellite view) so it can be reset when you need it.</p> <p>And that's pretty much it. I've chopped out some distracting bits here or there to make it clearer and no-one else is likely to do it like this, but I find sharing to be cathartic (adjective not noun) :)</p> <p>For a smidge of further reading this is a handy article from A List Apart: <a href="http://www.alistapart.com/articles/takecontrolofyourmaps">Take Control of Your Maps</a> by Paul Smith.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/change-log/" rel="category tag">changelog</a>, <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-557 --> <article id="post-509" class="post-509 post type-post status-publish format-standard hentry category-geo"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2009/02/04/100000000-geotagged-photos-plus/" rel="bookmark">100,000,000 geotagged photos (plus)</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2009/02/04/100000000-geotagged-photos-plus/" title="3:00 am" rel="bookmark"><time class="entry-date" datetime="2009-02-04T03:00:19-08:00">February 4, 2009</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <p>Over the weekend we broke the Hundred Million geotagged photos, actually 100,868,302 at last count, mark. If we remember that we passed the <a href="http://blog.flickr.net/en/2008/11/03/3-billion/">3 billion photos recently</a> and round the figure down a little that means (<i>does calculations on fingers</i>) that around 3.333% of photos have geo data, or one in every 30 photos that get uploaded.</p> <p>In the last two and a half years there have been roughly as many geotagged photos as the total photos upload to Flickr in <i>its</i> first two years of existence. </p> <p>Of those, around two thirds have public geotags and can be searched for on the map or via the API, and about 33 million have some level of private geotags.</p> <p><a href="http://www.flickr.com/map?&fLat=34.1618&fLon=24.2578&zl=16" title="View 'Flickr: Explore everyone's photos on a Map' on Flickr.com"></p> <div style="text-align:center;"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3338/3253534514_854826dd8c.jpg" alt="Flickr: Explore everyone's photos on a Map" border="0" width="500" height="342" /></div> <p></a></p> <p>I should probably mention at this point that if you go directly <a href="http://www.flickr.com/map">to the map</a> and click the dots icon in the top right that you’ll see a smaller number.</p> <p>This is because we added a rolling upload-date to the initial search to return the most interesting photos in the last month or so, rather than always have the same (all-time) photos show up forever, possibly reinforcing their interestingness.</p> <p>Anyway, not bad really.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-509 --> <article id="post-475" class="post-475 post type-post status-publish format-standard hentry category-geo tag-shapefiles-clustr-geo"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2009/01/12/living-in-the-donut-hole/" rel="bookmark">Living In the Donut Hole</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2009/01/12/living-in-the-donut-hole/" title="8:32 pm" rel="bookmark"><time class="entry-date" datetime="2009-01-12T20:32:40-08:00">January 12, 2009</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <div style="border:1px dotted #ccc;padding: 10px;margin-top:30px;margin-bottom:10px;width:500px;" > <object type="application/x-shockwave-flash" width="500" height="375" data="http://www.flickr.com/apps/video/stewart.swf?v=66164" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&photo_secret=09b47119dc&photo_id=2950860554"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=66164"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param></object></div> <p style="text-align:right;margin-bottom:30px;font-size:small;"><a href="http://www.flickr.com/photos/ahudson/2950860554/">video by origami madness</a></p> <p>A long long time ago (<a href="http://flickr.com/places/Canada/British+Columbia/Vancouver#2005">2005</a>) in a galaxy far far way (<a href="http://flickr.com/places/Canada/British+Columbia/Vancouver#flickr">Vancouver</a>) when we joined Yahoo! and moved <a href="http://flickr.com/groups/flickrheadquarters/pool/">FlickrHQ</a> to the Bay Area all but one or two members of the team lived within ten square blocks of each other in <a href="http://www.flickr.com/places/United+States/Califoria/San+Francisco/Mission">San Francisco’s Mission District</a>.</p> <p><a href="http://www.flickr.com/photos/allspaw">John Allspaw</a>, a long-time resident of <a href="http://flickr.com/places/United+States/California/San+Francisco/Mission#allspaw">the Mission</a> used to regale us with stories of one of the neighbourhood’s notable quirks commonly referred to as the “donut hole”: The rest of the city could be covered in fog, or raining, but the moment you crossed over in the Mission the sky would open up and the entire neighbourhood would be bathed in sunshine.</p> <p>When John and <a href="http://www.flickr.com/photos/george">George Oates</a> and I used to car pool between the city and the offices in <a href="http://flickr.com/places/United+States/California/Sunnyvale#flickrhq">Sunnyvale</a>, we would drive up and down <a href="http://www.flickr.com/search/?q=highway%20280&w=all">highway 280</a> and sure enough as you approached the city, at the end of the day, you would drive into an enormous blanket of fog the moment we passed <a href="http://www.flickr.com/places/SFO">the airport</a> in Millbrae. And as soon as we’d pulled off the San Jose exit there would be an open stretch of clear sky all the way to <a href="http://flickr.com/places/United+States/California/San+Francisco/Civic+Center#fog">Civic Center</a> where it would stop again just as suddenly.</p> <p>Some mornings, when I look out my kitchen window at the clouds hanging over <a href="http://www.flickr.com/places/United+States/Califoria/San+Francisco/Diamond+Heights">Diamond Heights</a> I like to pretend I can see the curvature of the inside of the donut hole itself. I was reminded of all this the other morning when I was generating some visualizations based on the <a href="http://code.flickr.com/blog/2008/10/30/the-shape-of-alpha/">shapefiles that are derived from the almost 100 million geotagged photos on Flickr</a>.</p> <p><a href="http://www.flickr.com/photos/straup/3180283176/" title="Paris (Ile-de-France) by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3524/3180283176_79532f3e00.jpg" width="500" height="500" alt="Paris (Ile-de-France)" style="border:1px dotted #ccc;padding: 10px;margin-top:30px;margin-bottom:30px;" /></a></p> <p>The larger, blue, contour is the “shape” of the city of <a href="http://www.flickr.com/places/France/ÃŽle-de-France/Paris">Paris</a> (or WOE ID <a href="http://www.flickr.com/places/615702">615702</a>) according to Flickr. The smaller white contours are the child neighbourhoods of that WOE ID with public, geotagged photos. So, what’s going on then?</p> <p>The first outline maps roughly to the extremities of the <a href="http://flickr.com/photos/tags/rer/clusters/paris-france-train/">RER</a>, the communter train that services Paris and the surrounding suburbs. This is a fairly accurate representation of the “greater metropolitain” area of Paris. Metropolitain areas, increasingly common in both popular folklore and government administrivia <a href="http://longnow.chubbo.net/salt-apr02005-brand/salt-apr02005-brand.mp3">as more and more people shift from rural to urban living </a>, are noticeably lacking from the Flickr hierarchy of place types and a subject probably best left for another blog post.</p> <div style="float:left;margin-right:20px; margin-bottom:15px;"> <a href="http://www.flickr.com/photos/straup/2242308421/" title="Untitled #1202166719 by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm3.static.flickr.com/2029/2242308421_d09567d46a_m.jpg" width="180" height="240" alt="Untitled #1202166719" style="border:1px dotted #ccc;padding: 10px;" /></a> </div> <p>The rest, taken as a whole, follow closer to the shape of the <a href="http://en.wikipedia.org/wiki/City_gates_of_Paris">old city gates</a> that most people think of when asked to imagine Paris. Which one is right? Well, both obviously!</p> <p>Cities long ago stopped being defined by the walls that surround(ed) them. There is probably no better place in the world to see this than <a href="http://www.flickr.com/map?&fLat=41.3959&fLon=2.1749&zl=6&map_type=sat">Barcelona</a> which first burst out of its <a href="http://www.flickr.com/places/Spain/Catalonia/Barcelona/Ciutat%20Vella/">Old City</a> with the construction of <a href="http://flickr.com/places/Spain/Catalunya/Barcelona/l%27Example#,recent">the Eixample</a> at the end of the 19th century and then again, after the wars, pushed further out towards the <a href="http://www.flickr.com/places/Spain/Catalonia/Barcelona/Gracia/">hills</a> and <a href="http://www.flickr.com/places/Espa%C3%B1a/Catalu%C3%B1a/Sant+Adri%C3%A0+de+Bes%C3%B2s">rivers</a> that surround it.</p> <p>There are lots of reasons to criticize urban sprawl as a phenomenon but sprawl, too, is still <a href="http://www.slideshare.net/george08/human-traffic-general-public-presentation">made of people</a> who over time inherit, share and shape the history and geography they live in. Whether it’s Paris, Los Angeles, William Gibson’s dystopic “<a href="http://en.wikipedia.org/wiki/The_Sprawl">Boston-Atlanta Metropolitain Axis</a>” (BAMA) or the San Francisco “Bay Area” they all encompass wildly different communities who, in spite of the grievances harboured towards one another, often feel as much of a connection to the larger whole as they do to whatever neighbourhood, suburb or village they spend their days and nights in.</p> <div style="float:right;margin-bottom:15px; margin-left:20px;"> <p><a href="http://www.flickr.com/photos/straup/3181918549/" title="ORY by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3346/3181918549_3bf9085c4d_m.jpg" width="240" height="240" alt="ORY" style="border:1px dotted #ccc;padding: 10px;" /></a> </div> <p>That’s one reason I think it’s so interesting to look at the shape of cities and see how they spill out beyond the boundaries of traditional maps and travel guides. In the example above the shape for Paris completely engulfs the <a href="http://www.flickr.com/map?&fLat=48.7403&fLon=2.4032&zl=5">commune of Orly</a>, 20 kilometers to the South of central Paris, which makes <a href="http://en.wikipedia.org/wiki/Orly">a certain amount of sense</a>.</p> <p>It also contains <a href="http://www.flickr.com/places/ORY">Orly airport</a> which isn’t that notable except that we treat airports as though they were cities in their own right because the realities of contemporary travel mean that <a href="http://www.flickr.com/photos/tags/airport/clusters">airports</a> have evolved from being simple gateways to <a href="http://www.flickr.com/places">captial-P places</a> with their own culture, norms and gravity. So, now you have cities contained within cities which most people would tell you are just neighbourhoods.</p> <p>We’re recently finished rendering the second batch of <a href="http://delicious.com/tag/flickr+shapefiles">shapefiles</a> and looking ahead I am wondering whether we should also be rendering shapes based on the <em>relationship</em> of one place to another. Rendering the shape of the child places for a city or a country (you can do this using the handy, if awkwardly named, <a href="http://www.flickr.com/services/api/flickr.places.getChildrenWithPhotosPublic.html">flickr.places.getChildrenWithPhotosPublic</a> API method) would allow you to see a city’s “center” but also provide a way to filter out parts of a shape with low Earthiness (aka water).</p> <p><a href="http://www.flickr.com/photos/straup/3187717383/" title="Americonia by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3358/3187717383_63a3e2ccd1.jpg" width="500" height="250" alt="Americonia" style="border:1px dotted #ccc;padding: 10px;margin-top:30px;margin-bottom:30px;" /></a></p> <p>The issue is not to prevent, or correct, shapes that provide a “false” view because I don’t think they do. As <a href="http://iconocla.st/">Schuyler</a> observed, while we were getting all this stuff to work in the first place, and testing the neighbourhoods that meet San Francisco Bay they are really the shapes of people <em>looking</em> at the city. They are each different, but the same.</p> <p>But maybe we should also map the neighbourhoods that <em>aren’t</em> considered the immediate children of a city but which overlap its boundaries. What if you could call an API method to return the list or the shape of a place’s “cousins”? What could that tell us about a place?</p> <p><a href="http://www.flickr.com/photos/straup/3182764164/" title="San Francisco by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3354/3182764164_f3698ff55c.jpg" width="500" height="500" alt="San Francisco" style="border:1px dotted #ccc;padding: 10px;margin-top:30px;margin-bottom:30px;" /></a></p> <p>What does all of this have to do with <a href="http://flickr.com/places/United+States/California/San+Francisco/Mission#donuts,recent">donuts</a>? Nothing really, but it’s a nice way to think about the problem and since we have a long and storied tradition of silly names for projects I imagine this one will stick too.</p> <p>There are no fixed dates yet for when, or whether, any of this will make its way in to the API but quite a lot of it could be done with API methods already available today. One change we have made is to add a new <a href="http://www.flickr.com/services/api/flickr.places.getShapeHistory.html">flickr.places.getShapeHistory API method</a> which include pointers to all the shapefiles that have been rendered for a place. I have dim and distant memories of possible reasons why not to do this, in the past, but the exercise in making donut shapes makes me think I was wrong. The more data and “nubby bits” that people have to work with the more interesting it will be for everyone.</p> <p>Enjoy!</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/shapefiles-clustr-geo/" rel="tag">shapefiles clustr geo</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-475 --> <article id="post-278" class="post-278 post type-post status-publish format-standard hentry category-geo tag-clustr tag-geo"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2008/10/30/the-shape-of-alpha/" rel="bookmark">The Shape of Alpha</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2008/10/30/the-shape-of-alpha/" title="9:21 pm" rel="bookmark"><time class="entry-date" datetime="2008-10-30T21:21:51-07:00">October 30, 2008</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <div style="margin-top:20px;margin-bottom:20px;"> <a href="http://www.flickr.com/photos/straup/2853741772/" title="Untitled #1221325485 by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3092/2853741772_928938d420.jpg" width="500" height="375" alt="Untitled #1221325485" style="border:1px dotted #ccc;padding:10px;" /></a> </div> <h2 style="margin-bottom:15px;">We have a lot of geotagged photos</h2> <p>Almost ninety million, as I write this, and the numbers keep growing especially as nearly every new <q>smart</q> phone released to market has not only a camera but also the ability to capture location information with it.</p> <p>For every geotagged photo we store up to six <a href="http://developer.yahoo.com/geo/">Where On Earth (WOE)</a> IDs. These are unique numeric identifiers that correspond to the hierarchy of places where a photo was taken: the neighbourhood, the town, the county, and so on up to the continent. This process is usually referred to as <a href="http://code.flickr.com/blog/2008/09/04/whos-on-first/">reverse-geocoding</a>.</p> <p>Over time this got us wondering: If we plotted all the geotagged photos associated with a particular WOE ID, would we have enough data to generate a mostly accurate contour of that place? Not a perfect representation, perhaps, but something more fine-grained than a bounding box. It turns out we can.</p> <p>So, starting today there are 150,000 (and counting) WOE IDs with proper (-ish) shape data, available via the <a href="http://www.flickr.com/services/api">Flickr API</a>. What kind of shapes, you ask?</p> <p>Continents:</p> <table> <tr> <td><a href="http://flickr.com/photos/straup/2986605405/"><img decoding="async" src="http://farm4.static.flickr.com/3161/2986605405_f50d14c3dc_m.jpg" style="border:none;" /></a></td> <td width="5%;"> </td> <td valign="top"><a href="http://flickr.com/photos/straup/2986605381/"><img decoding="async" src="http://farm4.static.flickr.com/3153/2986605381_11c2007119_m.jpg"style="border:none;" /></a></td> </tr> </table> <p>Countries:</p> <table> <tr> <td><a href="http://flickr.com/photos/straup/2972130238/"><img decoding="async" src="http://farm4.static.flickr.com/3004/2972130238_70c47e52b3_m.jpg" style="border:none;" /></a></td> <td width="5%;"> </td> <td><a href="http://flickr.com/photos/straup/2972130754/"><img decoding="async" src="http://farm4.static.flickr.com/3210/2972130754_71fe99ae37_m.jpg"style="border:none;" /></a></td> </tr> </table> <p>States and cities:</p> <table> <tr> <td><a href="http://flickr.com/photos/straup/2971287541/"><img decoding="async" src="http://farm4.static.flickr.com/3288/2971287541_27e6a06a21_m.jpg" style="border:none;" /></a></td> <td width="5%;"> </td> <td><a href="http://flickr.com/photos/straup/2972131146/"><img decoding="async" src="http://farm4.static.flickr.com/3067/2972131146_92c785b00c_m.jpg" style="border:none;" /></a></td> </tr> </table> <p>Even neighbourhoods:</p> <table> <tr> <td><a href="http://flickr.com/photos/straup/2972131416/"><img decoding="async" src="http://farm4.static.flickr.com/3254/2972131416_3d2256360e_m.jpg" style="border:none;" /></a></td> <td width="5%;"> </td> <td><a href="http://flickr.com/photos/straup/2986628225/"><img decoding="async" src="http://farm4.static.flickr.com/3166/2986628225_f1c3e1c39c_m.jpg" style="border:none;" /></a></td> </tr> </table> <p>Each one of those illustrations represents the boundaries of a particular place whose outline was generated using <strong>nothing but the latitudes and longitudes of the geotagged photos associated with that location’s WOE ID</strong>. No <a href="http://en.wikipedia.org/wiki/Geographic_information_system">GIS</a> information was harmed in the creation of these shapes.</p> <p><em>How cool is that?!</em></p> <h2 style="margin-bottom:15px;">How does it work?</h2> <p>The short version is: Scary and complicated maths. The longer version is: We are generating <a href="http://biogeometry.duke.edu/software/alphashapes/index.html">alpha shapes</a> using the set of unique latitudes and longitudes associated with a WOE ID. The long version, to quote <a href="http://www.cgal.org/Manual/3.2/doc_html/cgal_manual/Alpha_shapes_3/Chapter_main.html">Tran Kai Frank Da and Mariette Yvinec</a>, is:</p> <blockquote style="font-family:sans-serif; margin-left:10%;margin-right:10%;"> <p>“Imagine a huge mass of ice-cream making up the space … and containing the points as <q>hard</q> chocolate pieces. Using one of those sphere-formed ice-cream spoons we carve out all parts of the ice-cream block we can reach without bumping into chocolate pieces, thereby even carving out holes in the inside (eg. parts not reachable by simply moving the spoon from the outside). We will eventually end up with a (not necessarily convex) object bounded by caps, arcs and points. If we now straighten all <q>round</q> faces to triangles and line segments, we have an intuitive description of what is called the alpha shape…”</p> </blockquote> <p>(There are also some useful illustrations of what that all means on Francois Belair’s <a href="http://cgm.cs.mcgill.ca/~godfried/teaching/projects97/belair/alpha.html"> Everything You Always Wanted to Know About Alpha Shapes But Were Afraid to Ask</a> website.)</p> <h2 style="margin-bottom:15px;">The community of authority and the authority of community</h2> <p>This is the important part: Many, if not most, of these shapes will look a little weird. Possibly even “wrong”. This is both okay and to be expected for a few reasons, at least.</p> <ul> <li> <p>Sometimes we just don’t have enough geotagged photos in a spot to make it is possible to create a shapefile. Even if we do have enough points to create a shape there aren’t enough to create a shape that you’d recognize as the place where you live. We chose to publish those shapes anyway because it shows both what we know and don’t about a place and to encourage users to help us fix mistakes.</p> <p>If the shape of the neighbourhood is incomplete or looks weird why not consider organizing a <a href="http://www.flickr.com/photos/tags/photowalk/map">photowalk</a> around its edges and when you get home add them to the map. The next time we generate a new shapefile for that neighbourhood it should look more like the place you recognize!</p> </li> <li> <p>We did a bad job reverse geocoding photos for a particular spot and they’ve ended up associated with the wrong place. We’ve learned quite a lot about how to do a better job of it in the last two years but there is a limit to how much human awareness and subtlety we can codify. Sometimes, the data we have to try and work out what’s going on is just bad or out of date.</p> <p>Ultimately, that’s why we added <a href="http://code.flickr.com/blog/2008/08/08/location-keeping-it-real-on-the-streets-yo/">the tools to help users correct their geotagged photos</a> so that we can adjust things to their understanding of the world and begin to map facts on the ground rather than from on high.</p> </li> <li> <p>We are not very sophisticated yet in how we assign the size of the alpha variable when we generate shapes. As far as we can tell no one else has done this sort of thing so like reverse-geocoding we are learning as we go. For example, with the exception of continents and countries we boil all other places down to a single contiguous shape. We do this by slowly cranking up the size of the ice cream scoop which in turn can lead to a loss of fidelity.</p> <p>Does the <q>shape</q> of Florida, or of Italy, include the waters that lie between the mainland and the surrounding islands? It’s not usually the way we imagine the territory that a place occupies but I think it probably does. On the other hand, including the ocean between California and Hawaii as <q>part of</q> the United States would be kind of dumb.</p> </li> <p>Are any of these the correct decisions? We’re not sure yet.</p> </li> </ul> <p>A concrete example to illustrate the point. Here are two versions of the island of <a href="http://www.flickr.com/places/Canada/Quebec/Montreal">Montreal</a>, each generated from the same set of coordinates. The version on the left used an alpha number (an ice cream spoon) large enough to ensure that only a single shape was created compared with the version on the right that allowed for two shapes.</p> <table> <tr> <td><img decoding="async" src="http://farm4.static.flickr.com/3189/2972131778_d6d2b9a629_m.jpg" /></td> <td width="5%;"> </td> <td valign="top"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3031/2986660583_6f6bd6f113_m.jpg" width="240" height="181" alt="" /></td> </tr> </table> <p>What’s going on, then? All those photos taken in St. Jean-sur-Richelieu (20 minutes south of Montreal) were added to the map back when we first added geotagging to the site and the information about the province of Quebec was not as detailed as what we have now. Ultimately, we decided to include the version on the left because as <a href="http://magicalnihilism.wordpress.com/2008/10/11/bionic-noticing-on-irving-street/">Matt Jones recently said</a>:</p> <blockquote style="font-family:sans-serif; margin-left:10%;margin-right:10%;"> <p>“<em>The long here</em> that Flickr represents back to me is becoming only more fascinating and precious as geolocation starts to help me understand how I identify and relate to place. The fact that Flickr’s mapping is now starting to <a href="http://code.flickr.com/blog/2008/09/04/whos-on-first/">relate location to me the best it can in human place terms</a> is fascinating – they do a great job, but where it falls down it falls down gracefully, inviting corrections and perhaps <a href="http://www.flickr.com/photos/blackbeltjones/2920892513/#comment72157607816350512">starting conversation</a>.”</p> </blockquote> <p>As with any visualization of aggregate data there are likely to be areas of contention. One of the reasons we’re excited to make this stuff available is that much of it simply isn’t available anywhere else and the users and the developer community who make up Flickr have a gift for building magic on top of the API so we’re doubly-excited to see what people do with it.</p> <p>That said please remember that this it is an aggregate view of things and should be treated more like the <a href="http://www.flickr.com/places/US/CA/SF#zeitgeist">the zeitgeist of a place</a> and not as capital-C confirmed facts on the ground or our taking sides in any conflicts (real, imagined or otherwise) between friends and neighbours.</p> <p>These are not maps you should use to guide your spaceship back to Earth but they’re probably good enough to explore the possibilities.</p> <h2 style="margin-bottom:15px;">Clustr</h2> <div style="margin-top:20px;margin-bottom:20px;"> <a href="http://flickr.com/search/?w=all&q=schuyler+erle&m=text" title="UR DOTZ I HAS DEM"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3252/2985372999_dc8fca06e2.jpg" width="500" height="375" alt="UR DOTZ I HAS DEM" style="border:1px dotted #ccc;padding:10px;" /></a> </div> <p>Meanwhile, back in the nuts-and-bolts department: The actual alpha shapes are generated by a program called Clustr, written for us by <a href="http://iconocla.st/cv.html">the fantabulous Schuyler Erle</a>.</p> <p>Clustr is a command-line application written in C++ that takes as its arguments the path to a file containing a list of points (the hard chocolate pieces) and an alpha parameter (the ice cream spoon) and generates a <a href="http://en.wikipedia.org/wiki/Shapefile">shapefile</a> describing the contour (the alpha shape) of that list. Anecdotally, we’ve seen Clustr plow through a file with four million unique coordinates (representing the continental United States, Alaska and Hawaii) in under three minutes on some pretty modest hardware.</p> <p>The shapedata for a WOE ID is available via the Flickr API using the <a href="http://www.flickr.com/services/api/flickr.places.getInfo.html">flickr.places.getInfo</a> method.</p> <p>Not all places have shape data yet so the root <place> element contains a <code>has_shapedata</code> attribute for checking at a glance. Otherwise you can test for the presence of a <shapedata> element. It will look like this:</p> <pre> <place place_id="4hLQygSaBJ92" woeid="3534" latitude="45.512" longitude="-73.554" place_url="/Canada/Quebec/Montreal" place_type="locality" name="Montreal, Quebec, Canada" <strong>has_shapedata="1"</strong>> <!-- all the usual places hierarchy elements --> <strong><shapedata created="1223513357" alpha="0.012359619140625" count_points="34778" count_edges="52"> <polylines> <polyline> 45.427627563477,-73.589645385742 45.428966522217,-73.587898254395, etc... </polyline> </polylines> </shapedata></strong> </place> </pre> <p style="text-decoration:line-through;">Sometime next week, we will also include links to a real live <a href="http://en.wikipedia.org/wiki/Shapefile">ESRI shapefile</a>, the well-known and mostly-loved lingua franca of the GIS community, for each WOE ID. They were supposed to be included with this release but because of a last minute glitch they need to be prettied up a little first. We think that the inclusion of the polylines will be enough to keep people busy until then. Shapefiles will be included, in the API, as a link to a compressed file you can download separately. For example:</p> <p style="font-style:italic;">Update: The first round of (ESRI) <a href="http://en.wikipedia.org/wiki/Shapefile">shapefiles</a> have been reprocessed and are now available via the API. Shapefiles are included as a link to a compressed file you can download separately. For example:</p> <pre> <urls> <strong><shapefile> http://farm4.static.flickr.com/9999/shapefiles/3534_20081020_S33KR3TSHAPE.tar.gz </shapefile></strong> </urls> </pre> <p>Our plan is to generate new renderings on a relatively constant basis, something like every month or two, though we haven’t firmed up any of those details yet. We’ll post about them here or on the <a href="http://tech.groups.yahoo.com/group/yws-flickr/">API mailing list</a> as things are worked out.</p> <h2 style="margin-bottom:15px;">But wait, there’s more!</h2> <p>Along with the shape data the source code for Clustr is available in the Flickr Code <a href="http://code.flickr.com/svn/trunk/clustr/">repository</a> and through <a href="http://code.flickr.com/trac/browser/trunk/clustr">our trac install</a>, distributed under the <a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL (version 2)</a>.</p> <p>Clustr has two major dependencies not included with the source that you will need to install yourself in order to use. They are the <a href="http://www.cgal.org/">Computational Geometry Algorithms Library</a> (CGAL) and the <a href="http://www.gdal.org/">Geospatial Data Abstraction Library</a> (GDAL). Both are relatively straightforward to install on <a href="http://packages.ubuntu.com/">Linux</a> and <a href="http://www.freshports.org/">BSD</a> flavoured operating systems; Windows and OS X are still a bit of a chore.</p> <p>You probably won’t be able to download Clustr and simply plug it in to your awesome web-application today but I am hopeful that in time the community will develop higher level language (Perl, Python, Ruby, you name it…) bindings to make it easier and faster to write tools that build on the work we’ve done so far.</p> <div style="margin-top:20px;margin-bottom:20px;"> <a href="http://flickr.com/photos/julianbleecker/2787751572/"><img decoding="async" src="http://farm4.static.flickr.com/3215/2787751572_c4a74415d6.jpg" style="border:1px dotted #ccc;padding:10px;" /></a></p> <p style="font-size:small;">photo by <a href="http://flickr.com/photos/julianbleecker/">Julian Bleecker</a></p> </div> <p style="text-decoration:line-through;">By the way, there is a still a known-known bug in Clustr rendering <q>interior rings</q> (the donut holes where there are no geotagged photos) in shapefiles. Specifically, they holes are rendered as actual polyline records. You can see an example of the problem in the screenshot of the shapefile for North America, above. We hope to have a proper patch in place by the time we make the ESRI files available next week. As it is since the problem only manifests itself for countries and continents it seemed like a reasonable thing for a version 0.1 release.</p> <p style="font-style:italic;">Update: Clustr 0.2, with a fix for <a href="http://code.flickr.com/trac/changeset/461">errant interior rings</a>, has been checked in to the <a href="http://code.flickr.com/svn/trunk/clustr/">code.flickr.com SVN repository</a>.</p> <p>Finally, these are early days and this is very much a developer’s release so we look forward to your feedback and also hope you will be understanding as we learn our way around the gotchas and quirks that will no doubt pop up.</p> <h2 style="margin-bottom:15px;">In other geostuffs</h2> <p>In other geostuffs, we have enabled Open Street Maps tiles for two more cities: Baghdad and Kabul and George has written <a href="http://flickrtheblog.wordpress.com/2008/10/30/more-cities/">a fantastic post highlighting some of the photos we’ve found in both cities</a> so go and have a look.</p> <div style="margin-top:20px;margin-bottom:20px;"> <a href="http://www.flickr.com/photos/straup/2987745074/" title="Picture 16 by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3035/2987745074_9acfe83c68_o.png" width="488" height="486" alt="Picture 16" style="border:1px dotted #ccc;padding:10px;" /></a> </div> <p><small>Map data <a href="http://creativecommons.org/licenses/by-sa/3.0/">CCBYSA</a> 2008 <a href="http://OpenStreetMap.org">OpenStreetMap.org</a> contributors</small></p> <p>Enjoy!</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/clustr/" rel="tag">clustr</a>, <a href="https://code.flickr.net/tag/geo/" rel="tag">geo</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-278 --> <article id="post-140" class="post-140 post type-post status-publish format-standard hentry category-geo category-kittens tag-api"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2008/09/04/whos-on-first/" rel="bookmark">Who’s On First?</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2008/09/04/whos-on-first/" title="10:18 pm" rel="bookmark"><time class="entry-date" datetime="2008-09-04T22:18:17-07:00">September 4, 2008</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> </header><!-- .entry-header --> <div class="entry-content"> <style type="text/css"> .who pre { margin-top:20px; margin-bottom:20px; } .who pre strong { color:black; } .who .photo { margin-top:30px; margin-bottom: 30px; } .who .photo img { border: 1px dotted #ccc; padding:10px; } .who h2 { margin-bottom: 20px; } .who h3 { margin-left: 0px; } .who ol { margin-bottom: 20px; } .who ol li { margin-bottom: 10px; } </style> <div class="who"> <div class="photo"> <a href="http://www.flickr.com/photos/straup/2651514287/" title="Untitled World View#1215585993 by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3101/2651514287_f409fe6318.jpg" width="500" height="375" alt="Untitled World View #1215585993" /></a> </div> <p>Normally we don’t talk about upcoming features but in recent weeks we’ve been hard-pressed to keep a lid on <a href="http://code.flickr.com/blog/2008/08/19/kitten-tuesday/">our renewed excitement for kittens</a>. We’re betting 2009 will be a big year for kittens and it is why <a href="http://code.flickr.com/blog/2008/09/02/kitten-tuesday-3/">Dan</a> and <a href="http://blog.flickr.net/en/2008/08/26/o-hai-kitten-tuesday/">Heather</a> are taking so much time to hash out the details for the new <code>flickr.kittens</code> API framework which we’re confident will re-embiggen-ize the how, the what and the why of photo-sharing!</p> <p>To pass the time, until then, I’m going to talk about some of the geo-related API methods that have been released in the last few months, but perhaps not properly explained in detail and introduce a new minty-fresh method which hasn’t been discussed at all!</p> <h2>Cake for breakfast</h2> <p>First, the new stuff.</p> <h3>Places for a user</h3> <p>We’ve added a new authenticated method to the <code>flickr.places</code> namespace called <a href="http://www.flickr.com/services/api/flickr.places.placesForUser.htm">flickr.places.placesForUser</a> which returns the top 100 unique places, scoped by place <q>type</q>, where a user has geotagged photos. For example, I’ve geotagged photos in the following countries:</p> <pre> # ?method=flickr.places.placesForUser&<strong>place_type=country</strong> <places total="7"> <place place_id="4KO02SibApitvSBieQ" woeid="23424977" latitude="48.890" longitude="-116.982" place_url="/United+States" place_type="country" photo_count="1264"><strong>United States</strong></place> <place place_id="EESRy8qbApgaeIkbsA" woeid="23424775" latitude="62.358" longitude="-96.582" place_url="/Canada" place_type="country" photo_count="307"><strong>Canada</strong></place> <place place_id="3s63vaibApjQipWazQ" woeid="23424950" latitude="39.895" longitude="-2.988" place_url="/Spain" place_type="country" photo_count="67"><strong>Spain</strong></place> <place place_id="6immEPubAphfvM5R0g" woeid="23424819" latitude="46.712" longitude="1.718" place_url="/France" place_type="country" photo_count="60"><strong>France</strong></place> <place place_id="DevLebebApj4RVbtaQ" woeid="23424975" latitude="54.313" longitude="-2.232" place_url="/United+Kingdom" place_type="country" photo_count="34"><strong>United Kingdom</strong></place> <place place_id="mSCQNWWbAphdLH6WDQ" woeid="23424812" latitude="64.950" longitude="26.064" place_url="/Finland" place_type="country" photo_count="24"><strong>Finland</strong></place> <place place_id="mpa01jWbAphICsyCsA" woeid="23424853" latitude="42.502" longitude="12.573" place_url="/Italy" place_type="country" photo_count="8"><strong>Italy</strong></place> </places> </pre> <p>The response format is (almost) like all the other places methods, which I guess makes it a <q>standard places response</q> though we haven’t gotten around to standardizing it <a href="http://code.flickr.com/blog/2008/08/19/standard-photos-response-apis-for-civilized-age/">like we have with photos</a>. Places responses will always contain a “place ID” and a “WOE ID”, a “latitude” and a “longitude”, a “place type” and a “place URL” attribute. They usually contain an “accuracy” attribute but it doesn’t make any sense in the a list of places for a user since the photos, clustered by place type, may have been geotagged at multiple zoom levels. In this example, we’ve also added a “photo count” attribute since that’s an interesting bit of information.</p> <p>The list of place types with which to scope a query by is limited to a subset of the place types in the Flickr location hierarchy, specifically: neighbourhoods, localities (cities or towns), regions (states) and countries. While <code>place_type</code> is a required argument for the method, there are two other optional parameters you can use to filter your results.</p> <h3>Places for a user (and a place)</h3> <p>The first is <code>woe_id</code> and ensures that places of a given type also have a relationship with that WOE ID. For example, these are all the localities for my geotagged photos taken in Canada (WOE ID 23424775):</p> <pre> # ?method=flickr.places.placesForUser&place_type=locality&<strong>woe_id=23424775</strong> <places total="5"> <place place_id="4hLQygSaBJ92" woeid="3534" latitude="45.512" longitude="-73.554" place_url="/Canada/Quebec/Montreal" place_type="locality" photo_count="221"><strong>Montreal, Quebec</strong></place> <place place_id="63v7zaqQCZxX" woeid="9807" latitude="49.260" longitude="-123.113" place_url="/Canada/British+Columbia/Vancouver" place_type="locality" photo_count="59"><strong>Vancouver, British Columbia</strong></place> <place place_id="zrCws.mQCZj_" woeid="9848" latitude="48.428" longitude="-123.364" place_url="/Canada/British+Columbia/Victoria" place_type="locality" photo_count="9"><strong>Victoria, British Columbia</strong></place> <place place_id="WzwcDQCdAJsL" woeid="4177" latitude="44.646" longitude="-63.573" place_url="/Canada/Nova+Scotia/Halifax" place_type="locality" photo_count="3"><strong>Halifax, Nova Scotia</strong></place> <place place_id="XlQb2xedAJvr" woeid="4176" latitude="44.673" longitude="-63.575" place_url="/Canada/Nova+Scotia/Dartmouth" place_type="locality" photo_count="1"><strong>Dartmouth, Nova Scotia</strong></place> </places> </pre> <h3>(Most) places for a user (and a place)</h3> <p>The second optional parameter is <code>threshold</code> which requires a place have a minimum number of photos associated with it in order to be included in the result set. Any place that falls below the threshold will be rolled-up in to its parent location. For example, if we search for localities in Canada but also a minimum threshold of 5 photos per location the towns of Halifax and Dartmouth are rolled up in to the province of Nova Scotia:</p> <pre> # ?method=flickr.places.placesForUser&place_type=locality&woe_id=23424775&<strong>threshold=5</strong> <places total="4"> <place place_id="4hLQygSaBJ92" woeid="3534" latitude="45.512" longitude="-73.554" place_url="/Canada/Quebec/Montreal" place_type="locality" photo_count="221"><strong>Montreal, Quebec</strong></place> <place place_id="63v7zaqQCZxX" woeid="9807" latitude="49.260" longitude="-123.113" place_url="/Canada/British+Columbia/Vancouver" place_type="locality" photo_count="59"><strong>Vancouver, British Columbia</strong></place> <place place_id="zrCws.mQCZj_" woeid="9848" latitude="48.428" longitude="-123.364" place_url="/Canada/British+Columbia/Victoria" place_type="locality" photo_count="9"><strong>Victoria, British Columbia</strong></place> <place place_id="QpsBIhybAphCEFAm" woeid="2344921" latitude="44.727" longitude="-63.587" place_url="/Canada/Nova+Scotia" place_type="region" photo_count="4"><strong>Nova Scotia, CA</strong></place> </places> </pre> <p>Note that we only roll up a single level so if, like the Halifax and Dartmouth, a locality gets rolled up in to its parent region it may still have fewer photos associated with it than the threshold you passed with the method call. If you think this is crazy talk and/or have some other use case we haven’t considered with this model <a href="http://tech.groups.yahoo.com/group/yws-flickr/">tell us why</a> and we can revisit the decision.</p> <div class="photo"> <a href="http://www.flickr.com/photos/straup/2804243817/" title="Untitled Relationship #1219894402 by straup, on Flickr"><img loading="lazy" decoding="async" src="http://farm3.static.flickr.com/2351/2804243817_fcd26ef5ae.jpg" width="500" height="375" alt="Untitled Relationship #1219894402" /></a> </div> <p>Finally, as mentioned above the <a href="http://www.flickr.com/services/api/flickr.places.placesForUser.htm">flickr.places.placesForUser</a> method requires that you include an <a href="http://www.flickr.com/services/api/misc.userauth.html">auth token</a> with minimum <code>read</code> permissions. As always, please take extra care to respect people’s senstitivies when it comes to location data and, above all, <a href="http://flickr.com/guidelines.gne">don’t be creepy</a>.</p> <h2>Meanwhile, back at the Ranch</h2> <p>About a week ago, I was asked whether it was possible to use the Flickr API to <q>get a feed of geotagged photos (for a particular place/radius) sorted by interestingness, filtered by CC license</q> to which I quickly replied: <q>WOE IDs, the <code>flickr.places</code> APIs and the “radius” parameter in the <a href="http://www.flickr.com/services/api/flickr.photos.search.htm">flickr.photos.search</a> method should get you what you need!</q> (Also the <a href="http://code.flickr.com/blog/2008/08/25/api-responses-as-feeds/">API responses as syndication feeds</a> support, if you’re being finnicky about the question.)</p> <p>Which got me thinking that while we’ve told people about <a href="http://geobloggers.com/2008/05/12/yahoo-woe-where-on-earth-that-is-ids/">WOE IDs and the Places API</a> we haven’t really made a lot of noise about the addition of radial queries and the <code>has_geo</code> flag to the <a href="http://www.flickr.com/services/api/flickr.photos.search.htm">flickr.photos.search</a> method. We’ve mentioned it in passing, here and there, but never really tied it all together. So, let’s start with WOE IDs:</p> <p>WOE (short for <q>Where On Earth</q>) IDs are the unique identifiers in the giant database of places that we (and <a href="http://www.fireeagle.net/">FireEagle</a> and the rest of Yahoo!) use to keep track of where stuff is. They are also available to you and the rest of the Internets via the public <a href="http://developer.yahoo.com/geo/">GeoPlanet API</a>. In Flickr, every geotagged photo has up to (6) associated WOE IDs representing a neighbourhood, locality, county (if present), region, country and continent.</p> <h3>Geocoding</h3> <p>Using the example above, you could start with an API call to the <a href="http://www.flickr.com/services/api/flickr.places.find.html">flickr.places.find</a> method which is like an extra-magic geocoder: It not only resolves places names to latitude and longitude coordinates but also returns the WOE ID for the place that contains it. Searching for “San Francisco CA” returns WOE ID 2487956 which you can use to call the <a href="http://www.flickr.com/services/api/flickr.photos.search.html">flickr.photos.search</a> method asking for all the photos geotagged in the city of San Francisco sorted by interestingness with <a href="http://www.flickr.com/services/api/flickr.photos.licenses.getInfo.html">a Creative Commons Attribution license</a>. Something like this:</p> <pre> # ?method=flickr.places.find&<strong>query=San+Francisco+CA</strong> <places <strong>query="San Francisco CA"</strong> total="1"> <place place_id="kH8dLOubBZRvX_YZ" woeid="<strong>2487956</strong>" latitude="37.779" longitude="-122.420" place_url="/United+States/California/San+Francisco" place_type="locality">San Francisco, California, United States</place> </places> # ?method=flickr.photos.search&<strong>license=4</strong>&<strong>sort=interestingness-desc</strong> # &<strong>woe_id=2487956</strong>&extras=tags,geo,license <photos page="1" pages="289" perpage="100" total="28809"> <photo id="145874931" owner="37996593020@N01" secret="b695138626" server="52" farm="1" title="bridge" ispublic="1" isfriend="0" isfamily="0" tags="<strong>sanfrancisco</strong> bridge water night reflections geotagged lights baybridge geolat3779274 geolon12239096 sfchronicle96hours sanfranciscochronicle96hours" latitude="37.79274" longitude="-122.39096" accuracy="16" license="<strong>4</strong>" place_id="kH8dLOubBZRvX_YZ" woeid="<strong>2487956</strong>"/> <!-- and so on --> </photos> </pre> <h3>Reverse geocoding</h3> <p>You can also lookup the WOE ID for any set of latitude and longitude coordinates. Imagine that you are standing in front the infamous <q><a href="http://flickr.com/photos/straup/sets/72157600018101230/">Wall of Rant</a></q> in San Francisco’s Mission district and you’d like to see photos for the rest of the neighbourhood.</p> <div class="photo"> <img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3109/2826019605_553ed2ea4e_o.png" width="464" height="346" alt="Picture 1" /> </div> <p>If you know your geo coordinates you can call the <a href="http://www.flickr.com/services/api/flickr.places.findByLatLon.htm">flickr.places.findByLatLon</a> method to <em>reverse</em> geocode a point to its nearest WOE ID which can then be used to call the trusty <a href="http://www.flickr.com/services/api/flickr.photos.search.html">flickr.photos.search</a> method. Like this (without the photos.search part since it’s basically the same as above):</p> <pre> # ?method=flickr.places.findByLatLon&<strong>lat=37.752969</strong>&<strong>lon=-122.420844</strong> <places latitude="<strong>37.752969</strong>" longitude="<strong>-122.420844</strong>" accuracy="16" total="1"> <place place_id="C.JdRBObBZkMAKSJ" woeid="<strong>2452334</strong>" latitude="37.759" longitude="-122.418" place_url="/United+States/California/San+Francisco/<strong>Mission</strong>" place_type="neighbourhood"/> </places> </pre> <h3>Nearby</h3> <p>But what if you just want to see photos <em>nearby</em> a point? Radial queries, <a href="http://tech.groups.yahoo.com/group/yws-flickr/message/4146">recently added to the photos.search</a> method, allow you to pass <code>lat</code> and <code>lon</code> parameters and ask Flickr to “show me all the photos within an (n) km radius of a point”. You have always been able to do something like this using the <code>bbox</code> parameter but radial queries differ in two ways:</p> <ol> <li>They also save you from having to calculate a bounding box which is, you know, boring.</li> <li>Results are sorted by distance from the center point (you can override this by setting the <code>sort</code> parameter). Trying to do the same with a bounding box query would mean fetching all the results first and <em>then</em> sorting them which both expensive <em>and</em> boring and breaks the pagination model.</li> </ol> <p>Radial queries are not meant for pulling all the photos at the country or even state level and as such the maximum allowable radius is 32 kilometers (or 20 miles). The default value is 5 and you can toggle between metric and imperial by assigning the <code>radius_units</code> parameter a value of “km” or “mi” (the default is “km”).</p> <pre> # ?method=flickr.photos.search&<strong>lat=37.752969</strong>&<strong>lon=-122.420844</strong> # &<strong>radius=1</strong>&extras=geo,tags&min_taken_date=2008-09-01+00%3A00%3A00 <photos page="1" pages="1" perpage="100" total="9"> <photo id="2820548158" owner="29072902@N00" secret="b2fc694880" server="3288" farm="4" title="20080901130811" ispublic="1" isfriend="0" isfamily="0" latitude="<strong>37.751166</strong>" longitude="<strong>-122.418833</strong>" accuracy="16" place_id="C.JdRBObBZkMAKSJ" woeid="<strong>2452334</strong>" tags="moblog shinobu"/> <!-- and so on --> </photos> </pre> <p>See that <code>min_taken_date</code> parameter? Like all geo-related query hooks in the <a href="http://www.flickr.com/services/api/flickr.photos.search.htm">flickr.photos.search</a> method you need to pass some sort of limiting agent: a tag, a user ID, a date range, etc. If you insist on passing a <q>pure</q> geo query we will automagically assign a limiting agent of <q>photos taken within the last 12 hours</q>.</p> <h3>(I can) has geo</h3> <p>Finally (no, really) if you just want to keep things simple and use a tag search you can also call the <a href="http://www.flickr.com/services/api/flickr.photos.search.htm">flickr.photos.search</a> method with the <code>has_geo</code> argument which will scope your query to only those photos which have been geotagged. For example, searching for all geotagged photos of kittens taken in tokyo:</p> <pre> # ?method=flickr.photos.search&<strong>tags=tokyo,kitten</strong>&tag_mode=all # &<strong>has_geo=1</strong>&extras=tags,geo <photos page="1" pages="1" perpage="100" total="60"> <photo id="2619847035" owner="27921677@N00" secret="0979aed596" server="3011" farm="4" title="Kittens in Akiba" ispublic="1" isfriend="0" isfamily="0" tags="japan cat <strong>tokyo kitten</strong> crowd akihabara unexpected" latitude="<strong>35.698263</strong>" longitude="<strong>139.771977</strong>" accuracy="16" place_id="aod14iaYAJ1rDE.R" woeid="<strong>1118370</strong>"/> <!-- and so on --> </photos> </pre> <h2>Maps are purrrr-ty</h2> <p>Which is a nice segueway in to telling you that on Tuesday we turned on the map-love for<br /> the <a href="http://www.flickr.com/map?&fLat=35.6704&fLon=139.7409&zl=8&order_by=recent">city of Tokyo</a>, in addition to <a href="http://blog.flickr.net/en/2008/08/12/around-the-world-and-back-again/">Beijing</a> and <a href="http://code.flickr.com/blog/2008/08/25/flickr-heart-burning-man-heart-openstreetmap/">Black Rock City (aka Burning Man)</a>, using the <a href="http://www.creativecommons.org/">Creative Commons</a> licensed tiles produced by the good people at <a href="http://www.openstreetmap.org/">Open Street Maps</a>. We’re pretty excited about this but rather than just showing another before and after screenshot we decided that the best way to showcase the new tiles was with… well, kittens of course!</p> <div class="photo"> <a href="http://www.flickr.com/photos/tags/kitten/map?&fLat=35.607&fLon=139.6183&zl=8"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3014/2824623964_63c8e6ec09.jpg" width="500" height="440" alt="Picture 1" /></a></p> <p style="font-size:small;"><q>Sophie’s Choice</q> by <a href="http://www.flickr.com/photos/26981415@N00/2794815619">tenaciousme</a></p> </div> <h2>Enjoy!</h2> <p>That’s a lot to digest in one go but we promise there won’t be a pop quiz on Monday. Hopefully there’s something useful for you in the twisty maze of possibilities, now or in an <q>oh yeah, what about…</q> moment in the future, and maybe even the seed for a brand new API application. Kittens!</p> </div> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a>, <a href="https://code.flickr.net/category/kittens/" rel="category tag">kittens</a> </span> <span class="sep"> | </span> <span class="tag-links"> <span class="entry-utility-prep entry-utility-prep-tag-links">Tagged</span> <a href="https://code.flickr.net/tag/api/" rel="tag">api</a> </span> </footer><!-- .entry-meta --> </article><!-- #post-140 --> <article id="post-109" class="post-109 post type-post status-publish format-standard hentry category-geo"> <header class="entry-header"> <h1 class="entry-title"><a href="https://code.flickr.net/2008/08/25/flickr-heart-burning-man-heart-openstreetmap/" rel="bookmark">Flickr [heart] Burning Man [heart] OpenStreetMap</a></h1> <div class="entry-meta"> <span class="sep">Posted on </span><a href="https://code.flickr.net/2008/08/25/flickr-heart-burning-man-heart-openstreetmap/" title="8:29 pm" rel="bookmark"><time class="entry-date" datetime="2008-08-25T20:29:50-07:00">August 25, 2008</time></a><span class="by-author"> <span class="sep"> by </span> <span class="author vcard"><a class="url fn n" href="https://code.flickr.net/author/flickrphotography/" title="View all posts by Kay Kremerskothen" rel="author">Kay Kremerskothen</a></span></span> </div><!-- .entry-meta --> <div class="comments-link"> <a href="https://code.flickr.net/2008/08/25/flickr-heart-burning-man-heart-openstreetmap/#respond"><span class="leave-reply">Reply</span></a> </div> </header><!-- .entry-header --> <div class="entry-content"> <p>[<a href="http://www.flickr.com/map?&fLat=40.7795&fLon=-119.2136&zl=2&order_by=recent">new map tiles</a>]</p> <p> Everybody loves Burning Man! </p> <p>Well I don’t, but then I’m grumpy like that. Anyway, imagine my excitement waking up this morning knowing that <a href="http://www.burningman.com/whatisburningman/">Burning Man 2008</a> had just started. Here’s where the photos will start appearing as people get re-hydrated and find an internet connection …</p> <p><a href="http://www.flickr.com/photos/revdancatt/2796715871/" title="Your maps not on OSM by Rev Dan Catt, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3262/2796715871_debbf28ff2.jpg" width="500" height="387" alt="Your maps not on OSM" /></a></p> <p>Imagine my excitement <em>even more</em> when I saw on <a href="http://brainoff.com/weblog/">Mikel’s blog</a> that <a href="http://www.openstreetmap.com/">OpenStreetMap</a> (OSM) had pushed new map data (and tiles) out the door for this years burning man, see <a href="http://brainoff.com/weblog/2008/08/25/1351">Burning Man Earth Information Release</a> for no more information what-so-ever ;) Hopefully Mikel will update soon with all the work that went into it.</p> <p>A quick tile shuffle later, like what we did for <a href="http://blog.flickr.net/en/2008/08/12/around-the-world-and-back-again/">Beijing</a>, and we once more have OSM live in Flickr …</p> <p><a href="http://www.flickr.com/photos/revdancatt/2797561480/" title="Your maps on OSM by Rev Dan Catt, on Flickr"><img loading="lazy" decoding="async" src="http://farm4.static.flickr.com/3267/2797561480_3ffa6b9e51.jpg" width="500" height="387" alt="Your maps on OSM" /></a></p> <p>So when all those burners come back, it should be easily for them (you know, relatively) to drop those photos onto the map. Why not <a href="http://www.flickr.com/map?&fLat=40.7795&fLon=-119.2136&zl=2&order_by=recent">go see the new map</a> for yourself, it’s rather pretty.</p> <p><a href="http://www.flickr.com/photos/george">George</a> summed it up well when <a href="http://blog.flickr.net/en/2008/08/12/around-the-world-and-back-again/">she said</a> …</p> <blockquote><p>“That’s part of what appealed to us so much about a fantastic project called <strong><a href="http://www.openstreetmap.org/" title="Visit OpenStreetMap">OpenStreetMap</a></strong> – a free, editable map of the world, made by the people in it. What an exciting prospect to be able to see maps that are alive and have been <a href="http://wiki.openstreetmap.org/index.php/Mapping_projects">lovingly created by citizen cartographers</a> all over the world.”</p></blockquote> <p>It’s the power of The <a href="http://creativecommons.org/">Creative Commons</a> (and even more importantly, people) that make stuff like this work, and obviously we’re hoping to continue to do more. The glib answer I give for why this this sort of thing is important is so I can say “If you’re upset that we don’t have map coverage for where you are, you can grab some friends, go out, and make some”.</p> <p>As sort-of true as that is, probably a better answer is to read Mikel’s posts on <a href="http://brainoff.com/weblog/2008/08/14/1345">Mapping the West Bank</a> and <a href="http://brainoff.com/weblog/2008/08/17/1349">Ups and Downs Mapping the West Bank</a> (once his server recovers from whatever is hitting it, not us!). Which will hopefully illustrate far better than Burning Man why user created mapping data that can be used by anyone willing to use the CC <a href="http://creativecommons.org/licenses/by-sa/2.0/">Attribution-Share Alike</a> license, is important.</p> </div><!-- .entry-content --> <footer class="entry-meta"> <span class="cat-links"> <span class="entry-utility-prep entry-utility-prep-cat-links">Posted in</span> <a href="https://code.flickr.net/category/geo/" rel="category tag">geo</a> </span> <span class="sep"> | </span> <span class="comments-link"><a href="https://code.flickr.net/2008/08/25/flickr-heart-burning-man-heart-openstreetmap/#respond"><span class="leave-reply">Leave a reply</span></a></span> </footer><!-- .entry-meta --> </article><!-- #post-109 --> <nav id="nav-below"> <h3 class="assistive-text">Post navigation</h3> <div class="nav-previous"><a href="https://code.flickr.net/category/geo/page/2/" ><span class="meta-nav">←</span> Older posts</a></div> <div class="nav-next"></div> </nav><!-- #nav-above --> </div><!-- #content --> </section><!-- #primary --> <div id="secondary" class="widget-area" role="complementary"> <aside id="jetpack-search-filters-3" class="widget jetpack-filters widget_search"> <div id="jetpack-search-filters-3-wrapper" class="jetpack-instant-search-wrapper"> <div class="jetpack-search-form"> <form method="get" id="searchform" action="https://code.flickr.net/"> <label for="s" class="assistive-text">Search</label> <input type="text" class="field" name="s" id="s" placeholder="Search" /> <input type="submit" class="submit" name="submit" id="searchsubmit" value="Search" /> <input type="hidden" name="orderby" value="" /><input type="hidden" name="order" value="" /></form> </div> <h4 class="jetpack-search-filters-widget__sub-heading"> Categories </h4> <ul class="jetpack-search-filters-widget__filter-list"> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="category" data-val="geo+uncategorized"> Uncategorized (136) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="category" data-val="geo+geo"> geo (12) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="category" data-val="geo+kittens"> kittens (10) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="category" data-val="geo+change-log"> changelog (7) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="category" data-val="geo+uploadr"> uploadr (6) </a> </li> </ul> <h4 class="jetpack-search-filters-widget__sub-heading"> Tags </h4> <ul class="jetpack-search-filters-widget__filter-list"> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="post_tag" data-val="api"> api (24) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="post_tag" data-val="geo"> geo (13) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="post_tag" data-val="machine-tags"> machine tags (10) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="post_tag" data-val="javascript"> javascript (9) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="taxonomy" data-taxonomy="post_tag" data-val="kittentuesday"> kittentuesday (8) </a> </li> </ul> <h4 class="jetpack-search-filters-widget__sub-heading"> Year </h4> <ul class="jetpack-search-filters-widget__filter-list"> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="year_post_date" data-val="2022-01-01 00:00:00" > 2022 (2) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="year_post_date" data-val="2021-01-01 00:00:00" > 2021 (1) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="year_post_date" data-val="2018-01-01 00:00:00" > 2018 (1) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="year_post_date" data-val="2017-01-01 00:00:00" > 2017 (2) </a> </li> <li> <a href="#" class="jetpack-search-filter__link" data-filter-type="year_post_date" data-val="2016-01-01 00:00:00" > 2016 (5) </a> </li> </ul> </div></aside> <aside id="recent-posts-2" class="widget widget_recent_entries"> <h3 class="widget-title">Recent Posts</h3> <ul> <li> <a href="https://code.flickr.net/2022/02/14/safer-internet-day-and-open-source-codes-of-conduct/">Safer Internet Day and Open Source Codes of Conduct</a> </li> <li> <a href="https://code.flickr.net/2022/01/04/a-pluggable-solution-for-api-observability-on-our-php-system/">A Pluggable Solution for API Observability on our PHP System</a> </li> <li> <a href="https://code.flickr.net/2021/11/22/flickr-engineering-team-vision-guiding-principles/">Flickr Engineering Team Vision & Guiding Principles</a> </li> <li> <a href="https://code.flickr.net/2018/04/20/together/">Together</a> </li> <li> <a href="https://code.flickr.net/2017/03/07/introducing-similarity-search-at-flickr/">Introducing Similarity Search at Flickr</a> </li> </ul> </aside><aside id="archives-2" class="widget widget_archive"><h3 class="widget-title">Archives</h3> <ul> <li><a href='https://code.flickr.net/2022/02/'>February 2022</a></li> <li><a href='https://code.flickr.net/2022/01/'>January 2022</a></li> <li><a href='https://code.flickr.net/2021/11/'>November 2021</a></li> <li><a href='https://code.flickr.net/2018/04/'>April 2018</a></li> <li><a href='https://code.flickr.net/2017/03/'>March 2017</a></li> <li><a href='https://code.flickr.net/2017/01/'>January 2017</a></li> <li><a href='https://code.flickr.net/2016/09/'>September 2016</a></li> <li><a href='https://code.flickr.net/2016/05/'>May 2016</a></li> <li><a href='https://code.flickr.net/2016/04/'>April 2016</a></li> <li><a href='https://code.flickr.net/2016/03/'>March 2016</a></li> <li><a href='https://code.flickr.net/2015/12/'>December 2015</a></li> <li><a href='https://code.flickr.net/2015/11/'>November 2015</a></li> <li><a href='https://code.flickr.net/2015/09/'>September 2015</a></li> <li><a href='https://code.flickr.net/2015/07/'>July 2015</a></li> <li><a href='https://code.flickr.net/2015/06/'>June 2015</a></li> <li><a href='https://code.flickr.net/2015/03/'>March 2015</a></li> <li><a href='https://code.flickr.net/2014/10/'>October 2014</a></li> <li><a href='https://code.flickr.net/2014/08/'>August 2014</a></li> <li><a href='https://code.flickr.net/2014/07/'>July 2014</a></li> <li><a href='https://code.flickr.net/2014/05/'>May 2014</a></li> <li><a href='https://code.flickr.net/2014/04/'>April 2014</a></li> <li><a href='https://code.flickr.net/2014/02/'>February 2014</a></li> <li><a href='https://code.flickr.net/2013/09/'>September 2013</a></li> <li><a href='https://code.flickr.net/2013/06/'>June 2013</a></li> <li><a href='https://code.flickr.net/2013/03/'>March 2013</a></li> <li><a href='https://code.flickr.net/2012/12/'>December 2012</a></li> <li><a href='https://code.flickr.net/2012/10/'>October 2012</a></li> <li><a href='https://code.flickr.net/2012/07/'>July 2012</a></li> <li><a href='https://code.flickr.net/2012/06/'>June 2012</a></li> <li><a href='https://code.flickr.net/2012/05/'>May 2012</a></li> <li><a href='https://code.flickr.net/2012/04/'>April 2012</a></li> <li><a href='https://code.flickr.net/2012/02/'>February 2012</a></li> <li><a href='https://code.flickr.net/2012/01/'>January 2012</a></li> <li><a href='https://code.flickr.net/2011/12/'>December 2011</a></li> <li><a href='https://code.flickr.net/2011/10/'>October 2011</a></li> <li><a href='https://code.flickr.net/2011/09/'>September 2011</a></li> <li><a href='https://code.flickr.net/2011/08/'>August 2011</a></li> <li><a href='https://code.flickr.net/2011/07/'>July 2011</a></li> <li><a href='https://code.flickr.net/2011/06/'>June 2011</a></li> <li><a href='https://code.flickr.net/2011/03/'>March 2011</a></li> <li><a href='https://code.flickr.net/2011/02/'>February 2011</a></li> <li><a href='https://code.flickr.net/2011/01/'>January 2011</a></li> <li><a href='https://code.flickr.net/2010/11/'>November 2010</a></li> <li><a href='https://code.flickr.net/2010/10/'>October 2010</a></li> <li><a href='https://code.flickr.net/2010/09/'>September 2010</a></li> <li><a href='https://code.flickr.net/2010/08/'>August 2010</a></li> <li><a href='https://code.flickr.net/2010/07/'>July 2010</a></li> <li><a href='https://code.flickr.net/2010/05/'>May 2010</a></li> <li><a href='https://code.flickr.net/2010/04/'>April 2010</a></li> <li><a href='https://code.flickr.net/2010/03/'>March 2010</a></li> <li><a href='https://code.flickr.net/2010/02/'>February 2010</a></li> <li><a href='https://code.flickr.net/2010/01/'>January 2010</a></li> <li><a href='https://code.flickr.net/2009/12/'>December 2009</a></li> <li><a href='https://code.flickr.net/2009/11/'>November 2009</a></li> <li><a href='https://code.flickr.net/2009/10/'>October 2009</a></li> <li><a href='https://code.flickr.net/2009/09/'>September 2009</a></li> <li><a href='https://code.flickr.net/2009/07/'>July 2009</a></li> <li><a href='https://code.flickr.net/2009/06/'>June 2009</a></li> <li><a href='https://code.flickr.net/2009/05/'>May 2009</a></li> <li><a href='https://code.flickr.net/2009/04/'>April 2009</a></li> <li><a href='https://code.flickr.net/2009/03/'>March 2009</a></li> <li><a href='https://code.flickr.net/2009/02/'>February 2009</a></li> <li><a href='https://code.flickr.net/2009/01/'>January 2009</a></li> <li><a href='https://code.flickr.net/2008/12/'>December 2008</a></li> <li><a href='https://code.flickr.net/2008/11/'>November 2008</a></li> <li><a href='https://code.flickr.net/2008/10/'>October 2008</a></li> <li><a href='https://code.flickr.net/2008/09/'>September 2008</a></li> <li><a href='https://code.flickr.net/2008/08/'>August 2008</a></li> <li><a href='https://code.flickr.net/2008/07/'>July 2008</a></li> <li><a href='https://code.flickr.net/2008/06/'>June 2008</a></li> <li><a href='https://code.flickr.net/2008/05/'>May 2008</a></li> <li><a href='https://code.flickr.net/2008/04/'>April 2008</a></li> </ul> </aside><aside id="categories-2" class="widget widget_categories"><h3 class="widget-title">Categories</h3> <ul> <li class="cat-item cat-item-11749740"><a href="https://code.flickr.net/category/api-2/">API</a> </li> <li class="cat-item cat-item-564792"><a href="https://code.flickr.net/category/change-log/">changelog</a> </li> <li class="cat-item cat-item-5784"><a href="https://code.flickr.net/category/event/">event</a> </li> <li class="cat-item cat-item-29160 current-cat"><a aria-current="page" href="https://code.flickr.net/category/geo/">geo</a> </li> <li class="cat-item cat-item-139037766"><a href="https://code.flickr.net/category/hadoop/">hadoop</a> </li> <li class="cat-item cat-item-32"><a href="https://code.flickr.net/category/infrastructure/">infrastructure</a> </li> <li class="cat-item cat-item-139037765"><a href="https://code.flickr.net/category/kittens/">kittens</a> </li> <li class="cat-item cat-item-20156"><a href="https://code.flickr.net/category/labs/">labs</a> </li> <li class="cat-item cat-item-171"><a href="https://code.flickr.net/category/meta/">meta</a> </li> <li class="cat-item cat-item-7092"><a href="https://code.flickr.net/category/metrics/">metrics</a> </li> <li class="cat-item cat-item-139037764"><a href="https://code.flickr.net/category/open-source/">open source</a> </li> <li class="cat-item cat-item-1930"><a href="https://code.flickr.net/category/performance/">performance</a> </li> <li class="cat-item cat-item-304"><a href="https://code.flickr.net/category/photos/">photos</a> </li> <li class="cat-item cat-item-2373"><a href="https://code.flickr.net/category/search/">search</a> </li> <li class="cat-item cat-item-1"><a href="https://code.flickr.net/category/uncategorized/">Uncategorized</a> </li> <li class="cat-item cat-item-249276"><a href="https://code.flickr.net/category/uploadr/">uploadr</a> </li> <li class="cat-item cat-item-412"><a href="https://code.flickr.net/category/video/">video</a> </li> <li class="cat-item cat-item-830560"><a href="https://code.flickr.net/category/xulrunner/">xulrunner</a> </li> </ul> </aside><aside id="meta-2" class="widget widget_meta"><h3 class="widget-title">Meta</h3> <ul> <li><a href="https://code.flickr.net/wp-login.php">Log in</a></li> <li><a href="https://code.flickr.net/feed/">Entries feed</a></li> <li><a href="https://code.flickr.net/comments/feed/">Comments feed</a></li> <li><a href="https://wordpress.org/">WordPress.org</a></li> </ul> </aside> </div><!-- #secondary .widget-area --> </div><!-- #main --> <footer id="colophon" role="contentinfo"> <div id="site-generator"> © 2024 Flickr, Inc. All rights reserved. | Powered by <a href="https://wpvip.com/?utm_source=vip_powered_wpcom&utm_medium=web&utm_campaign=VIP%20Footer%20Credit&utm_term=code.flickr.net" rel="generator nofollow" class="powered-by-wpcom">WordPress VIP</a> </div> </footer><!-- #colophon --> </div><!-- #page --> <div class="jetpack-instant-search__widget-area" style="display: none"> <div id="jetpack-search-filters-2" class="widget jetpack-filters widget_search"> <div id="jetpack-search-filters-2-wrapper" class="jetpack-instant-search-wrapper"> </div></div> </div> <script type="text/javascript" src="https://code.flickr.net/wp-includes/js/dist/hooks.min.js?m=1732206023g" ></script><script type="text/javascript" src="https://code.flickr.net/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" id="wp-i18n-js"></script> <script type="text/javascript" id="wp-i18n-js-after"> /* <![CDATA[ */ wp.i18n.setLocaleData( { 'text direction\u0004ltr': [ 'ltr' ] } ); /* ]]> */ </script> <script type="text/javascript" src="https://code.flickr.net/wp-content/mu-plugins/jetpack-14.0/jetpack_vendor/automattic/jetpack-assets/build/i18n-loader.js?minify=true&ver=becd7d9884bc1b331e45" id="wp-jp-i18n-loader-js"></script> <script type="text/javascript" id="wp-jp-i18n-loader-js-after"> /* <![CDATA[ */ wp.jpI18nLoader.state = {"baseUrl":"https://code.flickr.net/wp-content/languages/","locale":"en_US","domainMap":{"jetpack-admin-ui":"plugins/jetpack","jetpack-assets":"plugins/jetpack","jetpack-backup-pkg":"plugins/jetpack","jetpack-blaze":"plugins/jetpack","jetpack-boost-core":"plugins/jetpack","jetpack-boost-speed-score":"plugins/jetpack","jetpack-classic-theme-helper":"plugins/jetpack","jetpack-compat":"plugins/jetpack","jetpack-config":"plugins/jetpack","jetpack-connection":"plugins/jetpack","jetpack-explat":"plugins/jetpack","jetpack-forms":"plugins/jetpack","jetpack-image-cdn":"plugins/jetpack","jetpack-import":"plugins/jetpack","jetpack-ip":"plugins/jetpack","jetpack-jitm":"plugins/jetpack","jetpack-licensing":"plugins/jetpack","jetpack-masterbar":"plugins/jetpack","jetpack-my-jetpack":"plugins/jetpack","jetpack-password-checker":"plugins/jetpack","jetpack-plugins-installer":"plugins/jetpack","jetpack-post-list":"plugins/jetpack","jetpack-protect-models":"plugins/jetpack","jetpack-protect-status":"plugins/jetpack","jetpack-publicize-pkg":"plugins/jetpack","jetpack-search-pkg":"plugins/jetpack","jetpack-stats":"plugins/jetpack","jetpack-stats-admin":"plugins/jetpack","jetpack-sync":"plugins/jetpack","jetpack-videopress-pkg":"plugins/jetpack","jetpack-waf":"plugins/jetpack","jetpack-wordads":"plugins/jetpack","woocommerce-analytics":"plugins/jetpack"},"domainPaths":{"jetpack-admin-ui":"jetpack_vendor/automattic/jetpack-admin-ui/","jetpack-assets":"jetpack_vendor/automattic/jetpack-assets/","jetpack-backup-pkg":"jetpack_vendor/automattic/jetpack-backup/","jetpack-blaze":"jetpack_vendor/automattic/jetpack-blaze/","jetpack-boost-core":"jetpack_vendor/automattic/jetpack-boost-core/","jetpack-boost-speed-score":"jetpack_vendor/automattic/jetpack-boost-speed-score/","jetpack-classic-theme-helper":"jetpack_vendor/automattic/jetpack-classic-theme-helper/","jetpack-compat":"jetpack_vendor/automattic/jetpack-compat/","jetpack-config":"jetpack_vendor/automattic/jetpack-config/","jetpack-connection":"jetpack_vendor/automattic/jetpack-connection/","jetpack-explat":"jetpack_vendor/automattic/jetpack-explat/","jetpack-forms":"jetpack_vendor/automattic/jetpack-forms/","jetpack-image-cdn":"jetpack_vendor/automattic/jetpack-image-cdn/","jetpack-import":"jetpack_vendor/automattic/jetpack-import/","jetpack-ip":"jetpack_vendor/automattic/jetpack-ip/","jetpack-jitm":"jetpack_vendor/automattic/jetpack-jitm/","jetpack-licensing":"jetpack_vendor/automattic/jetpack-licensing/","jetpack-masterbar":"jetpack_vendor/automattic/jetpack-masterbar/","jetpack-my-jetpack":"jetpack_vendor/automattic/jetpack-my-jetpack/","jetpack-password-checker":"jetpack_vendor/automattic/jetpack-password-checker/","jetpack-plugins-installer":"jetpack_vendor/automattic/jetpack-plugins-installer/","jetpack-post-list":"jetpack_vendor/automattic/jetpack-post-list/","jetpack-protect-models":"jetpack_vendor/automattic/jetpack-protect-models/","jetpack-protect-status":"jetpack_vendor/automattic/jetpack-protect-status/","jetpack-publicize-pkg":"jetpack_vendor/automattic/jetpack-publicize/","jetpack-search-pkg":"jetpack_vendor/automattic/jetpack-search/","jetpack-stats":"jetpack_vendor/automattic/jetpack-stats/","jetpack-stats-admin":"jetpack_vendor/automattic/jetpack-stats-admin/","jetpack-sync":"jetpack_vendor/automattic/jetpack-sync/","jetpack-videopress-pkg":"jetpack_vendor/automattic/jetpack-videopress/","jetpack-waf":"jetpack_vendor/automattic/jetpack-waf/","jetpack-wordads":"jetpack_vendor/automattic/jetpack-wordads/","woocommerce-analytics":"jetpack_vendor/automattic/woocommerce-analytics/"}}; /* ]]> */ </script> <script type="text/javascript" src="https://code.flickr.net/_static/??/wp-includes/js/dist/vendor/wp-polyfill.min.js,/wp-includes/js/dist/url.min.js?m=1732206023j" ></script><script type="text/javascript" id="jetpack-instant-search-js-before"> /* <![CDATA[ */ var JetpackInstantSearchOptions=JSON.parse(decodeURIComponent("%7B%22overlayOptions%22%3A%7B%22colorTheme%22%3A%22light%22%2C%22enableInfScroll%22%3Atrue%2C%22enableFilteringOpensOverlay%22%3Atrue%2C%22enablePostDate%22%3Atrue%2C%22enableSort%22%3Atrue%2C%22highlightColor%22%3A%22%23FFC%22%2C%22overlayTrigger%22%3A%22submit%22%2C%22resultFormat%22%3A%22expanded%22%2C%22showPoweredBy%22%3Atrue%2C%22defaultSort%22%3A%22relevance%22%2C%22excludedPostTypes%22%3A%5B%5D%7D%2C%22homeUrl%22%3A%22https%3A%5C%2F%5C%2Fcode.flickr.net%22%2C%22locale%22%3A%22en-US%22%2C%22postsPerPage%22%3A10%2C%22siteId%22%3A185426273%2C%22postTypes%22%3A%7B%22post%22%3A%7B%22singular_name%22%3A%22Post%22%2C%22name%22%3A%22Posts%22%7D%2C%22page%22%3A%7B%22singular_name%22%3A%22Page%22%2C%22name%22%3A%22Pages%22%7D%2C%22attachment%22%3A%7B%22singular_name%22%3A%22Media%22%2C%22name%22%3A%22Media%22%7D%7D%2C%22webpackPublicPath%22%3A%22https%3A%5C%2F%5C%2Fcode.flickr.net%5C%2Fwp-content%5C%2Fmu-plugins%5C%2Fjetpack-14.0%5C%2Fjetpack_vendor%5C%2Fautomattic%5C%2Fjetpack-search%5C%2Fbuild%5C%2Finstant-search%5C%2F%22%2C%22isPhotonEnabled%22%3Afalse%2C%22isFreePlan%22%3Afalse%2C%22apiRoot%22%3A%22https%3A%5C%2F%5C%2Fcode.flickr.net%5C%2Fwp-json%5C%2F%22%2C%22apiNonce%22%3A%2212c3391b55%22%2C%22isPrivateSite%22%3Afalse%2C%22isWpcom%22%3Afalse%2C%22hasOverlayWidgets%22%3Atrue%2C%22widgets%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Bylines%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22byline%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-2%22%2C%22filter_id%22%3A%22taxonomy_0%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-2%22%2C%22filter_id%22%3A%22taxonomy_1%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-2%22%2C%22filter_id%22%3A%22taxonomy_2%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-2%22%2C%22filter_id%22%3A%22date_histogram_3%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-2%22%7D%5D%2C%22widgetsOutsideOverlay%22%3A%5B%7B%22filters%22%3A%5B%7B%22name%22%3A%22Bylines%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22byline%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-3%22%2C%22filter_id%22%3A%22taxonomy_4%22%7D%2C%7B%22name%22%3A%22Categories%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22category%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-3%22%2C%22filter_id%22%3A%22taxonomy_5%22%7D%2C%7B%22name%22%3A%22Tags%22%2C%22type%22%3A%22taxonomy%22%2C%22taxonomy%22%3A%22post_tag%22%2C%22count%22%3A5%2C%22widget_id%22%3A%22jetpack-search-filters-3%22%2C%22filter_id%22%3A%22taxonomy_6%22%7D%2C%7B%22name%22%3A%22Year%22%2C%22type%22%3A%22date_histogram%22%2C%22count%22%3A5%2C%22field%22%3A%22post_date%22%2C%22interval%22%3A%22year%22%2C%22widget_id%22%3A%22jetpack-search-filters-3%22%2C%22filter_id%22%3A%22date_histogram_7%22%7D%5D%2C%22widget_id%22%3A%22jetpack-search-filters-3%22%7D%5D%2C%22hasNonSearchWidgets%22%3Afalse%2C%22preventTrackingCookiesReset%22%3Afalse%7D")); /* ]]> */ </script> <script type="text/javascript" src="https://code.flickr.net/wp-content/mu-plugins/jetpack-14.0/jetpack_vendor/automattic/jetpack-search/build/instant-search/jp-search.js?minify=false&ver=2b91c6a8150537fa6728" id="jetpack-instant-search-js"></script> <script type="text/javascript" src="//stats.wp.com/w.js?ver=202448" id="jp-tracks-js"></script> <script type="text/javascript" src="https://stats.wp.com/e-202448.js" id="jetpack-stats-js" data-wp-strategy="defer"></script> <script type="text/javascript" id="jetpack-stats-js-after"> /* <![CDATA[ */ _stq = window._stq || []; _stq.push([ "view", JSON.parse("{\"v\":\"ext\",\"blog\":\"185426273\",\"post\":\"0\",\"tz\":\"-8\",\"srv\":\"code.flickr.net\",\"hp\":\"vip\",\"j\":\"1:14.0\"}") ]); _stq.push([ "clickTrackerInit", "185426273", "0" ]); /* ]]> */ </script> <script async src="https://embedr.flickr.com/assets/client-code.js" charset="utf-8"></script> </body> </html>