<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

<channel>
	<title>Planet Geospatial</title>
	<link>http://www.planetgs.com/</link>
	<language>en</language>
	<description>Planet Geospatial - http://www.planetgs.com/</description>
	<atom:link rel="self" href="http://www.planetgs.com/rss20.xml" type="application/rss+xml"/>

<item>
	<title>thematic mapping blog: Showing Zoomify images with Leaflet</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-4741970181714760187.post-5970198555447790047</guid>
	<link>http://feedproxy.google.com/~r/thematicmapping/~3/3mXdHW2Ap9s/showing-zoomify-images-with-leaflet.html</link>
	<description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;http://4.bp.blogspot.com/-9FdXbkOKyZg/UcHz3DiUzRI/AAAAAAAAK04/XyfCY-dl5L4/s1600/DSC00059.JPG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;118&quot; src=&quot;http://4.bp.blogspot.com/-9FdXbkOKyZg/UcHz3DiUzRI/AAAAAAAAK04/XyfCY-dl5L4/s640/DSC00059.JPG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Today, I'm starting a new blog series written from Foldøy, a tiny island in south west Norway which will be my home for two months. In this first post, I'll show you how to deliver zoomable high-resolution images with &lt;a href=&quot;http://leafletjs.com/&quot;&gt;Leaflet&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I've brought along 17 kg of mapping and visualization books to keep me occupied:&lt;br /&gt;
&lt;br /&gt;


&lt;br /&gt;
&lt;a href=&quot;http://thematicmapping.org/playground/zoomify/example.html&quot;&gt;Fullscreen&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Zoom in if you want to see the details! The photo is broken into tiles and then displayed as required. You don't really need Leaflet to create images like this, as &lt;a href=&quot;http://www.zoomify.com/&quot;&gt;Zoomify&lt;/a&gt; provides both Flash and HTML5 viewers. I decided to use Leaflet to create an open source alternative, and to learn more about tiling schemes.&lt;br /&gt;
&lt;br /&gt;
This is the JavaScript code needed to show this image:&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;var map = L.map('photo').setView(new L.LatLng(0,0), 0);&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;L.tileLayer.zoomify('http://thematicmapping.org/playground/zoomify/books/', {&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;    width: 5472,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;    height: 3648,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;    tolerance: 0.8,&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;    attribution: 'Photo: Bjørn Sandvik'&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;}).addTo(map);&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
You have to provide the url to the Zoomify image folder and the with and height dimensions of the original image. You can also specify a display tolerance for the inital zoom level. A value lower than 1.0 might center the image and cut of the edges.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-qDoqInOLoVY/UcH7r94EqzI/AAAAAAAAK1I/NG98V_mymGY/s1600/deepzoom.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;440&quot; src=&quot;http://1.bp.blogspot.com/-qDoqInOLoVY/UcH7r94EqzI/AAAAAAAAK1I/NG98V_mymGY/s640/deepzoom.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: right;&quot;&gt;Image source: &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/cc645050(v=vs.95).aspx&quot;&gt;Microsoft Deep Zoom&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
The Zoomify tile format is similar to popular &lt;a href=&quot;http://blog.thematicmapping.org/2012/09/creating-custom-map-tiling-scheme-for.html&quot;&gt;map tiling schemes&lt;/a&gt;, and I'm extending the Leaflet &lt;a href=&quot;http://leafletjs.com/reference.html#tilelayer&quot;&gt;TileLayer class&lt;/a&gt; to show the image. The tiling follows a quadtree or pyramid pattern of increasing resolution, doubling the resolution for each zoom level. The tile size is 256 x 256 px and there are 256 tiles in each folder. The filename for each tile is z-x-y.jpg where z is the zoom level and x/y is the grid position starting from the top left corner.&lt;br /&gt;
&lt;br /&gt;
The code is &lt;a href=&quot;https://github.com/turban/Leaflet.Zoomify&quot;&gt;available on GitHub&lt;/a&gt; as a Leaflet plugin.&lt;br /&gt;
&lt;br /&gt;


&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
&lt;span style=&quot;font-size: 13px; text-align: center;&quot;&gt;The bonfire is ready for &lt;/span&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Midsummer#Norway&quot; style=&quot;font-size: 13px; text-align: center;&quot;&gt;midsummer&lt;/a&gt;&lt;span style=&quot;font-size: 13px; text-align: center;&quot;&gt; on Foldøy island.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;span style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://thematicmapping.org/playground/zoomify/sandvika.html&quot;&gt;Fullscreen&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/thematicmapping/~4/3mXdHW2Ap9s&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 22:46:12 +0000</pubDate>
	<author>noreply@blogger.com (Bjørn Sandvik)</author>
</item>
<item>
	<title>Between the Poles: G8 leaders sign charter on open data including geospatial and infrastructure</title>
	<guid isPermaLink="false">tag:typepad.com,2003:post-6a00d83476d35153ef01910388ee0f970c</guid>
	<link>http://feedproxy.google.com/~r/typepad/zeissg/geospatial/~3/h0oDGzyk5LE/g8-leaders-sign-charter-on-open-data.html</link>
	<description>&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;https://www.gov.uk/government/publications/open-data-charter/g8-open-data-charter-and-technical-annex&quot; style=&quot;float: right;&quot; target=&quot;_self&quot;&gt;&lt;img alt=&quot;G8 Open Data Charter&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef0192ab514a1b970d&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0192ab514a1b970d-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;G8 Open Data Charter&quot; /&gt;&lt;/a&gt;G8 leaders (Canada, France, Germany, Italy, Japan, Russia, United Kingdom, United States, and the European Union) signed a &lt;a href=&quot;https://www.gov.uk/government/publications/open-data-charter/g8-open-data-charter-and-technical-annex&quot; target=&quot;_self&quot;&gt;charter on open data&lt;/a&gt;.   The Open Data Charter sets out 5 strategic principles that all G8 members will act on. G8 members also identified 14 high-value sectors from which they will release data which include geospatial and infrastructure.   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Motivation&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Technology and increasing volumes of information have created an enormous potential to enable more accountable, efficient, responsive, and effective governments and businesses and to spur economic growth.&lt;br /&gt;&lt;br /&gt;&quot;Open data sit at the heart of this global movement.&quot;   Governments and businesses collect a wide range of data, but mich of this date remains unaccessible. &lt;br /&gt;&lt;br /&gt;Open data also increases transparency about what government and business are doing which promotes accountability and good governance.&lt;br /&gt;&lt;br /&gt;Government open data is a catalyst for innovation in the private sector, supporting the creation of new markets, businesses, and jobs.  Government open data practices are also a model for the private sector encouraging businesses to recognize the value of open data and to adopt open data policies.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open data principles&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The G8 countries aggredd to a sset of principles agree to follow a set of principlesthat are the foundation for access to, and the release and re-use of, data collected by by G8 governments.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Principle 1: Open Data by Default&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;G8 governments will establish an expectation that all government data be published openly by default, while recognising that there are legitimate reasons why some data cannot be released.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Principle 2: Quality and Quantity&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;G8 governments will  release high-quality open data that are timely, comprehensive, and accurate in their original, unmodified form and at the finest level of granularity available.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Principle 3: Usable by All&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;G8 governments will release data in open formats wherever possible.  In many cases this will include providing data in multiple formats.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Principle 4: Releasing Data for Improved Governance&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;G8 governments will transparent about their own data collection, standards, and publishing processes, by documenting all of these related processes online.  This includes a &lt;a href=&quot;https://github.com/nsinai/G8_Metadata_Mapping/blob/master/index.md&quot; target=&quot;_self&quot;&gt;G8_Metadata_Mapping&lt;/a&gt; initiative that is documented on Github which shows the mapping between the metadata on datasets published by G8 Members through their open data portals. &lt;br /&gt;&lt;br /&gt;&lt;em&gt;Principle 5: Releasing Data for Innovation&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;G8 governments will work to increase open data literacy and encourage people, such as developers of applications, by providing data in machine-readable formats.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key high-value sectors&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;G8 members identified 14 high-value sectors from which they will release data.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Crime and Justice - Crime statistics, safety&lt;/li&gt;
&lt;li&gt;Earth observation - Meteorological/weather, agriculture, forestry, fishing, and hunting&lt;/li&gt;
&lt;li&gt;Education- List of schools; performance of schools, digital skills&lt;/li&gt;
&lt;li&gt;Energy and Environment - Pollution levels, energy consumption&lt;/li&gt;
&lt;li&gt;Finance and contracts - Transaction spend, contracts let, call for tender, future tenders, local budget, national budget (planned and spent)&lt;/li&gt;
&lt;li&gt;Geospatial - Topography, postcodes, national maps, local maps&lt;/li&gt;
&lt;li&gt;Global Development - Aid, food security, extractives, land&lt;/li&gt;
&lt;li&gt;Government Accountability and Democracy - Government contact points, election results, legislation and statutes, salaries (pay scales), hospitality/gifts&lt;/li&gt;
&lt;li&gt;Health - Prescription data, performance data&lt;/li&gt;
&lt;li&gt;Science and Research - Genome data, research and educational activity, experiment results&lt;/li&gt;
&lt;li&gt;Statistics - National Statistics, Census, infrastructure, wealth, skills&lt;/li&gt;
&lt;li&gt;Social mobility and welfare - Housing, health insurance and unemployment benefits&lt;/li&gt;
&lt;li&gt;Transport and Infrastructure - Public transport timetables, access points broadband penetration&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Wed, 19 Jun 2013 22:07:11 +0000</pubDate>
</item>
<item>
	<title>thematic mapping blog: How to minify GeoJSON files?</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-4741970181714760187.post-3204523538763841901</guid>
	<link>http://feedproxy.google.com/~r/thematicmapping/~3/CwvY_zsuZqc/how-to-minify-geojson-files.html</link>
	<description>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot;&gt;
You can't do web mapping these days without knowing your &lt;a href=&quot;http://www.geojson.org/geojson-spec.html&quot;&gt;GeoJSON&lt;/a&gt;. It's the vector format of choice among popular mapping libraries like &lt;a href=&quot;http://leafletjs.com/&quot;&gt;Leaflet&lt;/a&gt;, &lt;a href=&quot;http://d3js.org/&quot;&gt;D3.js&lt;/a&gt; and &lt;a href=&quot;http://polymaps.org/&quot;&gt;Polymaps&lt;/a&gt;. Size matters on the web, especially if you want to distribute complex geometries, like the world's countries. The challenge is even bigger if you want to target mobile users - or support web browsers with poor vector handling (IE &amp;lt; 9). This blog post will show you how to minify your GeoJSON files before sending them over the wire.&lt;br /&gt;
&lt;br /&gt;
The first thing you should do is to generalize your vectors so they don't contain more detail than you need. In &lt;a href=&quot;http://blog.thematicmapping.org/2012/10/mapping-regions-of-new-zealand-with.html&quot;&gt;a previous blog post&lt;/a&gt;, I was able to remove 90% of the coordinates without loosing to much detail for map scale I wanted to use. This will of course have a great effect on the file size.&lt;br /&gt;
&lt;br /&gt;
Today, I'm going to use country borders from the &lt;a href=&quot;http://www.naturalearthdata.com/&quot;&gt;Natural Earth dataset&lt;/a&gt;. These datasets are already generalized for different scales (1:10m, 1:50m, and 1:110 million), so I'll use them as they are. The 1:110m (small scale) and 1:50m (medium scale) shapefiles will cover the needs for the thematic world maps I plan to make:&lt;br /&gt;
&lt;ul style=&quot;text-align: left;&quot;&gt;
&lt;li&gt; &lt;a href=&quot;http://www.naturalearthdata.com/downloads/110m-cultural-vectors/110m-admin-0-countries/&quot;&gt;110m-admin-0-countries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt; &lt;a href=&quot;http://www.naturalearthdata.com/downloads/50m-cultural-vectors/50m-admin-0-countries-2/&quot;&gt;50m-admin-0-countries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-wSUWdr3uFMU/UKktQnEPTdI/AAAAAAAAKsA/2oMsMzqsk-o/s1600/borders.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;399&quot; src=&quot;http://2.bp.blogspot.com/-wSUWdr3uFMU/UKktQnEPTdI/AAAAAAAAKsA/2oMsMzqsk-o/s640/borders.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;The 110m and 50m country polygons shown in QGIS. &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Let's open the datasets in &lt;a href=&quot;http://www.qgis.org/&quot;&gt;QGIS&lt;/a&gt;. If you look at the attribute table you'll see that each dataset contains 63 attributes, which makes them very versatile. For your web maps, you probably need just a few of the attributes, and you should remove the ones you don't need. I'm keeping the country name and the &lt;a href=&quot;http://en.wikipedia.org/wiki/ISO_3166-1&quot;&gt;ISO 3166-1 country codes&lt;/a&gt; (alpha-2, alpha-3, and numeric), which can be used to link country geometries to statistical data.  &lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://4.bp.blogspot.com/-Cy7bX18arFo/UKkwgX9qG0I/AAAAAAAAKs0/02YalI0knjI/s1600/attributes.png&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://4.bp.blogspot.com/-Cy7bX18arFo/UKkwgX9qG0I/AAAAAAAAKs0/02YalI0knjI/s1600/attributes.png&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Only keep the attributes you need.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Next, we can convert the shapefiles to GeoJSON with &lt;a href=&quot;http://www.gdal.org/ogr2ogr.html&quot;&gt;ogr2ogr&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;span&gt;ogr2ogr -f &quot;GeoJSON&quot; -lco COORDINATE_PRECISION=1 ne_110m_admin_0_countries.json ne_110m_admin_0_countries.shp &lt;/span&gt;&lt;br /&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span&gt;ogr2ogr -f &quot;GeoJSON&quot; -lco COORDINATE_PRECISION=2 ne_50m_admin_0_countries.json ne_50m_admin_0_countries.shp&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
The important thing is that I'm only keeping one decimal (coordinate precision) for the 110m dataset, and two decimals for the 50m dataset, which is sufficient for my map scales. This will reduce the size of the GeoJSON files by more than half. The size of the 110m GeoJSON is now 207 kB and the 50m version is 1,897 kB. But we can do better.&lt;br /&gt;
&lt;br /&gt;
The files contains a lot of whitespace, which is waste of space. I planned to use &lt;a href=&quot;http://www.sublimetext.com/&quot;&gt;Sublime Text&lt;/a&gt; to remove the whitespace, but it were &lt;a href=&quot;http://sublimetext.userecho.com/topic/27988-better-handling-of-huge-files/&quot;&gt;not able&lt;/a&gt; to handle the 50m GeoJSON file, so I switched to &lt;a href=&quot;http://notepad-plus-plus.org/&quot;&gt;Notepad++&lt;/a&gt;. I used these &lt;a href=&quot;http://en.wikipedia.org/wiki/Regular_expression&quot;&gt;regular expressions&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
Find: &quot;&lt;span&gt;([^a-z.]) &lt;/span&gt;&quot;&lt;br /&gt;
Replace: &quot;&lt;span&gt;$1&lt;/span&gt;&quot;&lt;br /&gt;
This will remove all whitespace which is not succeeding a letter or a dot, which are present in country names.&lt;br /&gt;
&lt;br /&gt;
Find: &quot;&lt;span&gt;\n,&lt;/span&gt;&quot;&lt;br /&gt;
Replace: &quot;&lt;span&gt;,&lt;/span&gt;&quot; &lt;br /&gt;
Remove line breaks (keeping some for readability).&lt;br /&gt;
&lt;br /&gt;
Find: &quot;&lt;span&gt;\.0([,\]])&lt;/span&gt;&quot;&lt;br /&gt;
Replace: &quot;&lt;span&gt;$1&lt;/span&gt;&quot;&lt;br /&gt;
Remove trailing zeros.&lt;br /&gt;
&lt;br /&gt;
This will reduce the file size of the 110m GeoJSON from 207 to 156 kB, without loosing any data quality. More than 400k of whitespace characters was removed from the 50m GeoJSON file, reducing the file size from 1,897 to 1,481 kB.&lt;br /&gt;
&lt;br /&gt;
If your web server is supporting &lt;a href=&quot;http://betterexplained.com/articles/how-to-optimize-your-site-with-gzip-compression/&quot;&gt;gzipping on-the-fly&lt;/a&gt;, the 110m GeoJSON will end up being 45 kB and the 50m version will be 430 kB. Not bad!&lt;br /&gt;
&lt;br /&gt;
And if this is too much work, you can always &lt;a href=&quot;http://thematicmapping.org/downloads/ne-v2.0.0-countries-geojson.zip&quot;&gt;download the final GeoJSON files on thematicmapping.org&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
NB! &lt;a href=&quot;https://github.com/mbostock/topojson/wiki&quot;&gt;Mike Bostock’s TopoJSON&lt;/a&gt; would allow us to compress the GeoJSON even more, while preserving topology (shared borders between countries) - but we would need to use a map client supporting the format. Looks promising!&lt;/div&gt;
&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/thematicmapping/~4/CwvY_zsuZqc&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 21:52:43 +0000</pubDate>
	<author>noreply@blogger.com (Bjørn Sandvik)</author>
</item>
<item>
	<title>Bill Thorp: Slate’s literal place name map</title>
	<guid isPermaLink="true">http://billthorp.wordpress.com/2013/06/19/slates-literal-place-name-map/</guid>
	<link>http://billthorp.wordpress.com/2013/06/19/slates-literal-place-name-map/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://www.slate.com/articles/news_and_politics/map_of_the_week/2013/06/literal_meanings_of_places_in_the_u_s_map.html&quot; title=&quot;Slate's literal place name map&quot;&gt;Slate’s literal place name map&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;I love this map!! I learned that Pensacola, FL is from Choctaw : pansha (‘hair’) okla (‘people’) while Cincinnati, OH is from Latin cincinnus (‘curly hair’) and natus (‘born’).&lt;/h5&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/billthorp.wordpress.com/524/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/billthorp.wordpress.com/524/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=billthorp.wordpress.com&amp;amp;blog=920496&amp;amp;post=524&amp;amp;subd=billthorp&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 20:52:42 +0000</pubDate>
</item>
<item>
	<title>LiDAR News: Through a Scanner, Skulpturhalle</title>
	<guid isPermaLink="false">http://blog.lidarnews.com/?p=11693</guid>
	<link>http://feedproxy.google.com/~r/InTheScan/~3/esGcrlkf2mE/through-a-scanner-skulpturhalle</link>
	<description>This is a very interesting project that Cosmo Wenman is launching via Kickstarter. Continue reading →&lt;br /&gt;
&lt;br /&gt;
Click Title to Continue Reading...&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/InTheScan/~4/esGcrlkf2mE&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 16:14:54 +0000</pubDate>
</item>
<item>
	<title>Bing Maps Blog: Automating the Windows Map App</title>
	<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:82562c9d-b72b-4faf-96fe-e305e33ffe38</guid>
	<link>http://www.bing.com/blogs/site_blogs/b/maps/archive/2013/06/19/automating-the-windows-map-app.aspx</link>
	<description>&lt;p&gt;Windows allows a Windows Store application to register as the default handler for a certain URI schema. This process is called &lt;a href=&quot;http://msdn.microsoft.com/library/windows/apps/Hh779670(v=win.10).aspx&quot; target=&quot;_blank&quot;&gt;Protocol Activation&lt;/a&gt; and it can be leveraged in the WinRT as well as the WinJS framework.  &lt;/p&gt;&lt;p&gt;The Windows Map app is registered for protocol activation and the URI schema is documented &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/windows/apps/jj635237.aspx&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Through protocol activation you can control the map view, find places or business listings, calculate routes or even map entire collections of points of interest.  &lt;/p&gt;&lt;p&gt; &lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ProtocolActivation_5F00_195D6B95.png&quot;&gt;&lt;img alt=&quot;ProtocolActivation&quot; border=&quot;0&quot; height=&quot;510&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ProtocolActivation_5F00_thumb_5F00_1ECBDC39.png&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;ProtocolActivation&quot; width=&quot;904&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In this quick example, we use this capability to display the location where we captured a photo. Rather than starting from the scratch, we build upon the &lt;a href=&quot;http://code.msdn.microsoft.com/windowsapps/Simple-Imaging-Sample-a2dec2b0&quot; target=&quot;_blank&quot;&gt;Simple Image Sample&lt;/a&gt; from the Windows Dev Center. The first scenario in this application reads and writes properties of an image – including the coordinates (latitude and longitude) where we captured the photo.  &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/SimpleImagingSample_5F00_615B77B1.png&quot;&gt;&lt;img alt=&quot;SimpleImagingSample&quot; border=&quot;0&quot; height=&quot;510&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/SimpleImagingSample_5F00_thumb_5F00_1BD67786.png&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;SimpleImagingSample&quot; width=&quot;904&quot; /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;There are a few changes that we need to apply to this app in order to launch the Map app and center on this location.  &lt;/p&gt;&lt;p&gt;In the application markup language of scenario 1 we do the following:  &lt;/p&gt;&lt;ol&gt; &lt;li&gt;Replace the boxes for degrees, minutes and seconds as well as the one for the compass orientation with a single text-box in which we will display the latitude and longitude in decimal degrees.  &lt;/li&gt;&lt;li&gt;Add a button that will launch the Map app with parameters.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The new XAML will look like this:  &lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBlock&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;0&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;6&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;TextWrapping&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Wrap&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #f00;&quot;&gt;	 Style&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;{&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;StaticResource&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;BasicTextStyle&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;}&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #f00;&quot;&gt;	 HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Left&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Center&quot;&amp;gt;&lt;/span&gt;Latitude
&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBlock&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;&amp;gt;&lt;/span&gt; 
&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBox&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;6&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;0,0,10,10&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #f00;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;LatTextbox&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #f00;&quot;&gt;         HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Left&quot;&lt;/span&gt;  &lt;span style=&quot;color: #f00;&quot;&gt;Text&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;300&quot; /&amp;gt;&lt;/span&gt; &lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;color: #00f;&quot;&gt;&lt;br /&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBlock&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;0&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;7&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;TextWrapping&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Wrap&quot; &lt;/span&gt;
&lt;span style=&quot;color: #f00;&quot;&gt;	 Style&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;{&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;StaticResource&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;BasicTextStyle&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;}&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #f00;&quot;&gt;	 HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Left&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Center&quot;&amp;gt;&lt;/span&gt;Longitude&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBlock&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;&amp;gt;&lt;/span&gt; 
&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBox&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;7&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;0,0,10,10&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #f00;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;LonTextbox&quot;&lt;/span&gt; 
&lt;span style=&quot;color: #f00;&quot;&gt;         HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;Left&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Text&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;300&quot; /&amp;gt;&lt;/span&gt; &lt;br /&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=&quot;color: #800000;&quot;&gt;&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;&lt;/span&gt;Button&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;x&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;color: #f00;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;myPhotoLoc&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Column&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;1&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Grid.Row&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;8&quot;&lt;/span&gt; 
        &lt;span style=&quot;color: #f00;&quot;&gt;Click&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;myPhotoLoc_Click&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;300&quot;&lt;/span&gt; &lt;span style=&quot;color: #f00;&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;=&quot;0,0,10,0&quot;&lt;/span&gt; &lt;span style=&quot;color: #00f;&quot;&gt;&amp;gt;&lt;/span&gt;Open Map&lt;span style=&quot;color: #00f;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Button&lt;/span&gt;&lt;span style=&quot;color: #00f;&quot;&gt;&amp;gt; &lt;/span&gt;&lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next we look at the code behind and in the function GetImagePropertiesForDisplay. We replace the code that splits the coordinates in degrees, minutes and seconds with the snippet below. 
&lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#008000&quot;&gt;' Do a simple check if GPS data exists.&lt;/font&gt; 
   &lt;font color=&quot;#0000ff&quot;&gt;If &lt;/font&gt; (m_imageProperties.Latitude.HasValue) &lt;font color=&quot;#0000ff&quot;&gt;AndAlso &lt;/font&gt; (m_imageProperties.Longitude.HasValue) &lt;font color=&quot;#0000ff&quot;&gt;Then&lt;/font&gt; 
     LatText = &lt;font color=&quot;#008080&quot;&gt;Math&lt;/font&gt;.Round(m_imageProperties.Latitude.Value,  6).ToString
     LatTextbox.Text = LatText&lt;/pre&gt;&lt;pre&gt;  LonText = &lt;font color=&quot;#008080&quot;&gt;Math&lt;/font&gt;.Round(m_imageProperties.Longitude.Value,  6).ToString
  LonTextbox.Text = LonText
 &lt;font color=&quot;#0000ff&quot;&gt;End If&lt;/font&gt; &lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We also introduce a new function to handle the click-event on our button and launch the Map app: 
&lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;Private Async&lt;/font&gt; Sub myPhotoLoc_Click(sender &lt;font color=&quot;#0000ff&quot;&gt;As Object&lt;/font&gt;, e &lt;font color=&quot;#0000ff&quot;&gt;As&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;RoutedEventArgs&lt;/font&gt;)
  &lt;font color=&quot;#008000&quot;&gt;' Create the URI to launch  from a string.&lt;/font&gt; 
  &lt;font color=&quot;#0000ff&quot;&gt;Dim&lt;/font&gt; uri = &lt;font color=&quot;#0000ff&quot;&gt;New&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;Uri&lt;/font&gt;(&lt;font color=&quot;#800000&quot;&gt;&quot;bingmaps:?collection=name.Photo%20Locations~point.&quot;&lt;/font&gt; + _
     LatText + &lt;font color=&quot;#800000&quot;&gt;&quot;_&quot;&lt;/font&gt; + LonText + &lt;font color=&quot;#800000&quot;&gt;&quot;_My%20Photo&amp;amp;sty=a&quot;&lt;/font&gt;)&lt;/pre&gt;&lt;pre&gt;  &lt;font color=&quot;#008000&quot;&gt;' Launch the URI.&lt;/font&gt; 
  &lt;font color=&quot;#0000ff&quot;&gt;Dim&lt;/font&gt; success &lt;font color=&quot;#0000ff&quot;&gt;As Boolean&lt;/font&gt; = &lt;font color=&quot;#0000ff&quot;&gt;Await&lt;/font&gt; Windows.System.&lt;font color=&quot;#008080&quot;&gt;Launcher&lt;/font&gt;.LaunchUriAsync(uri)
&lt;font color=&quot;#0000ff&quot;&gt;End Sub&lt;/font&gt; &lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And that’s it. You’ll find the complete source code &lt;a href=&quot;http://sdrv.ms/11VqJiV&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. 
&lt;/p&gt;&lt;p&gt;Happy Mapping &lt;font size=&quot;4&quot;&gt;☺&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/PhotoViewer_5F00_5ED245F3.png&quot;&gt;&lt;img alt=&quot;PhotoViewer&quot; border=&quot;0&quot; height=&quot;510&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/PhotoViewer_5F00_thumb_5F00_4491DCCF.png&quot; style=&quot;border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px;&quot; title=&quot;PhotoViewer&quot; width=&quot;904&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://www.bing.com/blogs/aggbug.aspx?PostID=9693529&amp;amp;AppID=5435&amp;amp;AppType=Weblog&amp;amp;ContentType=0&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 15:52:19 +0000</pubDate>
        <enclosure url="http://www.bing.com/blogs/cfs-file.ashx/__key/telligent-evolution-components-attachments/01-5435-00-00-09-69-35-29/ProtocolActivationThumbnail.png" length="55557" type="image/png"/>
</item>
<item>
	<title>AnyGeo: Build your own vector based web map of rivers in the contiguous 48 states</title>
	<guid isPermaLink="false">http://blog.gisuser.com/?p=12819</guid>
	<link>http://blog.gisuser.com/2013/06/19/build-your-own-vector-based-web-map-of-rivers-in-the-contiguous-48-states/</link>
	<description>You may have already seen this infographic making the rounds on various social media channels. The visual is a stunning look at all of the hydrographic features in America and indeed it is quite impressive. But what you may not … &lt;a href=&quot;http://blog.gisuser.com/2013/06/19/build-your-own-vector-based-web-map-of-rivers-in-the-contiguous-48-states/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Wed, 19 Jun 2013 15:51:51 +0000</pubDate>
</item>
<item>
	<title>AnyGeo: OpenCage Data – OpenStreetMap (OSM) Data in the format you want</title>
	<guid isPermaLink="false">http://blog.gisuser.com/?p=12817</guid>
	<link>http://blog.gisuser.com/2013/06/19/opencage-data-openstreetmap-osm-data-in-the-format-you-want/</link>
	<description>OpenCage Data  http://www.opencagedata.com/ - a new effort that guarantees to make using OSM data easy for organizations and to help users get OpenStreetMap data in the format they want it! Born out of London-based Lokku (a 15 person team), the … &lt;a href=&quot;http://blog.gisuser.com/2013/06/19/opencage-data-openstreetmap-osm-data-in-the-format-you-want/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Wed, 19 Jun 2013 15:24:44 +0000</pubDate>
</item>
<item>
	<title>Making Maps: DiY Cartography: Moving Enormous Maps | 1917</title>
	<guid isPermaLink="false">http://makingmaps.net/?p=1965</guid>
	<link>http://makingmaps.net/2013/06/19/moving-enormous-maps-1917/</link>
	<description>&lt;p&gt;&lt;em&gt;&lt;a href=&quot;http://makingmaps.files.wordpress.com/2013/06/moving_large_map_crop.png&quot;&gt;&lt;img alt=&quot;moving_large_map_crop&quot; class=&quot;size-full wp-image-2041 aligncenter&quot; src=&quot;http://makingmaps.files.wordpress.com/2013/06/moving_large_map_crop.png?w=500&quot; /&gt;&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;em&gt;It measures 69 feet long and 11 feet wide and required the services of nearly a dozen men to carry it…&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Enormous map moving, ca. 1917.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://makingmaps.files.wordpress.com/2013/03/moving_large_map.png&quot;&gt;&lt;img alt=&quot;moving_large_map&quot; class=&quot;aligncenter&quot; height=&quot;280&quot; src=&quot;http://makingmaps.files.wordpress.com/2013/03/moving_large_map.png?w=500&amp;amp;h=280&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://makingmaps.files.wordpress.com/2013/03/moving_large_map_text.png&quot;&gt;&lt;img alt=&quot;moving_large_map_text&quot; class=&quot;size-full wp-image-1966 aligncenter&quot; height=&quot;539&quot; src=&quot;http://makingmaps.files.wordpress.com/2013/03/moving_large_map_text.png?w=500&amp;amp;h=539&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;The map shows that portion of the United States between the eastern boundary of Minnesota and the Pacific coast, and the entire Northern Pacific Railway system, including practically every station on the line.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;em&gt;Popular Mechanics,&lt;/em&gt; February 1917.&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/makingmaps.wordpress.com/1965/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/makingmaps.wordpress.com/1965/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=makingmaps.net&amp;amp;blog=892546&amp;amp;post=1965&amp;amp;subd=makingmaps&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Wed, 19 Jun 2013 13:04:45 +0000</pubDate>
</item>
<item>
	<title>GeoSolutions' Blog: Developer's Corner: GeoServer-Manager 1.5.2 released</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-5176900881057973693.post-8220983775004642939</guid>
	<link>http://geo-solutions.blogspot.com/2013/06/gs-manager-1.5.2.html</link>
	<description>&lt;br /&gt;Dear All,&lt;br /&gt;this short blog post is for sharing with you that we just released &lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager&quot;&gt;GeoServer-Manager&lt;/a&gt; version 1.5.2.&lt;br /&gt;&lt;br /&gt;Here's a list of most important changes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager/pull/62&quot;&gt;#62&lt;/a&gt; Support for MetadataLinkInfo encoder / decoder&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager/issues/65&quot;&gt;#65&lt;/a&gt; Support for SQL View FeatureType - VirtualTable metadata encoder/decoder&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager/pull/71&quot;&gt;#71&lt;/a&gt; Missing dbtype connection Parameter in GSOracleNGDatastoreEncoder&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager/issues/77&quot;&gt;#77&lt;/a&gt; Missing support for JP2K&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager/pull/80&quot;&gt;#80&lt;/a&gt; Considering several layers with the same name&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;We have also updated the documentation with &lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager/wiki/Examples&quot;&gt;examples&lt;/a&gt; on how to use the new methods.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;This version of &lt;a href=&quot;https://github.com/geosolutions-it/geoserver-manager&quot;&gt;GeoServer-Manager&lt;/a&gt; is compatible with GeoServer 2.2 and GeoServer 2.3.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;If you have questions or if you just want to talk to us about the using the library in your project, please, subscribe to the mailing list &lt;a href=&quot;https://groups.google.com/group/geoserver-manager-users&quot;&gt;here&lt;/a&gt;. In any case, do not hesitate to &lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;contact us&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Regards,&lt;br /&gt;the &lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;GeoSolutions&lt;/a&gt; Team.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://www.geo-solutions.it/static/img/geosolutions-logo.gif&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description>
	<pubDate>Wed, 19 Jun 2013 12:29:58 +0000</pubDate>
	<author>noreply@blogger.com (Simone Giannecchini)</author>
</item>
<item>
	<title>All Points Blog: DigitalGlobe Used Crowdsourcing to Explore Imagery of Moore, OK Damage</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/digitalglobe-used-crowdsourcing-to-explore-imagery-of-moore-ok-damage/335805</guid>
	<link>http://apb.directionsmag.com/entry/digitalglobe-used-crowdsourcing-to-explore-imagery-of-moore-ok-damage/335805</link>
	<description>As the tornados touched down in Oklahoma a few weeks ago, first responders jumped into action. In support of these brave and motivated people and organizations, DigitalGlobe tasked its satellite constellation to capture imagery of the area as part of its FirstLook service, collectingt... &lt;a href=&quot;http://apb.directionsmag.com/entry/digitalglobe-used-crowdsourcing-to-explore-imagery-of-moore-ok-damage/335805&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Wed, 19 Jun 2013 11:00:31 +0000</pubDate>
</item>
<item>
	<title>All Points Blog: Pretty Map of all the Waterways in the U.S. (from public data and open source code)</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/pretty-map-of-all-the-waterways-in-the-u.s.-from-public-data-and-open-/335775</guid>
	<link>http://apb.directionsmag.com/entry/pretty-map-of-all-the-waterways-in-the-u.s.-from-public-data-and-open-/335775</link>
	<description>The media has been all over this map/dataset/toolset this week.  The project was originally noted by its author former Google engineer Nelson Minar on his blog back in May. &quot;It’s mostly a demo project with readable source&quot; he noted May 21 on his blog,                         

	The map... &lt;a href=&quot;http://apb.directionsmag.com/entry/pretty-map-of-all-the-waterways-in-the-u.s.-from-public-data-and-open-/335775&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Wed, 19 Jun 2013 09:27:22 +0000</pubDate>
</item>
<item>
	<title>Directions Magazine: NASA’s IceBridge Mission Contributes to New Map of Antarctica</title>
	<guid isPermaLink="true">http://www.directionsmag.com/articles/nasas-icebridge-mission-contributes-to-new-map-of-antarctica/333480</guid>
	<link>http://www.directionsmag.com/articles/nasas-icebridge-mission-contributes-to-new-map-of-antarctica/333480</link>
	<description>A new dataset called Bedmap2 gives a clearer picture of Antarctica from the ice surface down to the bedrock below. Bedmap2 is a significant improvement on the previous collection of Antarctic data&amp;amp;mdash;known as Bedmap. The product was a result of work led by the British Antarctic Survey, where researchers compiled decades worth of geophysical measurements, such as surface elevation measurements from NASA's Ice, Cloud and Land Elevation Satellite, known as ICESat, and ice thickness data collected by Operation IceBridge.</description>
	<pubDate>Wed, 19 Jun 2013 06:40:36 +0000</pubDate>
</item>
<item>
	<title>geoMusings: GeoJSON on GitHub: Now What?</title>
	<guid isPermaLink="false">http://blog.geomusings.com/2013/06/18/geojson-on-github-now-what</guid>
	<link>http://blog.geomusings.com/2013/06/18/geojson-on-github-now-what/</link>
	<description>&lt;p&gt;So &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt; &lt;a href=&quot;https://github.com/blog/1528-there-s-a-map-for-that&quot;&gt;announced&lt;/a&gt; that you can now automatically view any &lt;a href=&quot;http://geojson.org&quot;&gt;GeoJSON&lt;/a&gt; files that may be in a repository inside an interactive map driven by &lt;a href=&quot;http://www.mapbox.com/&quot;&gt;MapBox&lt;/a&gt; technology. This simple enhancement to GitHub is probably one of the most significant developments in the geospatial industry in years. I’ll explain a little later in this post. It’s also important to view this new capability as a great, but limited, first step. I’ll discuss that a little later as well.&lt;/p&gt;

&lt;p&gt;While it’s cool to click on a link and just see a map, it doesn’t take long to wonder about how you can use this capability beyond viewing data in GitHub. What follows are three ways to capitalize on GeoJSON in GitHub. Not all are directly related to the new mapping capability, and two have been possible for a long time. That said, the GitHub announcement may draw interest from users who have not previously considered either GitHub or GeoJSON, so I hope these approaches will be useful.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Embed the GitHub map.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;If you click on a GeoJSON file and view the new map in GitHub, a quick view of the page source will show that this map is embedded in an IFRAME object. This approach can be used to embed the GitHub map in any page. It’s a great way to quickly publish a data set while also providing access to download the raw data.&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;Viewer requires iframe.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;Stream the data into your own web map.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;This is not a new capability; if you’ve had GeoJSON in a repo, you’ve always been able to do this. That said, if you’re checking out GitHub or GeoJSON for the first time as a result of the new mapping capability, this is something you may want to try. I have had a page up for a while showing the &lt;a href=&quot;http://blog.geomusings.com/assets/demos/mdq6/&quot;&gt;county-by-bounty breakdown of Maryland’s marriage equality question from the 2012 election&lt;/a&gt; that uses this approach to load the data into a &lt;a href=&quot;http://leafletjs.com/&quot;&gt;Leaflet&lt;/a&gt; map from GitHub and style it. (Incidentally, the tiles in the map are also hosted on GitHub.)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stream the data into your desktop.&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;A third option is to stream the GeoJSON data directly into desktop GIS software such as QGIS for further analysis. In QGIS, simply need to add a vector, specifying “Protocol” and entering the URL to your GitHub-hosted GeoJSON file. Make sure you use the “raw” URL that looks something like this: https://raw.github.com/geobabbler/geodata/master/geojson/leonardtown_bldgs.geojson .&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.geomusings.com/images/posts/add_geojson_layer.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After a few seconds (or more depending on the file size), it should load into QGIS like this:&lt;/p&gt;

&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://blog.geomusings.com/images/posts/qgis_github_geojson.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Additionally, the &lt;a href=&quot;https://github.com/RBURHUM/arcgis-ogr/&quot;&gt;GDAL/OGR plug-in for ArcGIS&lt;/a&gt; by &lt;a href=&quot;http://www.amigocloud.com/homepage/index.html&quot;&gt;AmigoCloud&lt;/a&gt; provides a way to get GeoJSON into ArcMap, though you may need to download the data first.&lt;/p&gt;

&lt;p&gt;UPDATE: Dane Springmeyer pointed out that TileMill supports remote URLs as well.&lt;/p&gt;

&lt;div class=&quot;embed tweet&quot;&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://twitter.com/geomusingsblog&quot;&gt;@geomusingsblog&lt;/a&gt; &lt;a href=&quot;https://twitter.com/billdollins&quot;&gt;@billdollins&lt;/a&gt; - very cool, had no idea QGIS supported remote urls. TileMill does also: &lt;a href=&quot;http://t.co/o3wxv2VkEv&quot;&gt;http://t.co/o3wxv2VkEv&lt;/a&gt;&lt;/p&gt;— Dane Springmeyer (@springmeyer) &lt;a href=&quot;https://twitter.com/springmeyer/statuses/347483526171594753&quot;&gt;June 19, 2013&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;


&lt;p&gt;Those are three (or so) quick ways to capitalize on GeoJSON data in GitHub now. So what next?&lt;/p&gt;

&lt;p&gt;I stated earlier that I think the GitHub announcement was one of the most significant developments in years. I think it is best explained by &lt;a href=&quot;http://feomike.github.io/post/thoughts-on-disruption.html&quot;&gt;feoMike in his recent post&lt;/a&gt;. As he points out, GitHub has made it easy to communicate spatial information in a way that is fully consistent with the web. Now that simple mapping is available to a large community of developers, it will be interesting to see where they take it. feoMike offered up a few early examples in his post. It’s worth a read.&lt;/p&gt;

&lt;p&gt;The GitHub move is great for GeoJSON as a format. I’ve said in the past that the search for the next shapefile ends with GeoJSON. If the web is this generation’s dominant computing platform (it is), then GeoJSON provides a simple, elegant solution for geographic data transport in a manner that the shapefile did for the desktop. Support by GitHub is one more example of the community voting with its code as to what it prefers.&lt;/p&gt;

&lt;p&gt;I also said it was a great first step, but limited. The mapping capability is understandably basic, though the documentation shows how you can customize styling somewhat. There is also a point at which the data seems to become too big to render (in either the map or in raw form). Bill Morris has identified this limit to be in the ballpark of 4.5MB, which can be easy to hit with GeoJSON.&lt;/p&gt;

&lt;div class=&quot;embed tweet&quot;&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p&gt;&lt;a href=&quot;https://twitter.com/byrne_tweets&quot;&gt;@byrne_tweets&lt;/a&gt; &lt;a href=&quot;https://twitter.com/BenBalter&quot;&gt;@BenBalter&lt;/a&gt; &lt;a href=&quot;https://twitter.com/ericg&quot;&gt;@ericg&lt;/a&gt; &lt;a href=&quot;https://twitter.com/ajturner&quot;&gt;@ajturner&lt;/a&gt; +1 for a solid number on max renderable filesize. 4.5MB is pushing it: &lt;a href=&quot;https://t.co/cNTbA5Djqw&quot;&gt;https://t.co/cNTbA5Djqw&lt;/a&gt;&lt;/p&gt;— Bill Morris (@vtcraghead) &lt;a href=&quot;https://twitter.com/vtcraghead/statuses/346825523521019904&quot;&gt;June 18, 2013&lt;/a&gt;&lt;/blockquote&gt;
&lt;/div&gt;


&lt;p&gt;So this means that enterprises won’t be dumping terabytes of vectors to GeoJSON and loading them into GitHub. That’s a good thing in my book. It is, however, an acceptable solution for small data sets and quick turn-around data sharing. As with all things, you have to go in with the right set of expectations.&lt;/p&gt;

&lt;p&gt;The thing I’m probably least worried about is how this affects &lt;a href=&quot;http://www.esri.com&quot;&gt;Esri&lt;/a&gt;. Without any specific inside knowledge of Esri’s plans, I suspect some form of official support for GeoJSON isn’t far off. There are too many people inside Esri who get GeoJSON for it not to happen. If anything, the GitHub announcement may provide a bit of a push by providing a potentially rich source of data sets to consume. The real question is what form the support will take. In any event, Esri provides enough APIs to enable us to develop our own support for GeoJSON if we need it.&lt;/p&gt;

&lt;p&gt;The addition of GeoJSON mapping to GitHub is a very small change in the scheme of that platform, but such small changes can sometimes lead to big shifts. It has been possible for a long time to use GitHub to host geospatial data for applications. The main benefit of this latest change, in my opinion, is its potential to get people thinking about the platform in a different way. With such a visible (and visual) change on a platform targeted at developers, I hope that it will motivate that community to begin experimenting with how far it can be pushed. If a hosted platform with an already-baked-in workflow for change management and version control begins to be viewed as a viable home for spatial data, it has the potential to change how the geospatial community thinks about how it does business.&lt;/p&gt;</description>
	<pubDate>Tue, 18 Jun 2013 20:04:00 +0000</pubDate>
</item>
<item>
	<title>Between the Poles: Increased urbanization is creating megaregions</title>
	<guid isPermaLink="false">tag:typepad.com,2003:post-6a00d83476d35153ef0192ab44c78b970d</guid>
	<link>http://feedproxy.google.com/~r/typepad/zeissg/geospatial/~3/W7Xk8yuXqfw/megaregions.html</link>
	<description>&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0192ab44e3f3970d-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;Delhi Mumbai Industrial Corridor dmic-new-map&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef0192ab44e3f3970d&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0192ab44e3f3970d-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;Delhi Mumbai Industrial Corridor dmic-new-map&quot; /&gt;&lt;/a&gt;I've &lt;a href=&quot;http://geospatial.blogs.com/geospatial/2012/10/asian-initiatives-in-electric-power-renewables-smart-grid-energy-efficient-buildings-and-smart-citie.html&quot; target=&quot;_self&quot;&gt;blogged&lt;/a&gt; about the Delhi Mumbai Industrial Corridor, (DMIC) a huge US$ 90 billion project 1,483 km in length linking Delhi and Mumbai.   The objective of the DMIC is to create a base for economic development by providing  access to the best state-of-the-art infrastructure. This project includes nine large Industrial zones of about 200-250 km&lt;sup&gt;2&lt;/sup&gt;., a high speed freight line, three ports, six airports and a 4000 MW power plant.  An influence region of 150 km on either side of the freight line comprises the DMIC.  It strikes me that what is being created is a megaregion, a concept that is getting a lot of attention in the United States,&lt;/p&gt;
&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0192ab44cfbb970d-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;Megaregion US BNDOTQ_CQAAJnxb.jpg large&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef0192ab44cfbb970d&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0192ab44cfbb970d-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;Megaregion US BNDOTQ_CQAAJnxb.jpg large&quot; /&gt;&lt;/a&gt;A &lt;a href=&quot;http://www.america2050.org/megaregions.html&quot; target=&quot;_self&quot;&gt;megaregion&lt;/a&gt; is a new scale of geography that blurs the traditional boudaries between metropolitan regions, like what the DMIIC is doing with respect to Mumbai, Delhi and other smaller cities.  These population centers include Interlocking economic systems, shared natural resources and ecosystems, and common transportation systems. Population growth and increasing urbanization are the driving forces behind megaregions. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.america2050.org/megaregions.html&quot; target=&quot;_self&quot;&gt;America2050&lt;/a&gt; has defined 11 megaregions in the United States.  Megaregions are defined by relationships that define a common interest..  According to Amerca2500 the five major categories of relationships that define megaregions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Environmental systems and topography&lt;/li&gt;
&lt;li&gt; Infrastructure systems&lt;/li&gt;
&lt;li&gt;Economic linkages&lt;/li&gt;
&lt;li&gt;Settlement patterns and land use&lt;/li&gt;
&lt;li&gt;Shared culture and history&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Most of a country's rapid population growth and economic expansion is expected to occur in these megaregions.&lt;/p&gt;
&lt;p&gt;These aggregations are so large that they need to be modeled and managed as smart cities.  For example, the Delhi Mumbai Industrial Corridor (DMIC) is intended to be comprised of &lt;a href=&quot;http://articles.timesofindia.indiatimes.com/2011-01-15/india/28364347_1_delhi-mumbai-industrial-corridor-dmic-development-corporation-industrial-hubs&quot; target=&quot;_self&quot;&gt;seven smart cities&lt;/a&gt;.  According to &lt;a href=&quot;http://www.urenio.org/2012/09/13/indias-ambitious-plans-for-7-new-smart-cities-across-the-delhi-mumbai-industrial-corridor/&quot; target=&quot;_self&quot;&gt;URENIO&lt;/a&gt; these smart cities are compact, vertical developments.  They use digital technology to create smart grids for better management of civic infrastructure.  They have an efficient public transportation system.  They recycle sewage water for industrial use.  Green spaces, cycle tracks and easy accessibility to goods, services and activities are designed to foster a sense of community..  They have underground utility corridors for parking, sewage disposal and communication lines.  Public transport is available within a 10-minute walk from home or office.&lt;/p&gt;</description>
	<pubDate>Tue, 18 Jun 2013 16:27:02 +0000</pubDate>
</item>
<item>
	<title>GIS Lounge: Mapping Antarctica’s Bedrock with Bedmap2</title>
	<guid isPermaLink="false">http://www.gislounge.com/?p=15684</guid>
	<link>http://www.gislounge.com/mapping-antarcticas-bedrock-with-bedmap2/</link>
	<description>&lt;p&gt;The map, called Bedmap2, provides a detailed look at Antarctica from its surface of ice all the way down to the bedrock. The map was compiled by the British Antarctic Survey using data from other research organizations around the globe including NASA&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.gislounge.com/mapping-antarcticas-bedrock-with-bedmap2/&quot;&gt;Mapping Antarctica’s Bedrock with Bedmap2&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.gislounge.com&quot;&gt;GIS Lounge&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Tue, 18 Jun 2013 15:22:57 +0000</pubDate>
</item>
<item>
	<title>Bing Maps Blog: How To Load Spatial Data From SQLite In A Windows Store App</title>
	<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6834e62b-b816-4755-be57-d916f491ae0a</guid>
	<link>http://www.bing.com/blogs/site_blogs/b/maps/archive/2013/06/18/how-to-load-spatial-data-from-sqlite-in-a-windows-store-app.aspx</link>
	<description>&lt;p&gt;Sometimes it can be helpful to hold geospatial data locally and to distribute it with the application. In this example, we will use SQLite to store geospatial information and visualize it as a layer in the Bing Maps Control for Windows Store Apps.  &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; is a software library that implements a self-contained, server-less, zero-configuration, transactional SQL database engine.  &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Preparing the Data&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For this example we will be using trails which we retrieved from the &lt;a href=&quot;http://www5.kingcounty.gov/gisdataportal/&quot; target=&quot;_blank&quot;&gt;King County GIS Data Portal&lt;/a&gt;. This data is available in Esri Shapefile format with coordinates in the North American Datum 1983 (NAD83) system. I converted them into a SQLite database with coordinates described as latitudes and longitudes with decimal degrees in the World Geodetic System 1984 (GS84) using the &lt;a href=&quot;http://www.gdal.org/ogr2ogr.html&quot; target=&quot;_blank&quot;&gt;ogr2ogr&lt;/a&gt; command-line tool from Geospatial Data Abstraction Library (GDAL). The command for this conversion is:  &lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;ogr2ogr.exe -f sqlite -lco FORMAT=WKT &quot;D:\Downloads\GeoData\King County\trail_SHP\trail.db&quot; 
&quot;D:\Downloads\GeoData\King County\trail_SHP\trail.shp&quot; -t_srs EPSG:4326&lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Since we are developing a Windows Store App, we need access to a Windows 8 machine as well as Visual Studio 2012. A free version of Visual Studio Express 2012 for Windows 8 is available &lt;a href=&quot;http://msdn.microsoft.com/en-US/windows/apps/br229516&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. 
&lt;/p&gt;&lt;p&gt;For this project we require the “Bing Maps SDK for Windows Store Apps” as well as “SQLite for Windows Runtime” you can install both from Visual Studio 2012 by selecting “Extensions and Updates” from the menu “Tools” and searching for the respective SDKs in the online gallery. 
&lt;/p&gt;&lt;p&gt;We will also require a Bing Maps Key. If you don’t have one yet, you can follow the &lt;a href=&quot;http://www.microsoft.com/maps/create-a-bing-maps-key.aspx&quot; target=&quot;_blank&quot;&gt;instructions&lt;/a&gt; to get a free trial or basic key. 
&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Preparing the Project&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Let’s start by creating a new project using the blank Visual C# template for Windows Store Apps. 
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/BlankVisualCSharpTemplateWindowsStoreApps_5F00_3EB2D362.png&quot;&gt;&lt;img alt=&quot;BlankVisualCSharpTemplateWindowsStoreApps&quot; border=&quot;0&quot; height=&quot;552&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/BlankVisualCSharpTemplateWindowsStoreApps_5F00_thumb_5F00_20A49FA1.png&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;BlankVisualCSharpTemplateWindowsStoreApps&quot; width=&quot;904&quot; /&gt;&lt;/a&gt; 
&lt;/p&gt;&lt;p&gt;Next we add references to the Bing Maps SDK, the Visual C++ Runtime and SQLite. 
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ReferenceManagerSQLite_5F00_Blog_5F00_5A1789CB.png&quot;&gt;&lt;img alt=&quot;ReferenceManager-SQLite_Blog&quot; border=&quot;0&quot; height=&quot;623&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ReferenceManagerSQLite_5F00_Blog_5F00_thumb_5F00_45EE4775.png&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;ReferenceManager-SQLite_Blog&quot; width=&quot;904&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;The Bing Maps SDK requires that we compile separately for each processor architecture. So we need to open the “Configuration Manager” and change the platform from “Any CPU” to a specific one – here “x64”. 
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ConfigurationManager_5F00_4B4C924C.png&quot;&gt;&lt;img alt=&quot;ConfigurationManager&quot; border=&quot;0&quot; height=&quot;570&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ConfigurationManager_5F00_thumb_5F00_33D1DE1B.png&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;ConfigurationManager&quot; width=&quot;904&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;We also require the “sqlite-net” library and we can add this from NuGet by opening the menu “Tools” &lt;strong&gt;→&lt;/strong&gt; “Library Package Manager” &lt;strong&gt;→&lt;/strong&gt; “Manage NuGet Packages for Solution” and searching for “sqlite-net”.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ManageNuGetPackages_5F00_36B71D01.png&quot;&gt;&lt;img alt=&quot;ManageNuGetPackages&quot; border=&quot;0&quot; height=&quot;604&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/ManageNuGetPackages_5F00_thumb_5F00_43151A5D.png&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;ManageNuGetPackages&quot; width=&quot;904&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Finally we add the SQLite database trail.db to the folder “Assets” of the project, set the property “Build Action” to “Content” and “Copy to Output Directory” to “Copy if Newer”. 
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/SolutionExplorer_5F00_5C3260A1.png&quot;&gt;&lt;img alt=&quot;SolutionExplorer&quot; border=&quot;0&quot; height=&quot;508&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/SolutionExplorer_5F00_thumb_5F00_7455CAFC.png&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;SolutionExplorer&quot; width=&quot;279&quot; /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Adding the Application Markup&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Now that our project is prepared, we open the MainPage.xaml add the namespace for the Bing Maps control and define the user interface. In the user interface, we load Bing Maps centered to a location in King County at zoom-level 13 and specify that we want to display the aerial imagery. 
&lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Page&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;x&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;Class&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;SQLite_Blog.MainPage&quot;&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;xmlns&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;xmlns&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;x&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;xmlns&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;local&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;using:SQLite_Blog&quot;&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;xmlns&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;d&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;xmlns&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;mc&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot; 
&lt;/font&gt;   &lt;font color=&quot;#ff0000&quot;&gt;xmlns&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;bm&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;using:Bing.Maps&quot;&lt;/font&gt; 
   &lt;font color=&quot;#ff0000&quot;&gt;mc&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;Ignorable&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;d&quot;&amp;gt;&lt;/font&gt; &lt;/pre&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Grid&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;Background&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;{&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;StaticResource&lt;/font&gt;  &lt;font color=&quot;#ff0000&quot;&gt;ApplicationPageBackgroundThemeBrush&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;}&quot;&amp;gt;&lt;/font&gt; 
	&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Grid.RowDefinitions&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; 
		&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;RowDefinition&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;Height&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;140&quot;/&amp;gt;&lt;/font&gt; 
		&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;RowDefinition&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;Height&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;*&quot;/&amp;gt; &lt;/font&gt;
		&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;RowDefinition&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;Height&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;Auto&quot;/&amp;gt;&lt;/font&gt; 
	&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Grid.RowDefinitions&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; &lt;/pre&gt;&lt;pre&gt;   &lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;TextBlock&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;x&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;Name&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;pageTitle&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;Text&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;WinRT and Spatial Data  from SQLite&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;IsHitTestVisible&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;false&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;Style&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;{&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;StaticResource&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;PageHeaderTextStyle&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;}&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;VerticalAlignment&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;Center&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;Margin&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;30,0,30,40&quot;/&amp;gt;&lt;/font&gt; &lt;/pre&gt;&lt;pre&gt;   &lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;bm&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Map&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;x&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;Name&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;myMap&quot;&lt;/font&gt; 
   		&lt;font color=&quot;#ff0000&quot;&gt;Grid.Row&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;1&quot;&lt;/font&gt; 
   		&lt;font color=&quot;#ff0000&quot;&gt;MapType&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;Aerial&quot;&lt;/font&gt; 
   		&lt;font color=&quot;#ff0000&quot;&gt;ZoomLevel&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;13&quot;&lt;/font&gt; 
   		&lt;font color=&quot;#ff0000&quot;&gt;Credentials&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;Your_Bing_Maps_Key&quot;&amp;gt;&lt;/font&gt; 
		&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;bm&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;Map.Center&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; 
			&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;bm&lt;/font&gt;:&lt;font color=&quot;#800000&quot;&gt;Location&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;Latitude&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;47.702894&quot;&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;Longitude&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;-122.054860&quot; /&amp;gt;&lt;/font&gt; 
		&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;bm&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Map.Center&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; 
	&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;bm&lt;/font&gt;:&lt;font color=&quot;#800000&quot;&gt;Map&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; &lt;/pre&gt;&lt;pre&gt;   &lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;TextBlock&lt;/font&gt; &lt;font color=&quot;#ff0000&quot;&gt;x&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;:&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;Name&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;myAttribution&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;Text&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;Data provided by  permission of King County&quot;&lt;/font&gt; 
   		   &lt;font color=&quot;#ff0000&quot;&gt;Grid.Row&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;=&quot;2&quot;/&amp;gt;&lt;/font&gt; 
 &lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Grid&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; 
&lt;font color=&quot;#0000ff&quot;&gt;&amp;lt;/&lt;/font&gt;&lt;font color=&quot;#800000&quot;&gt;Page&lt;/font&gt;&lt;font color=&quot;#0000ff&quot;&gt;&amp;gt;&lt;/font&gt; &lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Adding the Code-Behind&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the code-file MainPage.xaml.cs we define a class that describes the SQLite table. &lt;/p&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;public class trail&lt;/font&gt; 
{
&lt;font color=&quot;#0000ff&quot;&gt;    public string &lt;/font&gt;&lt;font color=&quot;#000000&quot;&gt;OGC_FID&lt;/font&gt; { &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;; &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
   &lt;font color=&quot;#0000ff&quot;&gt; public string&lt;/font&gt; WKT_GEOMETRY { &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;; &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
  &lt;font color=&quot;#0000ff&quot;&gt;  public string&lt;/font&gt; kc_fac_fid {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; trail_name {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; trail_type {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; surf_type {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; sitefacfid {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; sitename {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; sitetype {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; owner {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; ownertype {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; manager {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; managertype {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; maintd_by {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
    &lt;font color=&quot;#0000ff&quot;&gt;public string&lt;/font&gt; mainttype {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
   &lt;font color=&quot;#0000ff&quot;&gt; public string&lt;/font&gt; shape_len {  &lt;font color=&quot;#0000ff&quot;&gt;get&lt;/font&gt;;  &lt;font color=&quot;#0000ff&quot;&gt;set&lt;/font&gt;; }
 }&lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;For the class that will actually read the data and display it on the map, we import three libraries: 
&lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;using&lt;/font&gt; Bing.Maps;
&lt;font color=&quot;#0000ff&quot;&gt;using&lt;/font&gt; Windows.Storage;
&lt;font color=&quot;#0000ff&quot;&gt;using&lt;/font&gt; Windows.UI.Popups; 
&lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The class that reads the trail-database copies it first in the local application directory. It creates a MapShapeLayer, reads through the table-records and adds the records for the trails to the layer before it adds the entire layer to the map. 
&lt;/p&gt;&lt;p&gt;One point to call out here is that the data is stored as Well Known Text (WKT) in SQLite. The WKT has the coordinates in the order Longitude and then Latitude while Bing Maps expects them in the order Latitude and then Longitude. So we have to swap the order of the coordinates. 
&lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;public async void&lt;/font&gt; GetTrails()
{
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; uri = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;Uri&lt;/font&gt;(&lt;font color=&quot;#800000&quot;&gt;&quot;ms-appx:///Assets/trail.db&quot;&lt;/font&gt;); 
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; file = &lt;font color=&quot;#0000ff&quot;&gt;await&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;StorageFile&lt;/font&gt;.GetFileFromApplicationUriAsync(uri);&lt;/pre&gt;&lt;pre&gt; &lt;font color=&quot;#0000ff&quot;&gt;  var&lt;/font&gt; destinationFolder = &lt;font color=&quot;#008080&quot;&gt;ApplicationData&lt;/font&gt;.Current.LocalFolder;&lt;font color=&quot;#008000&quot;&gt;//local appdata dir&lt;/font&gt; 
   try 
   {
   &lt;font color=&quot;#0000ff&quot;&gt;await&lt;/font&gt;  file.CopyAsync(destinationFolder); &lt;font color=&quot;#008000&quot;&gt;//copied application local folder}}&lt;/font&gt; 
   }
   &lt;font color=&quot;#0000ff&quot;&gt;catch&lt;/font&gt; { }
   
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; dbpath = &lt;font color=&quot;#008080&quot;&gt;Path&lt;/font&gt;.Combine(Windows.Storage.&lt;font color=&quot;#008080&quot;&gt;ApplicationData&lt;/font&gt;.Current.LocalFolder.Path, &lt;font color=&quot;#800000&quot;&gt;&quot;trail.db&quot;&lt;/font&gt;);
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; db = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; SQLite.&lt;font color=&quot;#008080&quot;&gt;SQLiteConnection&lt;/font&gt;(dbpath);
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; trails = db.Table&amp;lt;&lt;font color=&quot;#008080&quot;&gt;trail&lt;/font&gt;&amp;gt;();&lt;/pre&gt;&lt;pre&gt;  &lt;font color=&quot;#008080&quot;&gt; MapShapeLayer &lt;/font&gt; shapeLayer = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt;&lt;font color=&quot;#008080&quot;&gt;MapShapeLayer&lt;/font&gt;();
   &lt;font color=&quot;#0000ff&quot;&gt;int&lt;/font&gt; numLocs = 0;
   &lt;font color=&quot;#0000ff&quot;&gt;int &lt;/font&gt;numTrails = 0;&lt;/pre&gt;
&lt;pre&gt;   &lt;font color=&quot;#0000ff&quot;&gt;foreach&lt;/font&gt; (&lt;font color=&quot;#008080&quot;&gt;trail&lt;/font&gt; thisTrail &lt;font color=&quot;#0000ff&quot;&gt;in&lt;/font&gt; trails)
   {
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; wkt =  thisTrail.WKT_GEOMETRY.Replace(&lt;font color=&quot;#800000&quot;&gt;&quot;LINESTRING  (&quot;&lt;/font&gt; , &lt;font color=&quot;#800000&quot;&gt;&quot;&quot;&lt;/font&gt;).Replace(&lt;font color=&quot;#800000&quot;&gt;&quot;)&quot;&lt;/font&gt;, &lt;font color=&quot;#800000&quot;&gt;&quot;&quot;&lt;/font&gt;);
   &lt;font color=&quot;#0000ff&quot;&gt;string&lt;/font&gt;[] wktArray = wkt.Split(&lt;font color=&quot;#800000&quot;&gt;','&lt;/font&gt;);
   &lt;font color=&quot;#008080&quot;&gt;LocationCollection &lt;/font&gt;bmPolylineLocs = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;LocationCollection&lt;/font&gt;();
   &lt;font color=&quot;#0000ff&quot;&gt;for&lt;/font&gt; (&lt;font color=&quot;#0000ff&quot;&gt;var &lt;/font&gt;i = 0; i &amp;lt;  wktArray.Length; i++)
   {
  &lt;font color=&quot;#0000ff&quot;&gt; var&lt;/font&gt; loc = wktArray[i];
   &lt;font color=&quot;#0000ff&quot;&gt;var&lt;/font&gt; locArray = loc.Split(&lt;font color=&quot;#800000&quot;&gt;' '&lt;/font&gt;);
   bmPolylineLocs.Add(&lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; Location(Convert.ToDouble(locArray[1]), 
   Convert.ToDouble(locArray[0])));
   numLocs  = numLocs + 1;
   }&lt;/pre&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;pre&gt;   &lt;font color=&quot;#008080&quot;&gt;MapPolyline&lt;/font&gt; bmPolyline = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;MapPolyline&lt;/font&gt;();
   bmPolyline.Locations = bmPolylineLocs;
   bmPolyline.Color = Windows.UI.&lt;font color=&quot;#008080&quot;&gt;Colors&lt;/font&gt;.Red;
   bmPolyline.Width = 5;
   shapeLayer.Shapes.Add(bmPolyline);
   numTrails  = numTrails + 1;
  }&lt;/pre&gt;&lt;pre&gt;  myMap.ShapeLayers.Add(shapeLayer);&lt;/pre&gt;&lt;pre&gt;  &lt;font color=&quot;#0000ff&quot;&gt;var &lt;/font&gt;myMsg = &lt;font color=&quot;#0000ff&quot;&gt;new&lt;/font&gt; &lt;font color=&quot;#008080&quot;&gt;MessageDialog&lt;/font&gt;(&lt;font color=&quot;#800000&quot;&gt;&quot;Loaded &quot;&lt;/font&gt; + numTrails.ToString() + 
   &lt;font color=&quot;#800000&quot;&gt;&quot; with &quot;&lt;/font&gt; + numLocs.ToString() + 
   &lt;font color=&quot;#800000&quot;&gt;&quot; locations&quot;&lt;/font&gt; );
   &lt;font color=&quot;#0000ff&quot;&gt;await&lt;/font&gt; myMsg.ShowAsync(); 
}&lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Finally we add a call to this new class right after we initialize the app. 
&lt;/p&gt;&lt;div id=&quot;codeSnippetWrapper&quot;&gt;&lt;pre id=&quot;codeSnippet&quot; style=&quot;border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; background-color: #f4f4f4; margin: 0em; border-left-style: none; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; direction: ltr; border-top-style: none; color: black; border-right-style: none; font-size: 8pt; overflow: visible; padding-top: 0px;&quot;&gt;&lt;pre&gt;&lt;font color=&quot;#0000ff&quot;&gt;public&lt;/font&gt; MainPage()
{
  &lt;font color=&quot;#0000ff&quot;&gt;this&lt;/font&gt;.InitializeComponent();&lt;/pre&gt;&lt;pre&gt;  GetTrails();
} &lt;/pre&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And that’s it. Below you see a screenshot of the trails in King County on top of Bing Maps. 
&lt;/p&gt;&lt;p&gt;Happy Coding! &lt;font size=&quot;4&quot;&gt;☺&lt;/font&gt; 
&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/WinRTSpatialDataSQLite_5F00_14DB1EA3.png&quot;&gt;&lt;img alt=&quot;WinRTSpatialDataSQLite&quot; border=&quot;0&quot; height=&quot;510&quot; src=&quot;http://bingcommunity.search.live.net/blogs/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-54-35-metablogapi/WinRTSpatialDataSQLite_5F00_thumb_5F00_247A680D.png&quot; style=&quot;border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto;&quot; title=&quot;WinRTSpatialDataSQLite&quot; width=&quot;904&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://www.bing.com/blogs/aggbug.aspx?PostID=9693527&amp;amp;AppID=5435&amp;amp;AppType=Weblog&amp;amp;ContentType=0&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 18 Jun 2013 15:18:15 +0000</pubDate>
        <enclosure url="http://www.bing.com/blogs/cfs-file.ashx/__key/telligent-evolution-components-attachments/01-5435-00-00-09-69-35-27/WinRTSpatialDataSQLite.png" length="114706" type="image/png"/>
</item>
<item>
	<title>GeoDestinations: Web and Mobile Technologies</title>
	<guid isPermaLink="true">http://www.geodecisions.com/Blog/tabid/267/EntryId/36/Web-and-Mobile-Technologies.aspx</guid>
	<link>http://www.geodecisions.com/Blog/tabid/267/EntryId/36/Web-and-Mobile-Technologies.aspx</link>
	<description>&lt;p&gt;&lt;b&gt;By &lt;a class=&quot;ApplyClass&quot; href=&quot;http://www.geodecisions.commailto:slakshmanan@geodecisions.com?subject=Blog post&quot;&gt;Shankar Lakshmanan&lt;/a&gt;, &lt;/b&gt;&lt;b&gt;GIS Software Developer&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;The Snow*Mobile conference was held earlier this year in Madison, Wis. There were interesting presentations on how various web and mobile technologies are helping and empowering people. Here are outlines of a few talks that stood out to me as interesting and informative.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;div class=&quot;tags&quot;&gt;Tags: web,SDK,Moovweb,RubyMotion&lt;/div&gt;&lt;div class=&quot;category&quot;&gt;Category: &lt;a href=&quot;http://www.geodecisions.com/Blog/tabid/267/CatID/4/Default.aspx&quot;&gt;Enterprise GIS&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;category&quot;&gt;Category: &lt;a href=&quot;http://www.geodecisions.com/Blog/tabid/267/CatID/6/Default.aspx&quot;&gt;Mobile Technology&lt;/a&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 18 Jun 2013 15:18:00 +0000</pubDate>
</item>
<item>
	<title>AnyGeo: New Yorker Mapping the Craft Beer Industry</title>
	<guid isPermaLink="false">http://blog.gisuser.com/?p=12815</guid>
	<link>http://blog.gisuser.com/2013/06/18/new-yorker-mapping-the-craft-beer-industry/</link>
	<description>Kudos to The New Yorker for recently looking at the rise of the craft beer industry. The craft beer (micro-brew) industry is soaring in popularity and stats now show that these tasty little breweries are really starting to tap into … &lt;a href=&quot;http://blog.gisuser.com/2013/06/18/new-yorker-mapping-the-craft-beer-industry/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Tue, 18 Jun 2013 15:13:32 +0000</pubDate>
</item>
<item>
	<title>LiDAR News: Visualization and Management of LiDAR Data</title>
	<guid isPermaLink="false">http://blog.lidarnews.com/?p=11687</guid>
	<link>http://feedproxy.google.com/~r/InTheScan/~3/ZsfR9_OoYes/visualization-and-management-of-lidar-data</link>
	<description>This is Lesson 3 in the Basics of using LiDAR Data series sponsored by the University of Minnesota Water Resources Center.  Continue reading →&lt;br /&gt;
&lt;br /&gt;
Click Title to Continue Reading...&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/InTheScan/~4/ZsfR9_OoYes&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Tue, 18 Jun 2013 14:17:31 +0000</pubDate>
</item>
<item>
	<title>GeoSolutions' Blog: Meet GeoSolutions at the INSPIRE Conference 2013 in Florence!</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-5176900881057973693.post-6844847215812490952</guid>
	<link>http://geo-solutions.blogspot.com/2013/06/inspire2013.html</link>
	<description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://www.geo-solutions.it/&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;400&quot; src=&quot;http://www.qualitytravel.it/newsite/wp-content/uploads/2012/07/logo-INSPIRE-Conference-2013.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Dear All,&lt;br /&gt;&lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;we&lt;/a&gt; are proud to announce that &lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;GeoSolutions&lt;/a&gt;&lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/#gallery&quot;&gt; is sponsoring&lt;/a&gt; the INSPIRE Conference 2013 which we'll be held in Florence from Sunday 23rd to Thursday 27th June (you can get more information at &lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/&quot;&gt;this link&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;GeoSolutions&lt;/a&gt; will be present with its own booth therefore we'll be happy to talk to you about &lt;a href=&quot;http://www.geo-solutions.it/services/&quot;&gt;our open source products&lt;/a&gt;, like &lt;a href=&quot;http://geoserver.geo-solutions.it/&quot;&gt;GeoServer&lt;/a&gt; and &lt;a href=&quot;http://mapstore.geo-solutions.it/&quot;&gt;Mapstore&lt;/a&gt;, as well as about our&lt;a href=&quot;http://opensdi.geo-solutions.it/&quot;&gt; Enterprise Support Services&lt;/a&gt;. Moreover, looking at the &lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/index.cfm/page/timetable&quot;&gt;program&lt;/a&gt;, we would like to remind you that we are also giving 2 workshops about our products:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/index.cfm/page/ws#ppp_1_2_1&quot;&gt;Hands - On Introduction To Create Mash - Ups For INSPIRE Services With MapStore&lt;/a&gt;&lt;/b&gt;, Sunday, the 23th at 11:00 A.M. &lt;i&gt;The workshop will provide users with the basic knowledge to install, administer and proficiently use MapStore in order to create and share mashups that fuse contents served by existing services with a particular focus on INSPIRE View and Download services.&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/index.cfm/page/ws#ppp_2_3_1&quot;&gt;Hands-on Introduction to creating INSPIRE services with GeoServer&lt;/a&gt;&lt;/b&gt;, Monday, the 24th at 02:00 P.M. &lt;i&gt;The workshop will provide a hands on introduction to the GeoServer usage and configuration with particular emphasis on INSPIRE compatibility&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;and also 2 presentations where solutions developed by &lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;GeoSolutions&lt;/a&gt; and its partners will be discussed. Here  is the list of presentations with basic information extracted from the program:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;&lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/schedule/submissions/196.html&quot;&gt;Opendata and INSPIRE With GeoServer , Geonetwork and Mapstore: Lessons Learned From Real - World Use Cases&lt;/a&gt;&lt;/b&gt;, Thursday, the 27th at 02:40 P.M. &lt;i&gt;This presentation will report the first-hand experience of implementing and managing SDIs adhering to the INSPIRE technical guidelines to support the demand for OpenData employing well-known Open Source components like GeoServer, GeoNetwork and MapStore. Eventually, we will provide our perspective on benefits as well as shortcomings of the INSPIRE initiative with respect to creating SDI infrastructures suitable for OpenData dissemination. &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://inspire.jrc.ec.europa.eu/events/conferences/inspire_2013/schedule/submissions/148.html&quot; style=&quot;font-weight: bold;&quot;&gt;Destination, an Integrated Solution to Monitor Hazardous Materials Transport Assuring Human and Environmental Protection&lt;/a&gt;, Tuesday, the 25th at 4:40 P.M. &lt;i&gt;DESTINATION (DangErous tranSport To New prevenTive Instruments) is a project developed in the framework of Italy/Switzerland Operational Programme for Trans-frontier Cooperation 2007-2013, in order to contribute to inter-regional road accident prevention, real-time monitoring of Dangerous Goods Transportation (DGT) and more efficient emergency management. Partnership includes Regione Piemonte as project leader, Canton Ticino, Regione Lombardia, Regione Autonoma della Valle d’Aosta and Provincia Autonoma di Bolzano. DESTINATION initiative is focused on implementation of a shared information system including environmental, territorial and technical data relevant to meet local authorities and private stakeholders needs&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;If you are interested in learning about how we can help you achieving your goals with our Open Source products and professionale services, make sure to visit us at our booth &lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The &lt;b&gt;&lt;a href=&quot;http://www.geo-solutions.it/&quot;&gt;GeoSolutions&lt;/a&gt; &lt;/b&gt;team,&lt;br /&gt;&lt;div&gt;&lt;a href=&quot;http://geoserver.geo-solutions.it/&quot;&gt;&lt;img height=&quot;100&quot; src=&quot;http://3.bp.blogspot.com/-R02e58OvFdQ/TyEp4bW2iGI/AAAAAAAABH8/e8s7dTmv_S0/s320/800x250_eng.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;</description>
	<pubDate>Tue, 18 Jun 2013 13:46:50 +0000</pubDate>
	<author>noreply@blogger.com (Simone Giannecchini)</author>
</item>
<item>
	<title>geomobLDN: Summer #geomob - 11 July 2013 at Google Campus</title>
	<guid isPermaLink="true">http://geomobldn.org/post/53273250477</guid>
	<link>http://geomobldn.org/post/53273250477</link>
	<description>&lt;p&gt;Fellow geomobsters,&lt;/p&gt;
&lt;p&gt;I’m pleased to announce a great lineup for this summer’s event which will be held at 18:30 on Thursday the 11th of July. We’re very thankful to Google for once again hosting us at their &lt;a href=&quot;http://www.campuslondon.com/&quot;&gt;Old Street Campus&lt;/a&gt;. We’re lucky to have five great speakers this time so we’ll try to kick off promptly. Please be on time.&lt;/p&gt;
&lt;p&gt;The evening’s agenda. &lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://twitter.com/veltman&quot;&gt;Noah Veltman&lt;/a&gt; will start us off talking about his &lt;a href=&quot;http://sfstreets.noahveltman.com/&quot;&gt;SF Placenames&lt;/a&gt; project. &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://twitter.com/darksmo&quot;&gt;Savio Dimatteo&lt;/a&gt; will take us through some of &lt;a href=&quot;http://www.nestoria.com/&quot;&gt;Nestoria&lt;/a&gt;’s geocoding challenges. &lt;/li&gt;
&lt;li&gt;Relatedly, &lt;a href=&quot;http://www.mjt.me.uk/&quot;&gt;Michael Tandy&lt;/a&gt; will talk to us about falsehoods programmers believe about addresses.&lt;/li&gt;
&lt;li&gt;Someone from the &lt;a href=&quot;http://www.mapsdata.co.uk/&quot;&gt;MapsData&lt;/a&gt; team will be showing off their service.&lt;/li&gt;
&lt;li&gt;And we’ll close with what is sure to be an impressive demo from the &lt;a href=&quot;http://vizicities.com&quot;&gt;ViziCities&lt;/a&gt; team. &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Many thanks to all the speakers.&lt;/p&gt;
&lt;p&gt;As per long standing #geomob tradition the talks will be followed by a visit to a local pub where the geobeers will generously be provided by sponsors &lt;a href=&quot;http://www.opencagedata.com/&quot;&gt;OpenCage Data&lt;/a&gt; and &lt;a href=&quot;http://knowwhereconsulting.co.uk/&quot;&gt;knowwhere consulting&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;As always, if you can join us please &lt;a href=&quot;http://lanyrd.com/2013/geomob-july/&quot;&gt;sign up via the Lanyrd page&lt;/a&gt; for the event so we can get an estimate of numbers. You’ll also find a map to the venue on that page. &lt;/p&gt;
&lt;p&gt;We look forward to seeing everyone on the 11th. &lt;/p&gt;
&lt;p&gt;Finally, due to all the action around &lt;a href=&quot;http://www.maptember.org/&quot;&gt;#maptember&lt;/a&gt;, our autumn event won’t be until October. More details to follow here and via &lt;a href=&quot;https://twitter.com/geomob&quot;&gt;our twitter feed&lt;/a&gt; (you do follow us, right?). If you would like to speak or if you know of anyone who should speak, please get in touch. &lt;/p&gt;</description>
	<pubDate>Tue, 18 Jun 2013 12:37:00 +0000</pubDate>
</item>
<item>
	<title>All Points Blog: Weather-based Location-based Advertising</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/weather-based-location-based-advertising/334930</guid>
	<link>http://apb.directionsmag.com/entry/weather-based-location-based-advertising/334930</link>
	<description>The latest UK ad campaign of drink brand Stella Artois Cidre consists of ads that will only appear when there's a 2-degree rise in temperature above the national average.
	
		The weather-activated ad campaign, which was created with Liveposter and Posterscope, works on a scheduling... &lt;a href=&quot;http://apb.directionsmag.com/entry/weather-based-location-based-advertising/334930&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Tue, 18 Jun 2013 10:15:42 +0000</pubDate>
</item>
<item>
	<title>All Points Blog: Mapping the Keystone XL Pipeline One FOIA Request at a Time</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/mapping-the-keystone-xl-pipeline-one-foia-request-at-at-time/335511</guid>
	<link>http://apb.directionsmag.com/entry/mapping-the-keystone-xl-pipeline-one-foia-request-at-at-time/335511</link>
	<description>We don't really know the route of the proposed Keystone XL pipeline. Good thing author and photographer Thomas Bachand  is on the case. He's been submitting requests for GIS and ther data from agencies to develop he Keystone Mapping Project (KMP) a nationally recognized multimedia and... &lt;a href=&quot;http://apb.directionsmag.com/entry/mapping-the-keystone-xl-pipeline-one-foia-request-at-at-time/335511&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Tue, 18 Jun 2013 10:06:24 +0000</pubDate>
</item>
<item>
	<title>Directions Magazine: Ten Terms GIS People Should Know in 2013</title>
	<guid isPermaLink="true">http://www.directionsmag.com/podcasts/ten-terms-gis-people-should-know-in-2013/334957</guid>
	<link>http://www.directionsmag.com/podcasts/ten-terms-gis-people-should-know-in-2013/334957</link>
	<description>Are there terms you come across in your day to day work whose definitions still seem fuzzy? Do you ?sort of? know what they mean, but if pressed you couldn?t confidently provide a definition? Our editors share some terms that still make them uncomfortable and offer definitions.</description>
	<pubDate>Tue, 18 Jun 2013 08:27:45 +0000</pubDate>
        <enclosure url="http://www.directionsmag.com/images/podcasts/130618_don.mp3" length="5968700" type="audio/mpeg"/>
</item>
<item>
	<title>The Big Blue Thread: Day of Caring</title>
	<guid isPermaLink="false">http://blog.epa.gov/bigbluethread/?p=1546</guid>
	<link>http://blog.epa.gov/bigbluethread/2013/06/day-of-caring/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=day-of-caring</link>
	<description>&lt;p&gt;Each year EPA Region 7 staff come together to make a valuable impact in the community.  This special day is known as “Day of Caring.”  This year marked the 19&lt;sup&gt;th&lt;/sup&gt; annual Day of Caring which took place on Saturday, June 1, 2013. Our volunteer team consisted of 17 people including staff, spouses and kids.&lt;/p&gt;
&lt;div class=&quot;wp-caption aligncenter&quot; id=&quot;attachment_1547&quot; style=&quot;width: 531px;&quot;&gt;&lt;a class=&quot;thickbox no_icon&quot; href=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc1.jpg&quot; rel=&quot;lightbox[1546]&quot; title=&quot;doc1&quot;&gt;&lt;img alt=&quot;doc1&quot; class=&quot;size-full wp-image-1547&quot; height=&quot;346&quot; src=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc1.jpg&quot; width=&quot;521&quot; /&gt;&lt;/a&gt;&lt;p class=&quot;wp-caption-text&quot;&gt;(Back Row, left-to-right): Toni Castro, Bob Wilson, Chris Lubbe, Dan Garvey, Jan Simpson, Fatimou Ndiaye, Marcus Rivas, LaTonya Sanders&lt;br /&gt;(Front Row, left-to-right): Mary Peterson, Wendy Lubbe, Colleen Wilson, Shanice Castro, Steve Herndon, Kerry Herndon&lt;br /&gt;Not Pictured: Karen Garvey, Jim Stevens, Paige Stevens&lt;br /&gt;Special volunteers were the Lubbe twins, Caroline and Rose (pictured on front row)&lt;/p&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Coordinated by the Heart of America United Way and the Heartland Combined Federal Campaign, Day of Caring is a community-wide service event that connects volunteers with nonprofit organizations to address social needs through special projects or events in the Kansas City metropolitan area.&lt;/p&gt;
&lt;p&gt;EPA Region 7 has supported and participated in Day of Caring since the very beginning.  Each year, our staff look forward to spending a day together outside of the office, in the community, cleaning, painting, gardening, and helping with other projects at nonprofit organizations.  At the end of the day, it always feels great giving of ourselves to these organizations that make huge impacts in the communities that we live in and serve.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;The EPA Region 7 team volunteered for Catholic Charities of Northeast Kansas at their Central Avenue facility in Kansas City, Kansas.  On the surface, we knew of some of the services and programs that Catholic Charities provided.  But, we learned so much more about the organization and their impact in the community, helping families and individuals in need, and their extensive programs to help refugees.  The EPA Region 7 volunteer team worked on five projects.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Bagging Canned Goods for Distribution &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;/b&gt;Catholic Charities has several programs where they distribute donated food to homebound individuals.  Volunteers bagged canned goods for distribution.&lt;a class=&quot;thickbox no_icon&quot; href=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc2.jpg&quot; rel=&quot;lightbox[1546]&quot; title=&quot;doc2&quot;&gt;&lt;img alt=&quot;doc2&quot; class=&quot;size-full wp-image-1548 aligncenter&quot; height=&quot;385&quot; src=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc2.jpg&quot; width=&quot;582&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Restocking the Food Pantry&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;Catholic Charities has a food pantry where families and individuals in need can “shop” for grocery and personal items.  Volunteers restocked the shelves in the food pantry with donated items.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;&lt;a class=&quot;thickbox no_icon&quot; href=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc3.jpg&quot; rel=&quot;lightbox[1546]&quot; title=&quot;doc3&quot;&gt;&lt;img alt=&quot;doc3&quot; class=&quot;aligncenter size-full wp-image-1551&quot; height=&quot;431&quot; src=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc3.jpg&quot; width=&quot;648&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Organizing the Clothing Closet&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;Catholic Charities has a clothing closet where families and individuals in need can “shop” for clothing, shoes and other items.  Volunteers helped to sort and hang up clothes and organize the closet.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;&lt;a class=&quot;thickbox no_icon&quot; href=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc4.jpg&quot; rel=&quot;lightbox[1546]&quot; title=&quot;doc4&quot;&gt;&lt;img alt=&quot;doc4&quot; class=&quot;aligncenter size-full wp-image-1552&quot; height=&quot;431&quot; src=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc4.jpg&quot; width=&quot;647&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Beautification of the Garden &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;The Catholic Charities Central Avenue location has a beautiful garden and picnic area.  Volunteers helped to weed, clean up and plant flowers and shrubbery.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;&lt;a class=&quot;thickbox no_icon&quot; href=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc5.jpg&quot; rel=&quot;lightbox[1546]&quot; title=&quot;doc5&quot;&gt;&lt;img alt=&quot;doc5&quot; class=&quot;aligncenter size-full wp-image-1553&quot; height=&quot;412&quot; src=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc5.jpg&quot; width=&quot;620&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;
&lt;/p&gt;&lt;p align=&quot;left&quot;&gt;&lt;b&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Grounds Cleanup&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;Volunteers helped to clean up around the parking area by weeding and raking leaves and debris.&lt;/p&gt;
&lt;p align=&quot;left&quot;&gt;&lt;a class=&quot;thickbox no_icon&quot; href=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc6.jpg&quot; rel=&quot;lightbox[1546]&quot; title=&quot;doc6&quot;&gt;&lt;img alt=&quot;doc6&quot; class=&quot;aligncenter size-full wp-image-1554&quot; height=&quot;416&quot; src=&quot;http://blog.epa.gov/bigbluethread/wp-content/uploads/2013/06/doc6.jpg&quot; width=&quot;626&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 21:56:05 +0000</pubDate>
</item>
<item>
	<title>GIS Lounge: Can Spatial Big Data Build a Better Everyday Life?</title>
	<guid isPermaLink="false">http://www.gislounge.com/?p=15677</guid>
	<link>http://www.gislounge.com/can-spatial-big-data-build-a-better-everyday-life/</link>
	<description>&lt;p&gt;Mike Sanderson, the Director of Strategy at 1Spatial, provides a perspective piece on the rise of big spatial data and the importance of being able to base management decisions on correct real-world data.
&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.gislounge.com/can-spatial-big-data-build-a-better-everyday-life/&quot;&gt;Can Spatial Big Data Build a Better Everyday Life?&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.gislounge.com&quot;&gt;GIS Lounge&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 21:22:57 +0000</pubDate>
</item>
<item>
	<title>Sean Gillies Blog: Another good day for the little format that could</title>
	<guid isPermaLink="false">tag:sgillies.net,2013-06-17:/blog/1183/another-good-day-for-the-little-format-that-could</guid>
	<link>http://sgillies.net/blog/1183/another-good-day-for-the-little-format-that-could/</link>
	<description>&lt;p&gt;Last Thursday, Ben Balter &lt;a class=&quot;reference&quot; href=&quot;https://github.com/blog/1528-there-s-a-map-for-that&quot;&gt;wrote&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
Not long ago, we began rendering 3D models on GitHub. Today we're excited to
announce the latest addition to the visualization family - geographic data.
Any .geojson file in a GitHub repository will now be automatically rendered
as an interactive, browsable map, annotated with your geodata.&lt;/blockquote&gt;
&lt;p&gt;Wow! GitHub, MapBox, OpenStreetMap, Leaflet, and GeoJSON are five of my
favorite things on the web. I can't wait to see what happens next.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 20:54:07 +0000</pubDate>
	<author>sean.gillies@gmail.com (Sean Gillies)</author>
</item>
<item>
	<title>Bing Maps Blog: Infoboxes for Native Windows Store Apps</title>
	<guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:0c133c91-cd5b-4a90-bb76-360864a94f9f</guid>
	<link>http://www.bing.com/blogs/site_blogs/b/maps/archive/2013/06/17/infoboxes-for-native-windows-store-apps.aspx</link>
	<description>&lt;p&gt;Recently there has been a number of requests for information on how to create infoboxes using the Bing Maps Native control. Many developers who have used our JavaScript controls are used to an infobox control being available out of the box and are a bit surprised that there isn’t one in the Native control. This wasn’t an oversight, but really not needed. With the Native control, we have the ability to overlay user controls directly on top of the map and tie them to a location on the map. This means that rather than being restricted to having to use an infobox control that looks and feels the way we think it should, you have the ability to create an infobox that looks and feels how you want.&lt;/p&gt;
&lt;p&gt;In this blog post we will take a look at how to create a simple infobox control. To optimize this application, we will use a common method of having one Infobox control which we will reuse and update rather than creating an infobox for each pushpin we create. This will drastically reduce the number of objects your application will need to render and keep track of. This same approach is recommended when using the JavaScript control as well. If using JavaScript, take a look at this &lt;a href=&quot;http://rbrundritt.wordpress.com/2011/10/13/multiple-pushpins-and-infoboxes-in-bing-maps-v7/&quot;&gt;blog post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Creating the View&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;To start off, create a Blank Windows Store project in Visual Studio called &lt;i&gt;BingMaps_Native_Infobox&lt;/i&gt; and add a reference to the Bing Maps SDK. If you are not familiar with how to do this, take a look at the &lt;a href=&quot;http://www.bing.com/community/site_blogs/b/maps/archive/2012/11/05/getting-started-with-bing-maps-windows-store-apps-native.aspx&quot;&gt;Getting started with Bing Maps Windows Store Apps (Native)&lt;/a&gt; blog post.&lt;/p&gt;
&lt;p&gt;Once your project is created, open up the &lt;i&gt;MainPage.xaml&lt;/i&gt; file and add a reference to the Bing Maps SDK and add a map to the main Grid. Inside of the map, we will add two MapLayers and give the first layer a name of &lt;i&gt;DataLayer&lt;/i&gt;. We will use this layer to add our pushpins to. We will put the infobox in the second layer and this will ensure that the infobox always appears above the data layer. For the infobox itself, we will use a Grid control and add some Textboxes for Title and Description information. We will also add a close button to the infobox. Putting this together, your XAML should look like this:&lt;/p&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;
&lt;pre id=&quot;codeSnippet&quot; style=&quot;overflow: visible; font-size: 8pt; font-family: 'Courier New', courier, monospace; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; width: 100%; background-color: #f4f4f4; border-style: none; padding: 0px;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Page&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;x:Class&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;BingMaps_Infoboxes_Native.MainPage&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;xmlns&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;xmlns:x&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;xmlns:local&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;using:BingMaps_Infoboxes_Native&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;xmlns:d&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;xmlns:mc&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;xmlns:m&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;using:Bing.Maps&quot;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #ff0000;&quot;&gt;mc:Ignorable&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;d&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Grid&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Background&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;{StaticResource ApplicationPageBackgroundThemeBrush}&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:Map&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Credentials&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;YOUR_BING_MAPS_KEY&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:Map.Children&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style=&quot;color: #008000;&quot;&gt;&amp;lt;!-- Data Layer--&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:MapLayer&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Name&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;DataLayer&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span style=&quot;color: #008000;&quot;&gt;&amp;lt;!--Common Infobox--&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:MapLayer&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Grid&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;x:Name&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Infobox&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Visibility&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Collapsed&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;0,-115,-15,0&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;                        &lt;br /&gt;                        &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Border&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;300&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;110&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Background&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Black&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Opacity&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;0.8&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;BorderBrush&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;White&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;BorderThickness&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;2&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;CornerRadius&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;5&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                        &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;StackPanel&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;100&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Margin&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;5&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Grid&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;40&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBlock&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Text&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;{Binding Title}&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;FontSize&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;20&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;250&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;TextWrapping&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Wrap&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Left&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Button&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Content&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;X&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Tapped&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;CloseInfobox_Tapped&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;HorizontalAlignment&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Right&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;VerticalAlignment&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Top&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;ScrollViewer&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;HorizontalScrollBarVisibility&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;VerticalScrollBarVisibility&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Auto&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;MaxHeight&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;60&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                                &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;TextBlock&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Text&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;{Binding Description}&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;FontSize&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;16&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Width&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;290&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;TextWrapping&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Wrap&quot;&lt;/span&gt; &lt;span style=&quot;color: #ff0000;&quot;&gt;Height&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;=&quot;Auto&quot;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;                            &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;ScrollViewer&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                        &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;StackPanel&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                    &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;                &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:MapLayer&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;            &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:Map.Children&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;        &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;m:Map&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Grid&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #800000;&quot;&gt;Page&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Adding the Application Logic&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;If you try running the application now, an error will be thrown as we haven’t defined the &lt;i&gt;CloseInfobox_Tapped&lt;/i&gt; event handler. To fix this, open the &lt;i&gt;MainPage.xaml.cs&lt;/i&gt; file and add the following event handler:&lt;/p&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt; &lt;/div&gt;
&lt;div&gt;
&lt;pre id=&quot;codeSnippet&quot; style=&quot;overflow: visible; font-size: 8pt; font-family: 'Courier New', courier, monospace; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; width: 100%; background-color: #f4f4f4; border-style: none; padding: 0px;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; CloseInfobox_Tapped(&lt;span style=&quot;color: #0000ff;&quot;&gt;object&lt;/span&gt; sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Infobox.Visibility = Visibility.Collapsed;&lt;br /&gt;}&lt;/pre&gt;
&lt;br /&gt;Next, we need to add some pushpins to the map. To do this, we will create a reusable function that takes in a Location, title, description and a reference to a MapLayer to add the pushpin to. When we create the pushpin we will store the title and description inside the Tag property of the pushpin. We will then add a Tapped event which we will use to open our infobox. Finally, we will add the pushpin to the layer. Add the following code to your application:&lt;/div&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;
&lt;pre id=&quot;codeSnippet&quot; style=&quot;overflow: visible; font-size: 8pt; font-family: 'Courier New', courier, monospace; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; width: 100%; background-color: #f4f4f4; border-style: none; padding: 0px;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; AddPushpin(Location latlong, &lt;span style=&quot;color: #0000ff;&quot;&gt;string&lt;/span&gt; title, &lt;span style=&quot;color: #0000ff;&quot;&gt;string&lt;/span&gt; description, MapLayer layer)&lt;br /&gt;{&lt;br /&gt;    Pushpin p = &lt;span style=&quot;color: #0000ff;&quot;&gt;new&lt;/span&gt; Pushpin()&lt;br /&gt;    {&lt;br /&gt;        Tag = &lt;span style=&quot;color: #0000ff;&quot;&gt;new&lt;/span&gt; Metadata()&lt;br /&gt;        {&lt;br /&gt;            Title = title,&lt;br /&gt;            Description = description&lt;br /&gt;        }&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;    MapLayer.SetPosition(p, latlong);&lt;br /&gt;&lt;br /&gt;    p.Tapped += PinTapped;&lt;br /&gt;&lt;br /&gt;    layer.Children.Add(p);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;class&lt;/span&gt; Metadata&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;string&lt;/span&gt; Title { get; set; }&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;string&lt;/span&gt; Description { get; set; }&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Now we will create the &lt;i&gt;PinTapped&lt;/i&gt; event handler. When the user taps the pushpin, we will take the metadata we stored in the pushpin and bind it to the Infobox. We will then make the infobox visibility and then use the MapLayer to set the position of the infobox.&lt;/p&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;
&lt;pre id=&quot;codeSnippet&quot; style=&quot;overflow: visible; font-size: 8pt; font-family: 'Courier New', courier, monospace; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; width: 100%; background-color: #f4f4f4; border-style: none; padding: 0px;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;private&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;void&lt;/span&gt; PinTapped(&lt;span style=&quot;color: #0000ff;&quot;&gt;object&lt;/span&gt; sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;    Pushpin p = sender &lt;span style=&quot;color: #0000ff;&quot;&gt;as&lt;/span&gt; Pushpin;&lt;br /&gt;    Metadata m = (Metadata)p.Tag;&lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: #008000;&quot;&gt;//Ensure there is content to be displayed before modifying the infobox control&lt;/span&gt;&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;if&lt;/span&gt; (!String.IsNullOrEmpty(m.Title) || !String.IsNullOrEmpty(m.Description))&lt;br /&gt;    {&lt;br /&gt;        Infobox.DataContext = m;&lt;br /&gt;&lt;br /&gt;        Infobox.Visibility = Visibility.Visible;&lt;br /&gt;&lt;br /&gt;        MapLayer.SetPosition(Infobox, MapLayer.GetPosition(p));&lt;br /&gt;    }&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        Infobox.Visibility = Visibility.Collapsed;&lt;br /&gt;    }&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;We now have all the code we need to create pushpins that open up an Infobox when tapped. All we need to do now is create some pushpins. To do this, update the constructor to look like this:&lt;/p&gt;
&lt;div id=&quot;codeSnippetWrapper&quot;&gt;
&lt;pre id=&quot;codeSnippet&quot; style=&quot;overflow: visible; font-size: 8pt; font-family: 'Courier New', courier, monospace; color: black; direction: ltr; text-align: left; margin: 0em; line-height: 12pt; width: 100%; background-color: #f4f4f4; border-style: none; padding: 0px;&quot;&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;public&lt;/span&gt; MainPage()&lt;br /&gt;{&lt;br /&gt;    &lt;span style=&quot;color: #0000ff;&quot;&gt;this&lt;/span&gt;.InitializeComponent();&lt;br /&gt;&lt;br /&gt;    AddPushpin(&lt;span style=&quot;color: #0000ff;&quot;&gt;new&lt;/span&gt; Location(47.6035, -122.3294), &lt;span style=&quot;color: #006080;&quot;&gt;&quot;Seattle&quot;&lt;/span&gt;, &lt;span style=&quot;color: #006080;&quot;&gt;&quot;Seattle is in the state of Washington. &quot;&lt;/span&gt;, DataLayer);&lt;br /&gt;&lt;br /&gt;    AddPushpin(&lt;span style=&quot;color: #0000ff;&quot;&gt;new&lt;/span&gt; Location(51.5063, -0.1271), &lt;span style=&quot;color: #006080;&quot;&gt;&quot;London&quot;&lt;/span&gt;, &lt;span style=&quot;color: #006080;&quot;&gt;&quot;London is the capital city of England and the United Kingdom, and the largest city in the United Kingdom.&quot;&lt;/span&gt;, DataLayer);&lt;br /&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;If you run the application, you will see two pushpins on the map. If you tap on one, the Infobox will appear with the relevant information for that pushpin and look something like this:&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.bing.com/community/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-35-metablogapi/4137.image_5F00_2BCE9337.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;285&quot; src=&quot;http://www.bing.com/community/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-54-35-metablogapi/4274.image_5F00_thumb_5F00_26BC2FBB.png&quot; style=&quot;background-image: none; float: none; padding-top: 0px; padding-left: 0px; margin: 4px auto; display: block; padding-right: 0px; border-width: 0px;&quot; title=&quot;image&quot; width=&quot;504&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;You can take this a step further and create a custom UserControl that has a lot more advanced features. In the end you simply just need to add it to a MapLayer and set its position.&lt;/p&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;img height=&quot;1&quot; src=&quot;http://www.bing.com/blogs/aggbug.aspx?PostID=9692721&amp;amp;AppID=5435&amp;amp;AppType=Weblog&amp;amp;ContentType=0&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 17 Jun 2013 18:35:43 +0000</pubDate>
        <enclosure url="http://www.bing.com/blogs/cfs-file.ashx/__key/telligent-evolution-components-attachments/01-5435-00-00-09-69-27-21/NativeInfoboxes.jpg" length="17661" type="image/jpeg"/>
</item>
<item>
	<title>AnyGeo: Spectral Transformer tool sets for Landsat-8 imagery from Geosage</title>
	<guid isPermaLink="false">http://blog.gisuser.com/?p=12813</guid>
	<link>http://blog.gisuser.com/2013/06/17/spectral-transformer-tool-sets-for-landsat-8-imagery-from-geosage/</link>
	<description>Landsat-8 captures more than 400 scenes per day, and as of early June 2013 more than 20,000 scenes are already available. New from Geosage, free tools for working with Landsat 8 imagery. GeoSage has released Spectral Transformer tool sets for … &lt;a href=&quot;http://blog.gisuser.com/2013/06/17/spectral-transformer-tool-sets-for-landsat-8-imagery-from-geosage/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 17 Jun 2013 18:00:03 +0000</pubDate>
</item>
<item>
	<title>mousebird consulting: CartoDB Example</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-2893633529075801218.post-449420350775339537</guid>
	<link>http://mousebirdconsulting.blogspot.com/2013/06/cartodb-example_17.html</link>
	<description>I whipped up a guest blog post over at the &lt;a href=&quot;http://blog.cartodb.com/post/52898364065/cartodb-on-ios-interactive-3d-globe-with&quot;&gt;CartoDB blog&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://2.bp.blogspot.com/-4ZEhIco1Rxo/Ub9HA9difVI/AAAAAAAAAPw/TRR1j0HgEnA/s1600/cartodb.jpg&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;300&quot; src=&quot;http://2.bp.blogspot.com/-4ZEhIco1Rxo/Ub9HA9difVI/AAAAAAAAAPw/TRR1j0HgEnA/s400/cartodb.jpg&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;France!&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;That's a simple app that queries country outlines from their spatial database service.  Lot of interesting possibilities there, go check it out.&lt;br /&gt;&lt;br /&gt;</description>
	<pubDate>Mon, 17 Jun 2013 17:32:39 +0000</pubDate>
	<author>noreply@blogger.com (mousebird)</author>
</item>
<item>
	<title>GIS Lounge: Help Bearded Germans with Their Bucketlist Map</title>
	<guid isPermaLink="false">http://www.gislounge.com/?p=15659</guid>
	<link>http://www.gislounge.com/help-bearded-germans-with-their-bucketlist-map/</link>
	<description>&lt;p&gt;This kickstarter project by German bearded cartographers Simon Schuetz and Lars Sieffert seeks funding to create a global map shows the world's bucketlist locations.  &lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.gislounge.com/help-bearded-germans-with-their-bucketlist-map/&quot;&gt;Help Bearded Germans with Their Bucketlist Map&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.gislounge.com&quot;&gt;GIS Lounge&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 17:25:03 +0000</pubDate>
</item>
<item>
	<title>AnyGeo: Earth Day Data Challenge</title>
	<guid isPermaLink="false">http://blog.gisuser.com/?p=12810</guid>
	<link>http://blog.gisuser.com/2013/06/17/earth-day-data-challenge/</link>
	<description>Something interesting from the Earth Day Data Challenge as they are looking for creative uses of the public ocean data available on marinexplore.org. For example, the use of historical sea surface temperature data to investigate phenomenon like La Niña. You … &lt;a href=&quot;http://blog.gisuser.com/2013/06/17/earth-day-data-challenge/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 17 Jun 2013 17:23:24 +0000</pubDate>
</item>
<item>
	<title>GIS Lounge: Near Real-time Bike Share Map</title>
	<guid isPermaLink="false">http://www.gislounge.com/?p=15651</guid>
	<link>http://www.gislounge.com/near-real-time-bike-share-map/</link>
	<description>&lt;p&gt;The global bike share map updates every 2-10 minutes with bike inventory data for 85 cities around the world.  &lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.gislounge.com/near-real-time-bike-share-map/&quot;&gt;Near Real-time Bike Share Map&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.gislounge.com&quot;&gt;GIS Lounge&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 16:49:20 +0000</pubDate>
</item>
<item>
	<title>Directions Magazine: Pitney Bowes Software Launches MapInfo.com; Updates MapInfo Pro to Version 12</title>
	<guid isPermaLink="true">http://www.directionsmag.com/podcasts/pitney-bowes-software-launches-mapinfo.com-updates-mapinfo-pro-to-version-1/335276</guid>
	<link>http://www.directionsmag.com/podcasts/pitney-bowes-software-launches-mapinfo.com-updates-mapinfo-pro-to-version-1/335276</link>
	<description>Today, Pitney Bowes Software (PBS) launches the MapInfo.com portal, a website dedicated to product solutions. Is PBS re-launching the MapInfo brand and why now? Senior vice president of PBS?s Location Intelligence group, James Buckley, and Global Product Manager Rob Savage discuss the reasons for launching the portal as well as the new features in MapInfo version 12, the beta release of a new raster and grid handling capability, and their strategy for SaaS.</description>
	<pubDate>Mon, 17 Jun 2013 16:06:48 +0000</pubDate>
        <enclosure url="http://www.directionsmag.com/images/podcasts/mapinfo2.mp3" length="8973622" type="audio/mpeg"/>
</item>
<item>
	<title>Directions Magazine: Pitney Bowes Software Launches MapInfo.com; Updates MapInfo Pro to Version 12</title>
	<guid isPermaLink="true">http://www.directionsmag.com/podcasts/pitney-bowes-software-launches-mapinfo.com-updates-mapinfo-pro-to-vers/335276</guid>
	<link>http://www.directionsmag.com/podcasts/pitney-bowes-software-launches-mapinfo.com-updates-mapinfo-pro-to-vers/335276</link>
	<description>Today, Pitney Bowes Software (PBS) launches the MapInfo.com portal, a website dedicated to product solutions. Is PBS re-launching the MapInfo brand and why now? Senior vice president of PBS?s Location Intelligence group, James Buckley, and Global Product Manager Rob Savage discuss the reasons for launching the portal as well as the new features in MapInfo version 12, the beta release of a new raster and grid handling capability, and their strategy for SaaS.</description>
	<pubDate>Mon, 17 Jun 2013 16:06:30 +0000</pubDate>
        <enclosure url="http://www.directionsmag.com/images/podcasts/mapinfo2.mp3" length="8973622" type="audio/mpeg"/>
</item>
<item>
	<title>GIS Lounge: Mapping the Salinity of the Ocean</title>
	<guid isPermaLink="false">http://www.gislounge.com/?p=15645</guid>
	<link>http://www.gislounge.com/mapping-the-salinity-of-the-ocean/</link>
	<description>&lt;p&gt;The European Space Agency (ESA) and the National Aeronautics and Space Administration (NASA) are mapping the salinity of the ocean to understand how the ocean helps recycle of our planet’s water resources and our climate.&lt;/p&gt;&lt;p&gt;The post &lt;a href=&quot;http://www.gislounge.com/mapping-the-salinity-of-the-ocean/&quot;&gt;Mapping the Salinity of the Ocean&lt;/a&gt; appeared first on &lt;a href=&quot;http://www.gislounge.com&quot;&gt;GIS Lounge&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 15:59:57 +0000</pubDate>
</item>
<item>
	<title>Azavea Atlas: LocationTech Webinar on GeoTrellis and Distributed Geoprocessing</title>
	<guid isPermaLink="false">http://www.azavea.com/blogs/atlas/?p=4207</guid>
	<link>http://www.azavea.com/blogs/atlas/2013/06/locationtech-webinar-on-geotrellis-and-distributed-geoprocessing/</link>
	<description>&lt;p&gt;Josh and I were invited to do a presentation on &lt;a href=&quot;http://www.azavea.com/geotrellis/&quot; target=&quot;_blank&quot;&gt;GeoTrellis&lt;/a&gt; as part of webinar series being done by &lt;a href=&quot;http://www.locationtech.org/&quot; target=&quot;_blank&quot;&gt;LocationTech&lt;/a&gt;, a new initiative of the Eclipse Foundation.  LocationTech is an effort to support the use of open source geospatial technology in a business context with the following areas of initial focus:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-size: 13px; line-height: 19px;&quot;&gt;Storage and processing of massive data volume&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Model driven design&lt;/li&gt;
&lt;li&gt;Desktop, Web, and mobile mapping&lt;/li&gt;
&lt;li&gt;Real time analysis of business critical data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Our presentation outlines some of the reasoning behind our approach to distributed geoprocessing as well as some future direction for our research.  Check it out and let us know how you’d like to use GeoTrellis.&lt;/p&gt;
&lt;span class=&quot;embed-youtube&quot; style=&quot;text-align: center; display: block;&quot;&gt;&lt;/span&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;If you’d like to join the GeoTrellis community, the following resources are available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://groups.google.com/group/geotrellis-user&quot; target=&quot;_blank&quot;&gt;Mailing list&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://geotrellis.github.io/&quot; target=&quot;_blank&quot;&gt;GeoTrellis docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/geotrellis/&quot; target=&quot;_blank&quot;&gt;GeoTrellis on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;IRC: #GeoTrellis on FreeNode&lt;/li&gt;
&lt;/ul&gt;</description>
	<pubDate>Mon, 17 Jun 2013 15:52:35 +0000</pubDate>
</item>
<item>
	<title>Between the Poles: Landsat 8 imagery of Elbe river flooding</title>
	<guid isPermaLink="false">tag:typepad.com,2003:post-6a00d83476d35153ef0192ab394c3e970d</guid>
	<link>http://feedproxy.google.com/~r/typepad/zeissg/geospatial/~3/BTqCew9xdkg/landsat-8-imagery-of-elbe-river-flooding.html</link>
	<description>&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01910370e9ff970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;Landsat 8 Image May elberiver_oli_2013126-468x312&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef01910370e9ff970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01910370e9ff970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;Landsat 8 Image May elberiver_oli_2013126-468x312&quot; /&gt;&lt;/a&gt;There's a very interesting &lt;a href=&quot;http://earthobservatory.nasa.gov/IOTD/view.php?id=81368&quot; target=&quot;_self&quot;&gt;comparison&lt;/a&gt; from the NASA Earth Obervatory of Landat 8 imagery showing flooding on the Elbe in Germany. &lt;/p&gt;
&lt;p&gt;Image  1 is a natural-color, pan-sharpened image of the Elbe River near Wittenberg, Germany, obtained by Landsat 8 on May 6, 2013.   Image 2 is from June 7, 2013, which shows flooding of the Elbe.&lt;/p&gt;
&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01901d7af089970b-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;Landsat 8 Image June flooding elberiver_oli_2013126-468x312&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef01901d7af089970b&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01901d7af089970b-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;Landsat 8 Image June flooding elberiver_oli_2013126-468x312&quot; /&gt;&lt;/a&gt;If you look closely at Image 1 you can make out a jagged pattern along the river which is often a symptom of a processing error.  A recent &lt;a href=&quot;http://earthobservatory.nasa.gov/blogs/earthmatters/2013/06/12/do-not-adjust-the-vertical/?src=fb&quot; target=&quot;_self&quot;&gt;blog post&lt;/a&gt; from the NASA Earth Obveratory explains that in this case this is not a processing artifact, but real structures along the river which they were able to verify by looking at among other things high resolution imagery on Google Earth.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 15:00:00 +0000</pubDate>
</item>
<item>
	<title>LiDAR News: The BIM Day Out</title>
	<guid isPermaLink="false">http://blog.lidarnews.com/?p=11683</guid>
	<link>http://feedproxy.google.com/~r/InTheScan/~3/mmXJMz7_mOE/the-bim-day-out</link>
	<description>It is being hosted by the Central Institute of Technology Perth. Looks like it should be an outstanding event with all of the leading vendors on board.  Continue reading →&lt;br /&gt;
&lt;br /&gt;
Click Title to Continue Reading...&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/InTheScan/~4/mmXJMz7_mOE&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 17 Jun 2013 14:06:47 +0000</pubDate>
</item>
<item>
	<title>AnyGeo: Volunteer Map Data Collection Opportunities to Build the National Map</title>
	<guid isPermaLink="false">http://blog.gisuser.com/?p=12807</guid>
	<link>http://blog.gisuser.com/2013/06/17/volunteer-map-data-collection-opportunities-to-build-the-national-map/</link>
	<description>Have you ever wanted to contribute to the National Map? Well, now that the USGS has embraced the crowd there’s an opportunity for you to do just that! If you have access to the Internet and are willing to dedicate … &lt;a href=&quot;http://blog.gisuser.com/2013/06/17/volunteer-map-data-collection-opportunities-to-build-the-national-map/&quot;&gt;Continue reading &lt;span class=&quot;meta-nav&quot;&gt;→&lt;/span&gt;&lt;/a&gt;</description>
	<pubDate>Mon, 17 Jun 2013 14:02:50 +0000</pubDate>
</item>
<item>
	<title>Between the Poles: North American BIM adoption reached 71% in 2012</title>
	<guid isPermaLink="false">tag:typepad.com,2003:post-6a00d83476d35153ef0192ab3a32c7970d</guid>
	<link>http://feedproxy.google.com/~r/typepad/zeissg/geospatial/~3/2jnBF1uTvAo/bim-adoption-reached-71-in-2012.html</link>
	<description>&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0191037259c2970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM adoption by company type McGraw-Hill&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef0191037259c2970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0191037259c2970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM adoption by company type McGraw-Hill&quot; /&gt;&lt;/a&gt;Over the past five years the processes and technologies of building information modeling (BIM) have been transforming the construction industry.  First architects and to a lesser extent engineers, and now increasingly contractors are adopting BIM to reduce risk and increase margins.  There are signs that owners are also realizing benefits from BIM and that operations and maintenance which are responsible for about 80% of a building's lifetime cost may be the part of the lifecycle of a building where BIM provides the largest benefits.  Typical applications where BIM has been applied include automating clash detection, quantity takeoff. and change propagation; reducing data redundancy; improving collaboration among design teams; construction scheduling; automating bill of materials and job costing; and using 3D visualization to  involve non-technical stakeholders in the design process.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BIM and Geospatial&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Several years ago, in an award winning &lt;a href=&quot;http://www.agi.org.uk/storage/GeoCommunity/AGI2011/Papers/AnneKempPaper.pdf&quot; target=&quot;_self&quot;&gt;paper&lt;/a&gt; at a conference organised by Britain’s Association for Geographic Information (AGI), Ann Kemp, then head of GIS at Atkins Global, the design and engineering firm, asked the question ‘&lt;em&gt;BIM isn’t geospatial -- or is it?&lt;/em&gt;’ and then argued that integration of geospatial and BIM was essential to address the challenges of the 21st century.  Kemp wasn’t the first one to speak on this. The need to integrate geospatial and BIM has been gaining traction for some time now and government mandated energy efficiency for buildings is a major driver of BIM/geospatial convergence.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;BIM in the construction industry&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;McGraw-Hill Construction has conducted a survey of the use of BIM processes and technologies in the construction industry in 2007, 2009 and 2012.  The most recent report called &quot;&lt;a href=&quot;http://analyticsstore.construction.com/index.php/2012-business-value-of-bim-in-north-america-smartmarket-report.html&quot; target=&quot;_self&quot;&gt;The Business Value of BIM in North America: 2012&lt;/a&gt;&quot; involved an online survey that was completed by 582 respondents from North America in August to September, 2012.  The companies invited to participate came from McGraw-Hill Construction's own databases as well as from industry associations including AGC, AIA, ASA, ASCE, CMAA, COAA, DBIA, NIBS, SMACNA &amp;amp; SMPS.
&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Workng Definition of BIM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the survey the working defintion of “BIM” that was &quot;broadly the creation and use of digital models and related collaborative processes between companies to leverage the value of the models.&quot;  The definition was intended to differentiate BIM from CAD.  It also was intended to be inclusive, to include users not just model authors.  Respondents were classified as BIM users or non-users.  By non-users was meant &quot;not engaging with BIM at all”.   BIM users included a broad range of users including model authors and users who used models for analysis or simulation, but did not author them.&lt;/p&gt;
&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01910372316a970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM survey type of contractors McGraw-Hill&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef01910372316a970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01910372316a970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM survey type of contractors McGraw-Hill&quot; /&gt;&lt;/a&gt;Repondents' companies were classified into five categories, architects (building and interior), engineers (structural, mechanical, and others), contractors (general and trade), owners, and others. Of the 582 respondents, the company breakdown was&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;7 % owners&lt;/li&gt;
&lt;li&gt;39% contractors - broad array of contractors&lt;/li&gt;
&lt;li&gt;21% engineers - mostly structural and mechanical&lt;/li&gt;
&lt;li&gt;33% architects - mostly building architects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef019103722337970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM adoption 2007 2009 2012 McGraw-Hill Construction&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef019103722337970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef019103722337970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM adoption 2007 2009 2012 McGraw-Hill Construction&quot; /&gt;&lt;/a&gt;Key trends in BIM in the construction industry&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Adoption&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Overall Adoption of BIM has increased from 17% in 2007 to 71% in 2012, representing 45% growth over the last 3 years.  In 2012 adoption by all categories of company increased, but contractors in particular saw increased adoption (74%) exceeding that of  architects (70%).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01910372264d970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM adoption on projects by type of user McGraw-Hill&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef01910372264d970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01910372264d970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM adoption on projects by type of user McGraw-Hill&quot; /&gt;&lt;/a&gt;Expertise level and experience&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The percentage of very heavy users increased from 27% in 2009 to 39% in 2012, and is projected to increase to 58% by 2014.  The percentage of very heavy users is forecasted to double over the next 5 years.  The percentage of highly experienced users (5 or more years) more than doubled from 2009 to 2012.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef019103722bb5970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM perceived ROI by company type McGraw-Hill&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef019103722bb5970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef019103722bb5970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM perceived ROI by company type McGraw-Hill&quot; /&gt;&lt;/a&gt;Perceived Return on investment&lt;/em&gt; (ROI)&lt;/p&gt;
&lt;p&gt;Most repondents reported a positive return on investment in BIM with owners, contractors and archtects reporting the highest proportion of positive ROI.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Owners 67%&lt;/li&gt;
&lt;li&gt;Contractors 74%&lt;/li&gt;
&lt;li&gt;Engineers 37%&lt;/li&gt;
&lt;li&gt;Architects 65%&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A significant proportion of contractors (7%) and architects (8%) report an ROI of over 100%.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Internal benefits of BIM&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0191037221a4970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM internal benefits 2009 2012 McGraw-Hill&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef0191037221a4970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef0191037221a4970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM internal benefits 2009 2012 McGraw-Hill&quot; /&gt;&lt;/a&gt;The most important internal benefits of adopting BIM reported by the respondents were&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Reduced errors and omissions in documents&lt;/li&gt;
&lt;li&gt;Marketing new business to new clients&lt;/li&gt;
&lt;li&gt;Maintaining repeat business with past clients&lt;/li&gt;
&lt;li&gt;Reducing rework&lt;/li&gt;
&lt;li&gt;Offering new services&lt;/li&gt;
&lt;li&gt;Reducing cycle time of specific workflows&lt;/li&gt;
&lt;li&gt;Reducing overall project duration&lt;/li&gt;
&lt;li&gt;Increased profits&lt;/li&gt;
&lt;li&gt;Reduced construction cost&lt;/li&gt;
&lt;li&gt;Fewer claims/litigation&lt;/li&gt;
&lt;li&gt;Recruting and retention of staff&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In 2012 the largest increases over 2009 were Increased profits, maintaining clients, reducing project duration and fewer claims.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01901d7c32d1970b-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;BIM owner uses for model McGraw-Hill&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef01901d7c32d1970b&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01901d7c32d1970b-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;BIM owner uses for model McGraw-Hill&quot; /&gt;&lt;/a&gt;BIM for operations and maintenance&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;A small but significant percentage of owners are using models for building system operation analysis, maintenance scheduling, asset and space management.&lt;br /&gt;&lt;br /&gt;Related to this, about 60% of contractors report medium to high demand from owners for as-built record models.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 13:38:25 +0000</pubDate>
</item>
<item>
	<title>VerySpatial: A VerySpatial Podcast – Episode 413</title>
	<guid isPermaLink="false">http://veryspatial.com/?p=11724</guid>
	<link>http://veryspatial.com/2013/06/a-veryspatial-podcast-episode-413/</link>
	<description>&lt;p&gt;&lt;strong&gt;A VerySpatial Podcast&lt;/strong&gt;&lt;br /&gt;
Shownotes – Episode 413&lt;br /&gt;
June 16, 2013 &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Main Topic: Is Open Source Free?&lt;/strong&gt; &lt;/p&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://traffic.libsyn.com/avsp/AVSP_Episode413.mp3&quot;&gt; Click to directly download MP3&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://traffic.libsyn.com/avsp/AVSP_Episode413.m4a&quot;&gt; Click to directly download AAC&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
	&lt;audio controls=&quot;controls&quot; id=&quot;wp_mep_1&quot; src=&quot;http://traffic.libsyn.com/avsp/AVSP_Episode413.mp3&quot;&gt;
		
		
		
		
		
		
		
		
			
						
				
	&lt;/audio&gt;


&lt;p&gt;&lt;strong&gt;Click for the detailed shownotes&lt;/strong&gt; &lt;span id=&quot;more-11724&quot;&gt;&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Music&lt;/strong&gt; &lt;/p&gt;
&lt;li&gt;This week’s podsafe music: “Open Our Eyes” by &lt;a href=&quot;https://myspace.com/amplifico&quot;&gt;Amplifico&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;News&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.nasa.gov/topics/earth/features/earth20130613.html&quot;&gt;New study shows the impact of warm oceans on Antarctic ice shelves&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.nature.com/news/drones-in-science-fly-and-bring-me-data-1.13161&quot;&gt;Nature features the use of drones at tools for scientific research&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://news.cnet.com/8301-13579_3-57588530-37/apples-maps-makes-its-way-to-os-x-mavericks/&quot;&gt;Apple adds Maps app to desktop&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.tuaw.com/2013/06/11/google-has-purchased-waze/&quot;&gt;Google acquires Waze&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.engadget.com/2013/06/13/foursquare-time-machine/&quot;&gt;Foursquare Time Machine lets you see your own time-space path&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.nsf.gov/awardsearch/showAward?AWD_ID=1304591&quot;&gt;GeoTech Center funding renewed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;Web Corner&lt;/strong&gt;&lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;http://education.nationalgeographic.com/?ar_a=1&quot;&gt;National Geographic Education Site&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;Main topic&lt;/strong&gt; &lt;/p&gt;
&lt;li&gt;The week we discuss the not so hidden costs of open source software.&lt;/li&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;Tip&lt;/strong&gt; &lt;/p&gt;
&lt;li&gt;&lt;a href=&quot;http://www.pleygo.com/&quot;&gt;Pleygo – Netflix for Legos!&lt;/a&gt;&lt;/li&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;Events Corner&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.igu-kyoto2013.org/&quot;&gt;2013 IGU Regional Conference&lt;/a&gt;, Kyoto, Japan, August 4-9&lt;br /&gt;
&lt;a href=&quot;http://www.igu2014.org/&quot;&gt;2014 IGU Regional Conference&lt;/a&gt;, Krakow, Poland, August 18-22&lt;br /&gt;
&lt;a href=&quot;http://www.igu2015.ru/&quot;&gt;2015 IGU Regional Conferences&lt;/a&gt;, Moscow, Russia&lt;br /&gt;
&lt;a href=&quot;http://www.igu-online.org/site/&quot;&gt;2016 International Geographical Congress, Beijing, China&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;This week, &lt;em&gt;A VerySpatial Podcast&lt;/em&gt; is supported by Esri&lt;/strong&gt;&lt;/p&gt;
&lt;li&gt;The Esri Education GIS Conference will be held July 6-9 in San Diego, California. Attend the conference to meet with other GIS educators and learn how to maximize your GIS investment at your institution. Visit &lt;a href=&quot;http://esri.com/educ&quot;&gt;esri.com/educ&lt;/a&gt; for more information and to register.&lt;/li&gt;
&lt;p&gt;&lt;code&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;
&lt;strong&gt;and by &lt;a href=&quot;http://www.mapserverpro.com/&quot;&gt;MapServerPro.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;li&gt;MapserverPro.com offers affordable GIS Hosting plans that support Mapserver, QGIS Server, pMapper and several other Opensource GIS Apps. Their GIS Hosting plans also come with your choice of cPanel or Plesk Panel for easy management of your account. Use promo code “&lt;strong&gt;veryspatial&lt;/strong&gt;” and get your first month of shared or dedicated cloud server plan FREE. That’s &lt;a href=&quot;http://MapServerPro.com&quot;&gt;MapServerPro.com&lt;/a&gt;&lt;/li&gt;</description>
	<pubDate>Mon, 17 Jun 2013 13:04:31 +0000</pubDate>
        <enclosure url="http://traffic.libsyn.com/avsp/AVSP_Episode413.mp3" length="0" type="audio/mpeg"/>
</item>
<item>
	<title>Gary's Bloggage: 150 Years Of The London Underground Map. In Lego.</title>
	<guid isPermaLink="false">http://www.vicchi.org/?p=3997</guid>
	<link>http://www.vicchi.org/2013/06/17/150-years-of-the-london-underground-map-in-lego/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=150-years-of-the-london-underground-map-in-lego</link>
	<description>&lt;p&gt;There was no Victoria or Jubilee lines at all. The Piccadilly line terminated at Hammersmith and Finsbury Park and had stations that have been closed for years; Brompton Road, Down Street and York Road. The Central Line stopped at Liverpool Street.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/vicchi/9064994507/&quot;&gt;&lt;img alt=&quot;south-kensington-lego-tube-map&quot; class=&quot;aligncenter size-full wp-image-4001&quot; height=&quot;765&quot; src=&quot;http://www.vicchi.org/wp-content/uploads/2013/06/south-kensington-lego-tube-map.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Did I mention the entire map was made of &lt;em&gt;Lego&lt;/em&gt;?&lt;/p&gt;
&lt;p&gt;It’s all part of the celebrations marking 150 years of the London Underground network. In addition to the South Kensington map, which shows the tube network circa 1927 and which also explains the closed stations and missing lines, there’s another 4 maps scattered across the network, if you know where to look.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/harupico/9047317349/&quot;&gt;&lt;img alt=&quot;kings-cross-lego-tube-map&quot; class=&quot;aligncenter size-full wp-image-3999&quot; height=&quot;765&quot; src=&quot;http://www.vicchi.org/wp-content/uploads/2013/06/kings-cross-lego-tube-map.jpg&quot; width=&quot;1024&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;At Piccadilly Circus there’s a map from 1933, the first of Harry Beck’s iconic designs. At Green Park there’s a 1969 map. At Stratford there’s an up-to-date 2013 map. Finally at King’s Cross St. Pancras there’s a view of how the map might look in 2020, with Crossrail up and running.&lt;/p&gt;
&lt;div class=&quot;credits&quot;&gt;Photo Credits: &lt;a href=&quot;http://www.flickr.com/photos/harupico/9047317349/&quot;&gt;picolin&lt;/a&gt; and &lt;a href=&quot;http://www.flickr.com/photos/vicchi/9064994507/&quot;&gt;vicchi&lt;/a&gt; on Flickr.&lt;/div&gt;
&lt;div class=&quot;geo&quot;&gt;Written and posted from the Royal Geographical Society (51.50127, -0.17476)&lt;/div&gt;
 
&lt;p&gt;&lt;img alt=&quot;&quot; class=&quot;wp-biographia-avatar avatar-100 photo&quot; height=&quot;100&quot; src=&quot;http://1.gravatar.com/avatar/d300ed1dcec487e20c8600570abeffab?s=100&amp;amp;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D100&amp;amp;r=G&quot; width=&quot;100&quot; /&gt;&lt;/p&gt;&lt;div class=&quot;wp-biographia-text&quot;&gt;&lt;h3&gt;Another Piece Of Bloggage By &lt;a href=&quot;http://www.vicchi.org/author/gary/&quot; title=&quot;Gary&quot;&gt;Gary&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Self professed ”geek with a life”, &lt;a href=&quot;http://www.vicchi.org&quot;&gt;geo-blogger&lt;/a&gt;, &lt;a href=&quot;http://www.vicchi.org/speaking/&quot;&gt;geo-talker&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/#!/vicchi&quot;&gt;geo-tweeter&lt;/a&gt;, Gary works in London and Berlin as Director of &lt;a href=&quot;http://here.com&quot;&gt;Global Community Programs for Nokia’s HERE Maps&lt;/a&gt;; he’s a co-founder of &lt;a href=&quot;http://wherecamp.eu&quot;&gt;WhereCamp EU&lt;/a&gt;, the chair of &lt;a href=&quot;http://www.w3gconf.com&quot;&gt;w3gconf&lt;/a&gt; and sits on the W3C POI Working Group and the UK Location User Group. A &lt;a href=&quot;https://github.com/vicchi&quot;&gt;contributor&lt;/a&gt; to the &lt;a href=&quot;http://mapstraction.com/&quot;&gt;Mapstraction&lt;/a&gt; mapping API, Gary speaks and presents at a wide range of conferences and events including &lt;a href=&quot;http://where2conf.com/&quot;&gt;Where 2.0&lt;/a&gt;, State of the Map, &lt;a href=&quot;http://www.agigeocommunity.com/&quot;&gt;AGI GeoCommunity&lt;/a&gt;, &lt;a href=&quot;http://geoloco.tv/&quot;&gt;Geo-Loco&lt;/a&gt;, &lt;a href=&quot;http://socialloco.net/&quot;&gt;Social-Loco&lt;/a&gt;, &lt;a href=&quot;http://geomobldn.org/&quot;&gt;GeoMob&lt;/a&gt;, the &lt;a href=&quot;http://geospatial.bcs.org/web/&quot;&gt;BCS GeoSpatial SG&lt;/a&gt; and &lt;a href=&quot;http://news.thewherebusiness.com/lbs&quot;&gt;LocBiz&lt;/a&gt;. Writing as regularly as possible on location, place, maps and other facets of geography, Gary blogs at &lt;a href=&quot;http://www.vicchi.org&quot;&gt;www.vicchi.org&lt;/a&gt; and tweets as &lt;a href=&quot;http://twitter.com/#!/vicchi&quot;&gt;@vicchi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;wp-biographia-links&quot;&gt;&lt;small&gt;&lt;a class=&quot;wp-biographia-link-&quot; href=&quot;mailto:gary@vicchi.org&quot; target=&quot;_self&quot; title=&quot;Send Gary Mail&quot;&gt;Mail&lt;/a&gt; | &lt;a class=&quot;wp-biographia-link-&quot; href=&quot;http://www.vicchi.org/about/&quot; target=&quot;_self&quot; title=&quot;Gary On The Web&quot;&gt;Web&lt;/a&gt; | &lt;a class=&quot;wp-biographia-link-&quot; href=&quot;https://twitter.com/#!/vicchi&quot; target=&quot;_self&quot; title=&quot;Gary On Twitter&quot;&gt;Twitter&lt;/a&gt; | &lt;a class=&quot;wp-biographia-link-&quot; href=&quot;https://www.facebook.com/vicchi&quot; target=&quot;_self&quot; title=&quot;Gary On Facebook&quot;&gt;Facebook&lt;/a&gt; | &lt;a class=&quot;wp-biographia-link-&quot; href=&quot;http://uk.linkedin.com/in/garygale&quot; target=&quot;_self&quot; title=&quot;Gary On LinkedIn&quot;&gt;LinkedIn&lt;/a&gt; | &lt;a class=&quot;wp-biographia-link-&quot; href=&quot;https://plus.google.com/112341509012024280765?rel=author&quot; target=&quot;_self&quot; title=&quot;Gary On Google+&quot;&gt;Google+&lt;/a&gt; | &lt;a class=&quot;wp-biographia-link-&quot; href=&quot;http://www.vicchi.org/author/gary/&quot; target=&quot;_self&quot; title=&quot;More Posts By Gary&quot;&gt;More Posts (366)&lt;/a&gt;&lt;/small&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 17 Jun 2013 11:45:17 +0000</pubDate>
</item>
<item>
	<title>geomobLDN: Welcome OpenCage Data as new #geomob sponsor</title>
	<guid isPermaLink="true">http://geomobldn.org/post/53185140554</guid>
	<link>http://geomobldn.org/post/53185140554</link>
	<description>&lt;p&gt;Fellow geomobsters,&lt;/p&gt;
&lt;p&gt;I’m delighted to announce our new sponsor &lt;a href=&quot;http://www.opencagedata.com&quot;&gt;OpenCage Data&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.opencagedata.com&quot;&gt;&lt;img src=&quot;http://media.tumblr.com/63266a7963802d46a3227f218187fd29/tumblr_inline_moj66mKlKF1qz4rgp.png&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OpenCage helps organisations make use of OpenStreetMap data by providing a simple and affordable data extraction service. In their own words “&lt;span&gt;OpenStreetMap data &lt;/span&gt;&lt;span&gt;when you want it, in the format you want it”. If you want to avoid the yak-shaving involved in ongoing data extraction give OpenCage a try.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;This week we’ll be posting the lineup for our next event which will be on 11th of July at 18:30 at Google’s Old Street Campus. Please register on &lt;a href=&quot;http://lanyrd.com/2013/geomob-july/&quot;&gt;the event page on Lanyrd&lt;/a&gt; so we can get a sense of the numbers.  We look forward to seeing everyone there, the post-talk geobeers will be on OpenCage Data and our other sponsor &lt;a href=&quot;http://knowwhereconsulting.co.uk/&quot;&gt;knowwhere consulting&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 09:30:09 +0000</pubDate>
</item>
<item>
	<title>All Points Blog: GitHub Now Visualizes geoJSON (with MapBox and OpenStreetMap)</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/github-now-visualizes-geojson-with-mapbox-and-openstreetmap/334966</guid>
	<link>http://apb.directionsmag.com/entry/github-now-visualizes-geojson-with-mapbox-and-openstreetmap/334966</link>
	<description>An e-mail from the folks at GitHub (though we'd already seen the buzz on Twitter) announces new mapping visualization on that platform. (Not sure what GitHub is? See Directions Magazine coverage.)

	
		TL;DR: commit a .geojson file to a repository, and GitHub will render any points,... &lt;a href=&quot;http://apb.directionsmag.com/entry/github-now-visualizes-geojson-with-mapbox-and-openstreetmap/334966&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Mon, 17 Jun 2013 09:21:27 +0000</pubDate>
</item>
<item>
	<title>All Points Blog: Trebek Pledges $1M to Geobee and other Education GIS News</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/virginia-tech-wins-geoleague-challenge-and-other-education-gis-news/334467</guid>
	<link>http://apb.directionsmag.com/entry/virginia-tech-wins-geoleague-challenge-and-other-education-gis-news/334467</link>
	<description>National Geographic Society’s 125th Anniversary Gala was June 13. Several folks who are well-known were honored for outstanding contributions: Felix Baumgartner, Howard G. Buffett, James Cameron, Sylvia A. Earle, Alex Trebek and Edward O. Wilson.
	
		 
	
		Also noteworthy was the... &lt;a href=&quot;http://apb.directionsmag.com/entry/virginia-tech-wins-geoleague-challenge-and-other-education-gis-news/334467&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Mon, 17 Jun 2013 08:56:41 +0000</pubDate>
</item>
<item>
	<title>All Points Blog: DigitalGlobe to Expand, Stay in Colorado</title>
	<guid isPermaLink="true">http://apb.directionsmag.com/entry/digitalglobe-to-expand-stay-in-colorado/334926</guid>
	<link>http://apb.directionsmag.com/entry/digitalglobe-to-expand-stay-in-colorado/334926</link>
	<description>DigitalGlobe, Colorado’s highest-flying tech company—literally—reportedly plans to add more than 500 jobs and is considering relocating its corporate headquarters within the Denver-Boulder area.


	- Xconomy

         ... &lt;a href=&quot;http://apb.directionsmag.com/entry/digitalglobe-to-expand-stay-in-colorado/334926&quot;&gt;Continue reading&lt;/a&gt;</description>
	<pubDate>Mon, 17 Jun 2013 08:25:12 +0000</pubDate>
</item>
<item>
	<title>Directions Magazine: Filling the Gap: Selecting a Location for a New Walkable Facility</title>
	<guid isPermaLink="true">http://www.directionsmag.com/articles/filling-the-gap-selecting-a-location-for-a-new-walkable-facility1/333010</guid>
	<link>http://www.directionsmag.com/articles/filling-the-gap-selecting-a-location-for-a-new-walkable-facility1/333010</link>
	<description>This article focuses on a unique site selection problem for calculating the demand of a Muslim population for locating religious facilities (mosques) as an example of services that require short walking distance. Geodecision&amp;amp;rsquo;s senior GIS Analyst Hany A. Hassaballa shares his methodology for identifying a catchment area and determining service level capacity for sites under consideration.</description>
	<pubDate>Mon, 17 Jun 2013 06:19:55 +0000</pubDate>
</item>
<item>
	<title>LISasoft Blog: GeoServer Training Canberra Wrap-up</title>
	<guid isPermaLink="false">http://www.lisasoft.com/274 at http://www.lisasoft.com</guid>
	<link>http://www.lisasoft.com/blog/geoserver-training-canberra-wrap</link>
	<description>&lt;div class=&quot;field field-name-body field-type-text-with-summary field-label-hidden&quot;&gt;&lt;div class=&quot;field-items&quot;&gt;&lt;div class=&quot;field-item even&quot;&gt;&lt;p&gt;Last weeks GeoServer Fundamentals course in Canberra was a good deal of fun. Thanks to the attendees bringing a fascinating range of questions. The location was very convenient in downtown Canberra, but I was in for a bit of a shock. It seems Canberra is an early-to-rise town with everyone showing up early for a 9:30 start!&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;Course Day 2&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/gs_canberra_day2.jpg&quot; style=&quot;width: 410px; height: 410px;&quot; /&gt;&lt;br /&gt;&lt;img alt=&quot;Instructor&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/gs_canebrra_instructor.jpg&quot; style=&quot;width: 205px; height: 154px;&quot; /&gt; &lt;img alt=&quot;Facilities&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/gs_canerra_facilities.jpg&quot; style=&quot;width: 205px; height: 154px;&quot; /&gt;&lt;span style=&quot;display: none;&quot;&gt; &lt;/span&gt;&lt;/p&gt;&lt;p&gt;LISAsoft is pleased to offer &lt;a href=&quot;http://www.lisasoft.com/geoserver&quot; title=&quot;development and support&quot;&gt;GeoServer Development and Support&lt;/a&gt; and of course our &lt;a href=&quot;http://www.lisasoft.com/professional-geoserver-progs&quot; title=&quot;geoserver training&quot;&gt;Professional GeoServer Training.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;GeoServer&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/GeoServer_200.png&quot; style=&quot;width: 200px; height: 47px;&quot; /&gt;&lt;/p&gt;&lt;h2&gt;Printing Plugin Basemap&lt;/h2&gt;&lt;p&gt;The training course covers how to install and use the printing &quot;community&quot; module (allowing you to decorate PDF output from GeoServer with branding information). Unfortunately the basemap used by the printing module was missing in action (causing the open layers preview to timeout trying to access the content).&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal;&quot;&gt;As is my tradition I always try for one bug report during the course of a training course. Providing the development team with a bug report is the easiest way to contribute to open source. &lt;/span&gt;Since the printing module is not directly distributed by the GeoServer team there is no clear point of contact. With that in mind producing the bug report &lt;a href=&quot;https://jira.codehaus.org/browse/GEOS-5848&quot; title=&quot;GEOS-5848&quot;&gt;GEOS-5848&lt;/a&gt; was not as clear cut as usual with all community modules lumped into a single category.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://jira.codehaus.org/browse/GEOS-5848&quot; title=&quot;Printing Module Issue&quot;&gt;&lt;img alt=&quot;GEOS-5848&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/GEOS-5848.png&quot; style=&quot;font-style: normal; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif; width: 335px; height: 191px;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;Risk and Rewards of GeoServer Community Modules&lt;/h3&gt;&lt;p&gt;&lt;span style=&quot;font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal;&quot;&gt;GeoServer provides a staging area in the code-base for for community modules. &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal;&quot;&gt;These modules are optional and often experimental in nature. Importantly they are not subject to the strict quality assurance procedures expected of the core GeoServer application (and the extensions available on the download page).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;img alt=&quot;GeoServer Modules&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/modular.png&quot; style=&quot;width: 316px; height: 216px;&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal;&quot;&gt;Hunting down a community module (in order to try it out) can be difficult as GeoServer community does not formally publish them. The modules have not been subjected to IP review, and do not yet meet the GeoServer quality assurance requirements.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;One facility that is made available to community modules is a build server, to ensure the code compiles. As a user we can check the build server results for a chance to download and evaluate a community modules without compiling from source:&lt;/p&gt;&lt;p&gt;1. Navigate to the nightly build results: &lt;a href=&quot;http://gridlock.opengeo.org/geoserver/&quot; title=&quot;gridlock.opengeo.org/geoserver/&quot;&gt;http://gridlock.opengeo.org/geoserver/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;2. Look for the version of GeoServer you are interested in and open the community-latest folder&lt;br /&gt;&lt;img alt=&quot;Community Latest&quot; src=&quot;http://www.lisasoft.com/sites/lisasoft/files/u9/community_latest.png&quot; style=&quot;width: 280px; height: 220px;&quot; /&gt;&lt;/p&gt;&lt;p&gt;3. Shutdown GeoServer&lt;/p&gt;&lt;p&gt;4. Download and unzip into geoserver/WEB-INF/lib&lt;/p&gt;&lt;p&gt;5. Restart GeoServer&lt;/p&gt;&lt;p style=&quot;font-style: normal; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif;&quot;&gt;It is best to consider these community modules as opportunities to take part in GeoServer. The source code &lt;span style=&quot;font-style: normal; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif;&quot;&gt;is available &lt;/span&gt;&lt;a href=&quot;https://github.com/geoserver/geoserver/tree/master/src/community&quot; style=&quot;font-style: normal; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif;&quot; title=&quot;gitbub&quot;&gt;directly&lt;/a&gt;&lt;span style=&quot;font-style: normal; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif;&quot;&gt; from GitHub and &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal;&quot;&gt;offers a show case good ideas.&lt;/span&gt;&lt;/p&gt;&lt;p style=&quot;font-style: normal; font-size: 12px; font-family: Arial, Verdana, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px; font-style: normal;&quot;&gt;If you are looking at taking any of these community modules into production be sure to talk to &lt;a href=&quot;http://geoserver.org/display/GEOS/Commercial+Support&quot; title=&quot;GeoServer Commercial Support&quot;&gt;your provider&lt;/a&gt; about bringing them up to supported status. Of course if you are looking for a commercial provider for &lt;a href=&quot;http://www.lisasoft.com/geoserver&quot; title=&quot;GeoServer development and support&quot;&gt;GeoServer development and support&lt;/a&gt; we would be glad to talk to you at &lt;a href=&quot;http://www.lisasoft.com/contact-us&quot; title=&quot;contact us&quot;&gt;LISAsoft&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</description>
	<pubDate>Mon, 17 Jun 2013 01:50:02 +0000</pubDate>
</item>
<item>
	<title>LiDAR News: Upcoming User Conferences</title>
	<guid isPermaLink="false">http://blog.lidarnews.com/?p=11677</guid>
	<link>http://feedproxy.google.com/~r/InTheScan/~3/MlhrUhJxa_0/upcoming-user-conferences</link>
	<description>Riegl, Optech and Esri will host their customer events over the next 3 weeks and LiDAR News will be there to cover them all. Continue reading →&lt;br /&gt;
&lt;br /&gt;
Click Title to Continue Reading...&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/InTheScan/~4/MlhrUhJxa_0&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Mon, 17 Jun 2013 01:04:11 +0000</pubDate>
</item>
<item>
	<title>Between the Poles: Cumulative smart grid revenue 2013 to 2020 projected to reach $461 billion</title>
	<guid isPermaLink="false">tag:typepad.com,2003:post-6a00d83476d35153ef0192ab357410970d</guid>
	<link>http://feedproxy.google.com/~r/typepad/zeissg/geospatial/~3/6wecGN9riqo/cumulative-smart-grid-revenue-2013-to-2020-projected-to-reach-461-billion.html</link>
	<description>&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01901d7b2aef970b-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;NIST Smart Grid FrameworkGraphic_1_1&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef01901d7b2aef970b&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef01901d7b2aef970b-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;NIST Smart Grid FrameworkGraphic_1_1&quot; /&gt;&lt;/a&gt;I &lt;a href=&quot;http://geospatial.blogs.com/geospatial/2013/04/global-smart-grid-investment-reached-365-billion-in-2012.html&quot; target=&quot;_self&quot;&gt;blogged&lt;/a&gt; recently about a report from Memoori, a UK research firm, called “&lt;a href=&quot;http://www.memoori.com/portfolio/the-smart-grid-business-2012-to-2017/&quot; target=&quot;_self&quot;&gt;The Smart Grid Business 2012 to 2017&lt;/a&gt;”,
 which analyzes global smart grid-related sales. Its research has 
identified some interesting trends in the current smart grid market.&lt;strong&gt;  &lt;/strong&gt;In the last 3 years Memoori estimates that the world smart 
grid-related sales has more than doubled from $16.2 billion in 2010 to 
$36.5 in 2012. 40% of this is smart meters&lt;/p&gt;
&lt;p&gt;A&lt;a href=&quot;http://www.navigantresearch.com/newsroom/smart-grid-technology-market-will-reach-73-billion-in-annual-revenue-by-2020&quot; target=&quot;_self&quot;&gt; recent report&lt;/a&gt; from Navigant Research says that the global smart grid technologies market amounted to more than $33 billion in revenue in 2012.   Navigant is projecting that the market for smart grid technologies will reach $73 billion in annual revenue by the end of 2020.  The cumulative total for 2013 to 2020 is projected to reach  totaling $461 billion.&lt;br /&gt;&lt;br /&gt;The report identified five segments: transmission upgrades, substation automation, distribution automation, smart grid information and operations technology and smart metering.  According to Navigant the most capital-intensive segment is transmission, which is estimated to contribute nearly $250 billion in revenue from 2013 to 2020, more than half the cumulative total for the smart grid technology market.&lt;/p&gt;
&lt;p&gt;
&lt;a class=&quot;asset-img-link&quot; href=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef019103711e7e970c-popup&quot; style=&quot;float: right;&quot;&gt;&lt;img alt=&quot;Smart grid capex 2012-2030 Innovation Observatory&quot; class=&quot;asset  asset-image at-xid-6a00d83476d35153ef019103711e7e970c&quot; src=&quot;http://geospatial.blogs.com/.a/6a00d83476d35153ef019103711e7e970c-320wi&quot; style=&quot;margin: 0px 0px 5px 5px;&quot; title=&quot;Smart grid capex 2012-2030 Innovation Observatory&quot; /&gt;&lt;/a&gt;According to a &lt;a href=&quot;http://www.innovationobservatory.com/content/smart-grid-technology-investment-forecasts&quot; target=&quot;_self&quot;&gt;report&lt;/a&gt; by Innovation Observatory 80 % of the worldwide investment in electricity smart grids by 2030 will be made by 10 countries.  Over the next five years, it is projected that the United States will dominate global capital expenditure, but China is projected to pass the U.S. in 2016.   For the entire period through 2030, the top spending countires will be China (US$99 billion by 2030),  United States (US$60 billion by 2030), India, France, Germany, Brazil, Spain, United Kingdom, Japan and Korea.&lt;/p&gt;</description>
	<pubDate>Mon, 17 Jun 2013 00:38:09 +0000</pubDate>
</item>
<item>
	<title>Prioleau Advisors: Beating the Block: How to take on Google Maps</title>
	<guid isPermaLink="false">http://prioleauadv.com/?p=473</guid>
	<link>http://prioleauadv.com/archives/473</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://prioleauadv.com/wp-content/uploads/2013/06/B-2_spirit_bombing.jpg&quot;&gt;&lt;img alt=&quot;B-2_spirit_bombing&quot; class=&quot;alignleft size-medium wp-image-475&quot; height=&quot;300&quot; src=&quot;http://prioleauadv.com/wp-content/uploads/2013/06/B-2_spirit_bombing-240x300.jpg&quot; width=&quot;240&quot; /&gt;&lt;/a&gt;&lt;em&gt;June 17, 2013: &lt;/em&gt;In November 1989, the &lt;a href=&quot;http://en.wikipedia.org/wiki/Berlin_Wall&quot;&gt;Berlin Wall&lt;/a&gt; came down, symbolically ending the Cold War. Two years later, the Soviet Union dissolved, leaving the United States as “&lt;a href=&quot;http://www.nelsonprice.com/america-the-worlds-only-superpower/&quot;&gt;the world’s only superpower”&lt;/a&gt;. In the decade that followed, no other country could come close to the military power of the U.S.&lt;/p&gt;
&lt;p&gt;Notwithstanding, in January, 1997, the US Air Force launched the B-2 bomber, the most advanced military bomber in history. It is capable of penetrating deeply into Soviet airspace…combatting a threat which no longer exists.&lt;/p&gt;
&lt;p&gt;I thought of that when Google bought Waze last week.&lt;/p&gt;
&lt;p&gt;&lt;span id=&quot;more-473&quot;&gt;&lt;/span&gt;OK, so the analogy is a little stretched, but the point is that today Google is the world’s only mapping superpower.  No one is close and they’re pulling away.  Yet last week, they beat out several possible rivals to pull the trigger on a $1B acquisition for Waze, a company which, while very innovative, had assets that largely &lt;a href=&quot;http://prioleauadv.com/archives/459&quot;&gt;overlapping&lt;/a&gt; with Google’s existing capabilities. Google just added more firepower to win a war that everybody else seems to be afraid to fight.&lt;/p&gt;
&lt;p&gt;Last week I explored &lt;a href=&quot;http://prioleauadv.com/archives/466&quot; title=&quot;Blocking Strategies: Why Google Bought Waze&quot;&gt;&lt;strong&gt;why&lt;/strong&gt;&lt;/a&gt; they bought Waze. I think it’s a blocking move, to keep others from getting Waze’s proprietary map data and team. That would have been a good starting point for a competitor.&lt;/p&gt;
&lt;p&gt;Now I am thinking about how to beat that block; how the rest of the world might compete with Google Maps.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 1: Frontal Assault (aka The Dumb Way)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;One way to compete with G-Maps is to just go at them, match them feature for feature,and take share from them. Continuing the tortured military analogy, this would be the equivalent of conventional war…head on, army against army on the field of battle (cue flags flying and drums rolling).&lt;/p&gt;
&lt;p&gt;For my friends who do not live in America, let me tell you a secret: We Americans like this strategy. It’s dramatic. It makes great television. And we win. Always. Ask Saddam Hussein (next time you see him). But this seems to be the way most people think about going after Google Maps. And they lose. Always. It doesn’t matter if they are small start-ups or big companies. They lose. At best they build a version that looks kind of like Google, but not as good. You can make that list yourselves.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Option 2: Guerrilla Warfare&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://prioleauadv.com/wp-content/uploads/2013/06/al-Qaeda.jpg&quot;&gt;&lt;img alt=&quot;al-Qaeda&quot; class=&quot;alignleft size-medium wp-image-474&quot; height=&quot;198&quot; src=&quot;http://prioleauadv.com/wp-content/uploads/2013/06/al-Qaeda-300x198.jpg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/strong&gt;We Americans are less excited about the type of war we are fighting now against al-Qaeda in Afghanistan.  It goes on and on. It costs a lot of money. It is not good television; in fact we rarely report it except on page 26 in the paper. We’re not sure we are winning or will have made a difference once we’re gone. The fact is, these al-Qaeda guys are doing a pretty good job against the world’s only superpower.  (&lt;em&gt;Note: I’m not talking here about the pros and cons of this war. It’s not my topic or expertise. I’m just making an illustration. Spare me the hate mail).&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;So the obvious question (to me at least) is: “What would al-Qaeda do if they were fighting Google for map dominance?” Asked another way, how would you change the game to even the odds against such a strong competitor?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Three Ways to Even the Odds&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;&lt;span style=&quot;line-height: 16px;&quot;&gt;&lt;strong&gt;Fight with a Mission:&lt;/strong&gt; I don’t begin to understand al-Qaeda’s mission for the world, but it seems they have one. You don’t strap a suicide belt on without having a mission for something bigger. Google has a &lt;a href=&quot;http://www.google.com/about/company/&quot;&gt;mission&lt;/a&gt;: “T&lt;/span&gt;&lt;/span&gt;o organize the world’s information and make it universally accessible and useful.” Location is one way to organizing and accessing that information. Google invests in maps, local search, navigation and now Waze because they are fulfilling that mission of organizing the world’s information. &lt;strong&gt;Everyone else&lt;/strong&gt;&lt;strong&gt; is just building a mapping app. &lt;/strong&gt;That’s it. No vision. No one is going to compete with Google unless they have a similar mission that drives their goals in location.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://prioleauadv.com/wp-content/uploads/2013/06/Waterloo.jpeg&quot;&gt;&lt;img alt=&quot;Waterloo&quot; class=&quot;alignleft size-medium wp-image-487&quot; height=&quot;168&quot; src=&quot;http://prioleauadv.com/wp-content/uploads/2013/06/Waterloo-300x168.jpeg&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;Neutralize their Strengths:&lt;/strong&gt; al-Qaeda doesn’t launch waves of troops in neat rows at us. They take advantage of their strengths (mainly home-court advantage in Afghanistan)  to mitigate the US military superiority. Google Maps has a lot of strengths: great team, excellent distribution through the Google search, strong ad model, proprietary map data and so on. &lt;strong&gt;To compete, you need to neutralize at least some of those advantages.&lt;/strong&gt; OSM is one possible game changer. Assuming it can overcome its issues (geocoding, license ambiguity and completeness), it shifts the competitive advantage from &lt;em&gt;data ownership&lt;/em&gt; to &lt;em&gt;services delivery&lt;/em&gt;. That neutralizes an advantage that Google has spent hundreds of millions of dollars building.  As a potential competitor to Google, do you start your own new map database or join to build out OSM? That’s the type of thinking it will take to match Google: how can you neutralize the seemingly invincible strengths that they have. Map data isn’t the only area: distribution, business model, partnerships…all have possible strategies. There’s room for a lot of creativity here, but today I don’t see people exercising that.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pick Your Battleground: &lt;/strong&gt;It’s no accident that al-Qaeda picks most of its fights up in the mountains  where they minimize their exposure, have access to safety across the border and have an intelligence advantage over the US. Google is really strong in the local search market. It is pretty hard to win there.  But there are other areas where they could be more easily challenged.  I think enterprise is one. Social search is another. Picking the right area to develop a beachhead is key to getting traction.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;lt;painful experience&amp;gt;I have no illusions that it would be easy to carve out an place in on-line mapping against Google&amp;lt;/painful experience&amp;gt;. They have an excellent team, lots of resources, vision and momentum. But that’s exactly why those who would compete (and I hope their are some out there) need to be a lot more creative than they now are.&lt;/p&gt;
&lt;p&gt;It would be good for the industry and good for Google.&lt;/p&gt;
&lt;p&gt;Notes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h5&gt;To the NSA: I do not know anyone in al-Qaeda. I do not send them e-mails or even Christmas cards. I sure don’t call them on my cell phone. I do not know if they have any intention to launch an on-line mapping platform or even if they like cartography. I love America. Please do not wire-tap my phone. And no drone strikes. Seriously.&lt;/h5&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h5&gt;Note #1 above not withstanding, I do think the world would be a better place if al-Qaeda would lay down their arms and take up cartography.  Perhaps they could start hosting OSM mapping parties in the Hindu Kush.  Links &lt;a href=&quot;http://2013.stateofthemap.org/&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://hot.openstreetmap.org/&quot;&gt;here&lt;/a&gt; if interested.&lt;/h5&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;/p&gt;</description>
	<pubDate>Sun, 16 Jun 2013 21:47:27 +0000</pubDate>
</item>
<item>
	<title>Free and Open Source GIS Ramblings: TimeManager for QGIS 2.0</title>
	<guid isPermaLink="false">http://anitagraser.com/?p=2655</guid>
	<link>http://anitagraser.com/2013/06/16/timemanager-for-qgis-2-0/</link>
	<description>&lt;p&gt;As I’m sure you have already heard, QGIS 2.0 will come with a &lt;a href=&quot;http://nathanw.net/2013/06/13/new-qgis-20-api/&quot;&gt;new Python API&lt;/a&gt; including many improvements and a generally more pythonic way of doing things. But of course that comes with a price: Old plugins (pre 2.0) won’t work anymore unless they are updated to the new version. Therefore all plugin developers are encouraged to take the time and update their plugins. An overview of changes and &lt;a href=&quot;http://hub.qgis.org/projects/quantum-gis/wiki/Python_plugin_API_changes_from_18_to_20&quot;&gt;howto for updates is available on the QGIS wiki&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://plugins.qgis.org/plugins/timemanager/&quot;&gt;TimeManager for QGIS 2.0&lt;/a&gt; will be available from day 1 of the new release. I’ve tested the usual work flows but don’t hesitate to let me know if you find any problems. The whole update process took two to three hours &lt;em&gt;… sooo many signals to update …&lt;/em&gt; but all in all, it was far less painful than expected, thanks to everyone who contributed to the wiki update instructions!&lt;/p&gt;
&lt;br /&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/underdark.wordpress.com/2655/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/underdark.wordpress.com/2655/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=anitagraser.com&amp;amp;blog=835829&amp;amp;post=2655&amp;amp;subd=underdark&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 16 Jun 2013 18:43:57 +0000</pubDate>
</item>
<item>
	<title>geomaticblog: Primeras impresiones de Smart Citizen</title>
	<guid isPermaLink="false">http://geomaticblog.net/?p=961</guid>
	<link>http://geomaticblog.net/2013/06/16/primeras-impresiones-de-smart-citizen/</link>
	<description>&lt;p&gt;&lt;a href=&quot;http://smartcitizen.me&quot;&gt;Smart Citizen&lt;/a&gt; es un proyecto que apareció en &lt;a href=&quot;http://goteo.org/project/smart-citizen-sensores-ciudadanos&quot;&gt;goteo&lt;/a&gt; hace un año. Goteo es una web de &lt;em&gt;crowdfunding&lt;/em&gt; al estilo de Kickstarter. Apareció poco después del &lt;a href=&quot;http://airqualityegg.com/&quot;&gt;Air Quality Egg&lt;/a&gt;, al cual llegué tarde para participar. Así que nada, cuando vi una idea similar me apunté sin pensármelo mucho. ¿Cuál es la idea? Bien es sencillo, imaginad una red &lt;strong&gt;completamente voluntaria&lt;/strong&gt; para la medición de variables medioambientales, sobre todo aquellas relacionadas con la contaminación tanto acústica como de cualquier otro tipo. Esa red no estaría controlada por ningún organismo, realmente es una red porque existe una forma común de acceder a todos los datos, pero los miembros ni se conocen, ni tienen por qué tener los mismos objetivos, ni las mismas motivaciones. ¿A que recuerda a otras actividades similares? Efectivamente, se trata al igual que en &lt;a href=&quot;http://osm.org&quot;&gt;OSM&lt;/a&gt; por ejemplo, de &lt;em&gt;«mapear»&lt;/em&gt; el territorio solo que de una forma diferente, un paso más allá de la representación estática de la realidad, hacia un conocimiento &lt;strong&gt;más profundo&lt;/strong&gt; de nuestro entorno al entrar en el mundo de los sensores en tiempo real, de la famosa Internet de las Cosas.&lt;/p&gt;
&lt;p&gt;Tanto &lt;a href=&quot;http://smartcitizen.me&quot;&gt;Smart Citizen&lt;/a&gt; como &lt;a href=&quot;http://airqualityegg.com&quot;&gt;AQE&lt;/a&gt; solo son los comienzos de una nueva generación de &lt;em&gt;hardware&lt;/em&gt;, &lt;em&gt;software&lt;/em&gt; y servicios que nos harán ser más conscientes (y espero concienciados) de nuestro entorno, de la calidad del mismo y de cómo evoluciona tanto en el corto plazo como con miras un poco más alejadas. Con todo este conjunto de datos en bruto publicados en tiempo real, ¿quién sabe qué innovaciones veremos en los próximos años y cómo éstas afectarán nuestras vidas?.&lt;/p&gt;
&lt;p&gt;En fin, volviendo al caso concreto de Smart Citizen, hace poco me llegó la placa. Básicamente es una placa &lt;a href=&quot;http://arduino.cc/&quot;&gt;Arduino&lt;/a&gt; con una placa superior de sensores (&lt;em&gt;shield&lt;/em&gt; en el argot Arduino) y una batería. La placa ya viene con el software precargado aunque ciertamente van a ir saliendo actualizaciones del mismo que hay que cargar con el entorno de desarrollo estándar de Arduino, sin mucho más misterio.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/xurxosanz/9060074052/&quot; title=&quot;SCK by XuRxO, on Flickr&quot;&gt;&lt;img alt=&quot;SCK&quot; class=&quot;aligncenter&quot; height=&quot;375&quot; src=&quot;http://farm4.staticflickr.com/3779/9060074052_8fc963cb78.jpg&quot; width=&quot;500&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Para poner en marcha la placa solo hay que configurar la red wifi a la que se conectará. Esto se hace a través de la web mediante un &lt;em&gt;applet&lt;/em&gt; java que realiza todo el proceso. El único problema que tuve es que en mi caso, cuando se genera el puerto para el dispositivo no tengo permisos para usarlo por lo que tuve que ejecutar un sencillo &lt;tt&gt;sudo chmod 777 /dev/ttyACM0&lt;/tt&gt; para que fuera capaz de cargar la configuración. Una vez cargada, se reinicia la placa y empieza a enviar datos sin mayor inconveniente, quedando publicados de forma automática en &lt;a href=&quot;http://test.smartcitizen.me/devices/view/139&quot;&gt;la web&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;La web todavía está en desarrollo, bueno &lt;strong&gt;TODO&lt;/strong&gt; está aún en desarrollo, incluyendo el &lt;em&gt;firmware&lt;/em&gt; que ciertamente aún no presenta los datos de los sensores todo lo bien que debiera. Por ejemplo los valores de calidad de aire vienen en Ohmios, en lugar de las más típicas «partes por millón». Todo esto estoy seguro que se irá puliendo y aún cuando algún sensor no vaya del todo fino (me temo que el de sonido, por ejemplo), solo como primera aproximación a lo que puede ser el disponer de una red de sensores publicando en tiempo real toda esta información es más que interesante.&lt;/p&gt;
&lt;p&gt;La red &lt;a href=&quot;http://smartcitizen.me&quot;&gt;Smart Citizen&lt;/a&gt; está sobre todo (de momento) enfocada en Barcelona, de hecho la mía es la única placa hasta la fecha activada en la provincia de Valencia.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://test.smartcitizen.me/&quot;&gt;&lt;img alt=&quot;Smart CItizen en Barcelona&quot; class=&quot;aligncenter  wp-image-963&quot; height=&quot;291&quot; src=&quot;http://geomaticblog.files.wordpress.com/2013/06/2013-06-16-192707-seleccic3b3n.png?w=300&amp;amp;h=291&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Por otro lado todavía hay mucho que hacer en cuanto a la presentación de los datos que se van subiendo a su plataforma. Además de &lt;a href=&quot;http://test.smartcitizen.me/devices/view/139&quot;&gt;la web del sensor&lt;/a&gt; hay algún &lt;a href=&quot;http://data.smartcitizen.me/testjson?device=139&quot;&gt;punto de acceso&lt;/a&gt; para descargar en formato JSON todos los registros y también &lt;a href=&quot;http://data.smartcitizen.me/test?device=139&quot;&gt;una web&lt;/a&gt; para ver datos más antiguos que los escasos 20 minutos que se pueden ver desde la web oficial.&lt;/p&gt;
&lt;p&gt;En fin de momento eso es todo, la placa ahora mismo la tengo «indoor» porque aún tengo que ver cómo le conecto un panel solar o bien saco un cable USB para poder tenerla en el balcón de casa, y que haga medidas lo más estables posible. Ya iré contando.&lt;/p&gt;
&lt;br /&gt;Archivado en: &lt;a href=&quot;http://geomaticblog.net/category/geodatos/&quot;&gt;geodatos&lt;/a&gt;, &lt;a href=&quot;http://geomaticblog.net/category/hardware/&quot;&gt;hardware&lt;/a&gt;, &lt;a href=&quot;http://geomaticblog.net/category/gis/osm/&quot;&gt;OSM&lt;/a&gt;  &lt;a href=&quot;http://feeds.wordpress.com/1.0/gocomments/geomaticblog.wordpress.com/961/&quot; rel=&quot;nofollow&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://feeds.wordpress.com/1.0/comments/geomaticblog.wordpress.com/961/&quot; /&gt;&lt;/a&gt; &lt;img alt=&quot;&quot; border=&quot;0&quot; height=&quot;1&quot; src=&quot;http://stats.wordpress.com/b.gif?host=geomaticblog.net&amp;amp;blog=7328539&amp;amp;post=961&amp;amp;subd=geomaticblog&amp;amp;ref=&amp;amp;feed=1&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Sun, 16 Jun 2013 17:37:38 +0000</pubDate>
</item>
<item>
	<title>Dylan's Blog: Modeling an Infant's Feeding Schedule with Periodic Smoothing Splines</title>
	<guid isPermaLink="false">http://casoilresource.lawr.ucdavis.edu/1053 at http://casoilresource.lawr.ucdavis.edu/drupal</guid>
	<link>http://casoilresource.lawr.ucdavis.edu/drupal/node/1053</link>
	<description>&lt;p&gt;&lt;span class=&quot;inline inline-left&quot;&gt;&lt;a href=&quot;http://casoilresource.lawr.ucdavis.edu/drupal/node/1052&quot;&gt;&lt;img alt=&quot;Feeding Schedule&quot; class=&quot;image image-_original&quot; height=&quot;625&quot; src=&quot;http://casoilresource.lawr.ucdavis.edu/drupal/files/images/feeding.png&quot; title=&quot;Feeding Schedule&quot; width=&quot;1000&quot; /&gt;&lt;/a&gt;&lt;span class=&quot;caption&quot; style=&quot;width: 998px;&quot;&gt;&lt;strong&gt;Feeding Schedule&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;While on paternity leave I had an opportunity to test out periodic smoothing splines (within the framework of &lt;a href=&quot;http://en.wikipedia.org/wiki/Generalized_additive_model&quot;&gt;generalized additive models&lt;/a&gt;) on an interesting time-series-- an infant's feeding schedule.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://casoilresource.lawr.ucdavis.edu/drupal/node/1053&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
	<pubDate>Sat, 15 Jun 2013 22:23:09 +0000</pubDate>
        <enclosure url="http://casoilresource.lawr.ucdavis.edu/drupal/files/feeding.csv" length="4850" type="text/csv"/>
</item>
<item>
	<title>VerySpatial: Book Corner: Programming ArcGIS 10.1 with Python Cookbook</title>
	<guid isPermaLink="false">http://veryspatial.com/?p=11530</guid>
	<link>http://veryspatial.com/2013/06/book-corner-programming-arcgis-10-1-with-python-cookbook/</link>
	<description>&lt;p&gt;My fairly constant position now-a-days is “late to the game” and in this case that means that there are plenty of folks who have already shared their thoughts on &lt;a href=&quot;http://www.packtpub.com/programming-arcgis-10-1-with-python-cookbook/book&quot;&gt;&lt;em&gt;Programming ArcGIS 10.1 with Python Cookbook&lt;/em&gt;&lt;/a&gt; by Eric Pimpler from Packt Publishing.  &lt;a href=&quot;http://blog.rtwilson.com/review-programming-arcgis-10-1-with-python-cookbook/&quot;&gt;Robin Wilson, with his wife&lt;/a&gt;, summarized by saying &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Overall, the book is a very useful addition to a GIS library for people who are new to automating ArcGIS using Python, and particularly those who want to find out quickly how to automate a particular operation.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://spatiallyadjusted.com/2013/04/29/book-review-programming-arcgis-10-dot-1-with-python-cookbook/&quot;&gt;James Fee &lt;/a&gt;wrapped up his review by saying&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;So the bottom line here is this is a great introduction to ArcPy with ArcGIS 10.1. But if you’ve already started using either Python or ArcPy, you’d be best to use your time/money elsewhere. &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;These reviews, and others, indirectly highlight the issue of audience with each of the ArcGIS and Python books that have come out in 2012 and 2013. The books are intended for an introductory audience, but each is for a different introductory audience.  Nate Jennings’ &lt;a href=&quot;http://www.amazon.com/gp/product/146627459X/&quot;&gt;&lt;em&gt;A Python Primer for ArcGIS&lt;/em&gt; &lt;/a&gt; has a strong focus on what I would consider a community college/professional development audience. Esri Press’s own &lt;a href=&quot;http://veryspatial.com/2013/02/book-review-python-scripting-for-arcgis/&quot;&gt;&lt;em&gt;Python Scripting for ArcGIS&lt;/em&gt;&lt;/a&gt; by Paul Zandbergen is geared toward an upper-level undergrad or grad course to get students who already have a strong(ish) ArcGIS background up and running with Python.&lt;br /&gt;
&lt;span id=&quot;more-11530&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;em&gt;Programming ArcGIS 10.1 with Python Cookbook&lt;/em&gt; looks to a different audience, and one that I think is harder to get going: the professional who may not be confident with either ArcGIS or Python. This audience needs a clearer direction and structure that can be introduced quickly (&lt;a href=&quot;http://www.egisassociates.com/programming-arcgis-101-with-python.html&quot;&gt;say in a two-day course&lt;/a&gt;) but who needs a text that can be used as a quick reference once the course is over.  As Pimpler is used to dealing with &lt;a href=&quot;http://www.geospatialtraining.com/index.php?option=com_content&amp;amp;view=article&amp;amp;id=58&amp;amp;Itemid=90&quot;&gt;this audience&lt;/a&gt; it makes sense that he would focus on them. The text does a good job providing information to beginners to both ArcGIS and Python while not being overly simplistic if you have a moderate level of knowledge of either. The text is structured well to keep you working with both Python and ArcGIS throughout:&lt;/p&gt;
&lt;p&gt;Chapter 1: Fundamentals of the Python Language for ArcGIS&lt;br /&gt;
Chapter 2: Writing Basic Geoprocessing Scripts with ArcPy&lt;br /&gt;
Chapter 3: Managing Map Documents and Layers&lt;br /&gt;
Chapter 4: Finding and Fixing Broken Data Links&lt;br /&gt;
Chapter 5: Automating Map Production and Printing&lt;br /&gt;
Chapter 6: Executing Geoprocessing Tools from Scripts&lt;br /&gt;
Chapter 7: Creating Custom Geoprocessing Tools&lt;br /&gt;
Chapter 8: Querying and Selecting Data&lt;br /&gt;
Chapter 9: Using the ArcPy Data Access Module to Select, Insert, and Update Geographic Data and Tables&lt;br /&gt;
Chapter 10: Listing and Describing GIS Data&lt;br /&gt;
Chapter 11: Customizing the ArcGIS Interface with Add-Ins&lt;br /&gt;
Chapter 12: Error Handling and Troubleshooting&lt;br /&gt;
Appendix A: Automating Python Scripts&lt;br /&gt;
Appendix B: Five Things Every GIS Programmer Should Know How to Do with Python&lt;/p&gt;
&lt;p&gt;The cookbook style isn’t really for those with any level of advanced knowledge, but that’s not the audience this book is really directed at. However, if your boss told you that a new contract would require you to be able to script a map book for your client’s long term needs and you weren’t sure where to start, then you can grab this book and have a good go at the requirement. &lt;/p&gt;
&lt;p&gt;My largest complaint with the digital only text is that most folks, students to professionals, still seem to prefer a hard copy to flip through. While this hard copy leaning seems odd to me since I prefer the ability to search and digitally annotate (I only write legibly about 1/3 of the time, so typing means I can read my annotation) the ebook/PDF/online texts, the digital or print-it-yourself nature of this title might impact some folks decision on whether to buy the book. &lt;/p&gt;
&lt;p&gt;In the end, as others have said, &lt;em&gt;Programming ArcGIS 10.1 with Python Cookbook&lt;/em&gt; is a good starting point for getting into ArcGIS and Python, ArcPy especially. If you aren’t sure whether to add it to your reference shelf, you might want to head over to &lt;a href=&quot;http://books.google.com/books?id=U7VzGFk1io8C&amp;amp;dq=arcgis+python+cookbook&amp;amp;source=gbs_navlinks_s&quot;&gt;Google Books and skim through the sample pages&lt;/a&gt;.&lt;/p&gt;</description>
	<pubDate>Sat, 15 Jun 2013 20:27:12 +0000</pubDate>
</item>
<item>
	<title>LiDAR News: Laser Scanning Used to Create Greatness Awaits Commercial</title>
	<guid isPermaLink="false">http://blog.lidarnews.com/?p=11663</guid>
	<link>http://feedproxy.google.com/~r/InTheScan/~3/EjtkgoehK5o/laser-scanning-used-to-create-greatness-awaits-commercial</link>
	<description>He says they used the FARO Focus 3D to capture point cloud data for camera tracking, creating 3d models for the vfx and terrain modeling for accurate shadow casting. Continue reading →&lt;br /&gt;
&lt;br /&gt;
Click Title to Continue Reading...&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/InTheScan/~4/EjtkgoehK5o&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Sat, 15 Jun 2013 13:05:23 +0000</pubDate>
</item>
<item>
	<title>The Map Guy(de): Taking baby steps</title>
	<guid isPermaLink="false">tag:blogger.com,1999:blog-1951542926024108564.post-4813473205016604633</guid>
	<link>http://themapguyde.blogspot.com/2013/06/taking-baby-steps.html</link>
	<description>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;This doesn't actually work yet. But seeing output like this gives you the motivation to carry on.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://1.bp.blogspot.com/-AkY47yt2vSI/UbxUqB4TSiI/AAAAAAAADF0/OvAn0zA77e0/s1600/Capture.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;316&quot; src=&quot;http://1.bp.blogspot.com/-AkY47yt2vSI/UbxUqB4TSiI/AAAAAAAADF0/OvAn0zA77e0/s400/Capture.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://3.bp.blogspot.com/-04MMEZov2Rc/UbxVX6tleHI/AAAAAAAADF8/UjpgcdskHxY/s1600/Capture.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;287&quot; src=&quot;http://3.bp.blogspot.com/-04MMEZov2Rc/UbxVX6tleHI/AAAAAAAADF8/UjpgcdskHxY/s400/Capture.PNG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;</description>
	<pubDate>Sat, 15 Jun 2013 11:54:58 +0000</pubDate>
	<author>noreply@blogger.com (Jackie Ng)</author>
</item>
<item>
	<title>Fuzzy Tolerance: More Build Stuff - Grunt</title>
	<guid isPermaLink="false">http://fuzzytolerance.info/blog/more-build-stuff-grunt</guid>
	<link>http://feedproxy.google.com/~r/FuzzyTolerance/~3/WFDOCHVDnoA/</link>
	<description>&lt;p&gt;Behold! The 3rd post on automated build/dev processes for the web.&lt;/p&gt;

&lt;p&gt;This time we’re looking at &lt;a href=&quot;http://gruntjs.com/&quot;&gt;Grunt&lt;/a&gt;. We’re looking at Grunt because I blew up by &lt;a href=&quot;https://github.com/guard/guard&quot;&gt;Guard&lt;/a&gt; setup on Windows (who knew &lt;em&gt;gem update&lt;/em&gt; could be a bad idea) and used the opportunity to give Grunt another look. I poured myself a beer, swaggered over to my standing desk, and didn’t move until I figured it out. I’m really glad I did - Grunt is my new best friend.&lt;/p&gt;




&lt;p&gt;Grunt is a JavaScript task runner built on &lt;a href=&quot;http://nodejs.org/&quot;&gt;Node.js&lt;/a&gt;. Node.js is an event-driven platform built on Chrome’s V8 and is blazingly fast. If you need efficient, uber-fast, real-time multi-user shiny, get to know Node.&lt;/p&gt;

&lt;p&gt;To get Grunt up and running you need to install Node, then install Grunt via the node package manager (npm): &lt;code&gt;npm install -g grunt-cli&lt;/code&gt;. I’m using 5 modules that can also be installed with &lt;code&gt;npm&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;&quot;&gt;&lt;span class=&quot;line&quot;&gt;npm install grunt-contrib-watch grunt-contrib-uglify grunt-contrib-concat grunt-contrib-less grunt-text-replace --save-dev&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;You will typically create a &lt;code&gt;package.json&lt;/code&gt; file that contains, among other things, your dependencies. If you’ve got one, you can just run &lt;code&gt;npm install&lt;/code&gt; and it’ll read it and grab whatever is missing. To create a &lt;code&gt;package.json&lt;/code&gt; file from your current dependencies run &lt;code&gt;npm init&lt;/code&gt;. A typical package.json file looks like this:&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;package.json&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;name&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;geoportal&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;version&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;0.0.1&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;description&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Mecklenburg GeoPortal build and watch, including cache busting on build.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;main&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Gruntfile.js&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;devDependencies&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&quot;grunt-text-replace&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&quot;grunt-contrib-concat&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&quot;grunt-contrib-less&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&quot;grunt-contrib-watch&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&quot;grunt-contrib-uglify&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;scripts&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;s2&quot;&gt;&quot;test&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;grunt build&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;author&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Tobin Bradley&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;license&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;MIT&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;readmeFilename&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;README.md&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;  &lt;span class=&quot;s2&quot;&gt;&quot;repository&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;The serious grunt stuff goes in &lt;code&gt;Gruntfile.js&lt;/code&gt;. When you look at this one you might throw up in your mouth a little bit. Yes, I was doing all of this in &lt;a href=&quot;http://fuzzytolerance.info/blog/more-on-build-processes-for-the-web/&quot;&gt;12 lines of Ruby + 14 lines of shell script&lt;/a&gt;. Yes, that’s a lot less than ~120 lines of code. Hang with me here.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;Gruntfile.js&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;29&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;31&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;33&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;34&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;35&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;36&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;37&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;38&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;39&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;41&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;42&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;43&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;44&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;45&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;46&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;47&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;48&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;49&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;51&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;52&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;53&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;54&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;55&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;56&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;57&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;58&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;59&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;60&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;61&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;62&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;63&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;64&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;65&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;66&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;67&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;68&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;69&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;70&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;71&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;72&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;73&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;74&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;75&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;76&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;77&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;78&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;79&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;80&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;81&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;82&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;83&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;84&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;85&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;86&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;87&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;88&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;89&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;90&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;91&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;92&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;93&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;94&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;95&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;96&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;97&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;98&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;99&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;100&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;101&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;102&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;103&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;104&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;105&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;106&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;107&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;108&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;109&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;110&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;111&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;112&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;113&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;114&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;115&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;116&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;117&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;118&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;119&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;120&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;121&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;122&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;123&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;module&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;exports&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;c1&quot;&gt;// Load plugins&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-watch'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-uglify'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-concat'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-less'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-text-replace'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;c1&quot;&gt;// Default task(s).&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;registerTask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'default'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'watch'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;registerTask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'build'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'less:production'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'uglify:production'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'replace'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;c1&quot;&gt;// javascript stack&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;jsFiles&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/underscore-min.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/modernizr.min.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-tooltip.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-modal.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-transition.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-button.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-collapse.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-popover.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/jquery-ui-1.10.0.custom.min.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/leaflet.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/functions.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/map.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;s1&quot;&gt;'assets/scripts/page.js'&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;initConfig&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;({&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              &lt;span class=&quot;nx&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;jsFiles&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;              &lt;span class=&quot;nx&quot;&gt;dest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'public/js/main.js'&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;uglify&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'gzip'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;s1&quot;&gt;'public/js/main.js'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;jsFiles&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;less&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;s2&quot;&gt;&quot;public/css/main.css&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;assets/less/main.less&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;yuicompress&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;s2&quot;&gt;&quot;public/css/main.css&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;assets/less/main.less&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;watch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;less&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'assets/less/*.less'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'less:development'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;asset_javascript&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'assets/**/*.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'concat:development'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;templates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/templates/*.html'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'replace:template'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;javascript&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/js/*.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;css&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/css/*.css'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/*.html'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/index.html'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;overwrite&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;replacements&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\?foo=[0-9]*/g&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'?foo='&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'assets/scripts/functions.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;overwrite&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;replacements&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/templateVersion: &quot;[0-9]*&quot;/g&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'templateVersion: &quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&quot;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;p&quot;&gt;};&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;With this build script I’m able to do everything I was doing before - watch, livereload, preprocessing, concatenation, minification, uglification, and cache busting (string replacement). It’s all fairly readable JavaScript and easily customizable across projects (this one is for the new version of GeoPortal I’m working on). And it’s node, so it hauls ass.&lt;/p&gt;

&lt;p&gt;Let’s break it down.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// Load plugins&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-watch'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-uglify'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-concat'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-contrib-less'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;loadNpmTasks&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'grunt-text-replace'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// Default task(s).&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;registerTask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'default'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'watch'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;grunt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;registerTask&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'build'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'less:production'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'uglify:production'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'replace'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;c1&quot;&gt;// javascript stack&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;jsFiles&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/underscore-min.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/modernizr.min.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-tooltip.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-modal.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-transition.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-button.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-collapse.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/bootstrap/bootstrap-popover.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/jquery-ui-1.10.0.custom.min.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/vendor/leaflet.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/functions.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/map.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;s1&quot;&gt;'assets/scripts/page.js'&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;];&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Here we’re doing some basic setup. We’re requiring 5 grunt modules - watch, uglify, concat, less, and text-replace. We register two tasks: default (simple watch setup) and build (make production ready). So you could type &lt;code&gt;grunt&lt;/code&gt; to start the watch process, or &lt;code&gt;grunt build&lt;/code&gt; to build that sucker. Last I’m setting an array of the JavaScript files in the order they need to be put together. That’ll get used next.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;concat&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;          &lt;span class=&quot;nx&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;jsFiles&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;          &lt;span class=&quot;nx&quot;&gt;dest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'public/js/main.js'&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;nx&quot;&gt;uglify&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;report&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'min'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;s1&quot;&gt;'public/js/main.js'&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;jsFiles&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;This section is for JavaScript. &lt;code&gt;concat&lt;/code&gt; simply concatenates JavaScript files for development so they’re easy to debug. &lt;code&gt;uglify&lt;/code&gt; turns it into the compact unreadable bandwidth-friendly stuff for production. Note that if you ever want to run one of these by itself, just reference it via something like &lt;code&gt;grunt concat:development&lt;/code&gt;.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;less&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;development&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;s2&quot;&gt;&quot;public/css/main.css&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;assets/less/main.less&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;production&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;yuicompress&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;s2&quot;&gt;&quot;public/css/main.css&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;assets/less/main.less&quot;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;&lt;a href=&quot;http://lesscss.org/&quot;&gt;LESS&lt;/a&gt; is a CSS preprocessor, and here we’re giving it development (just concatenate), and production (concatenate and compress) options.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;25&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;26&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;27&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;28&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;29&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;30&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;31&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;33&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;34&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;35&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;watch&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;less&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'assets/less/*.less'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'less:development'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;asset_javascript&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'assets/**/*.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'concat:development'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;templates&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/templates/*.html'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;tasks&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'replace:template'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;options&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;livereload&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;javascript&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/js/*.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;css&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/css/*.css'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;html&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;files&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/*.html'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Watch does just that - it watches files and runs tasks when they change. It also can do livereload, which if you’re not doing…I just don’t know what to say to you. Start doing it. Here we’re compiling LESS when *.less changes, concatenating JavaScript when an asset changes, and doing some text replacement when a underscore template changes. Note none of that triggers livereload directly. Instead, livereload watches our public folder for when the changed stuff shows up. That way reload events aren’t firing multiple times.&lt;/p&gt;

&lt;figure class=&quot;code&quot;&gt;&lt;span&gt;&lt;/span&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;table&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre class=&quot;line-numbers&quot;&gt;&lt;span class=&quot;line-number&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;3&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;4&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;6&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;7&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;8&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;9&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;11&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;12&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;13&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;14&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;15&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;16&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;17&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;18&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;19&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;21&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;22&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;23&lt;/span&gt;
&lt;span class=&quot;line-number&quot;&gt;24&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;code class=&quot;javascript&quot;&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;nx&quot;&gt;replace&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;foo&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'public/index.html'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;overwrite&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;replacements&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/\?foo=[0-9]*/g&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'?foo='&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;nx&quot;&gt;template&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;src&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;'assets/scripts/functions.js'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;overwrite&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;nx&quot;&gt;replacements&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;from&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/templateVersion: &quot;[0-9]*&quot;/g&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;nx&quot;&gt;to&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;function&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;kd&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;floor&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;((&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;Math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;random&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;100000&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'templateVersion: &quot;'&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;cacheBuster&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&quot;'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;p&quot;&gt;}]&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/figure&gt;


&lt;p&gt;Finally, some cache busting. These tasks replace a version number with a large random number in a couple of different places so your clients don’t get crap stuck in their cache.&lt;/p&gt;
&lt;img height=&quot;1&quot; src=&quot;http://feeds.feedburner.com/~r/FuzzyTolerance/~4/WFDOCHVDnoA&quot; width=&quot;1&quot; /&gt;</description>
	<pubDate>Fri, 14 Jun 2013 22:00:00 +0000</pubDate>
</item>

</channel>
</rss>
