<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xml:base="https://mapzen.com">
	<channel>
		<title>Mapzen</title>
		<description>Start where you are</description>
		<link>https://mapzen.com</link>
		<atom:link href="https://mapzen.com/rss.xml" rel="self" type="application/rss+xml" />
		
			<item>
  <title>Mapzen project updates December 2019</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;The Mapzen diaspora was active in 2019 with thousands of pull requests. There continues to be a future for the projects incubated at Mapzen and those tools and data continue to be used and updated after our January 2019 transition to the &lt;a href=&quot;https://www.mapzen.com/blog/mapzen-is-now-a-linux-foundation-project/&quot;&gt;Linux Foundation&lt;/a&gt;.&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;project&lt;/th&gt;
&lt;th style=&quot;text-align: right&quot;&gt;2019 closed PRs&lt;/th&gt;
&lt;th style=&quot;text-align: right&quot;&gt;stars&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pelias&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;&lt;a href=&quot;https://github.com/search?utf8=%E2%9C%93&amp;amp;q=is%3Apr+org%3Apelias+is%3Aclosed+closed%3A%3E%3D2019-01-01&amp;amp;type=&quot;&gt;720&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;1,799&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valhalla&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;&lt;a href=&quot;https://github.com/search?utf8=%E2%9C%93&amp;amp;q=is%3Apr+org%3Avalhalla+is%3Aclosed+closed%3A%3E%3D2019-01-01&amp;amp;type=&quot;&gt;236&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;999&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tangram &lt;a href=&quot;https://github.com/tangrams/tangram/pulls?utf8=%E2%9C%93&amp;amp;q=is%3Apr+is%3Aclosed+sort%3Aupdated-desc+closed%3A%3E2019-01-01+&quot;&gt;JS&lt;/a&gt;/&lt;a href=&quot;https://github.com/tangrams/tangram-es/pulls?utf8=%E2%9C%93&amp;amp;q=is%3Apr+is%3Aclosed+sort%3Aupdated-desc+closed%3A%3E2019-01-01+&quot;&gt;ES&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;&lt;a href=&quot;https://github.com/search?utf8=%E2%9C%93&amp;amp;q=is%3Apr+org%3Atangrams+is%3Aclosed+closed%3A%3E%3D2019-01-01&amp;amp;type=&quot;&gt;102&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;1,506/540&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tilezen&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;&lt;a href=&quot;https://github.com/search?utf8=%E2%9C%93&amp;amp;q=is%3Apr+org%3Atilezen+is%3Aclosed+closed%3A%3E%3D2019-01-01&amp;amp;type=&quot;&gt;143&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;394&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who&amp;rsquo;s On First&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;&lt;a href=&quot;https://github.com/search?utf8=%E2%9C%93&amp;amp;q=is%3Apr+org%3Awhosonfirst+is%3Aclosed+closed%3A%3E%3D2019-01-01&amp;amp;type=&quot;&gt;30&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who&amp;rsquo;s On First data&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;&lt;a href=&quot;https://github.com/search?utf8=%E2%9C%93&amp;amp;q=is%3Apr+org%3Awhosonfirst-data+is%3Aclosed+closed%3A%3E%3D2019-01-01&amp;amp;type=&quot;&gt;1,554&lt;/a&gt;&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;232&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;We&amp;rsquo;ve also been making a few updates to this website like renaming &amp;ldquo;products&amp;rdquo; to &amp;ldquo;projects&amp;rdquo; to reflect our new status with the Linux Foundation. Also, come by and say hi on &lt;a href=&quot;https://twitter.com/mapzen/&quot;&gt;Twitter&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Project updates since January 2018:&lt;/p&gt;

&lt;h2 id=&quot;map-display&quot;&gt;Map display&lt;/h2&gt;

&lt;h3 id=&quot;tangram-js&quot;&gt;Tangram JS&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/tangrams/tangram&quot;&gt;Tangram JS&lt;/a&gt; has added several new capabilities over the past two years, along with a new build system to output native ES6 JavaScript modules (since &lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.16.0&quot;&gt;v0.16&lt;/a&gt;), syntax refinements to avoid boilerplate code, and performance and memory usage improvements for labels and other areas.&lt;/p&gt;

&lt;p&gt;New data source parameters for controlling level-of-detail support cases where tiles may be either too large (in file size) or too detailed (in feature density or coordinate precision) than desirable for the current application, such as generalizing raster data or optimizing for low network bandwidth. The &lt;code&gt;zoom_offset&lt;/code&gt; parameter (&lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.17.0&quot;&gt;v0.17&lt;/a&gt;) down-samples tile data by one or more zoom levels, while the &lt;code&gt;zooms&lt;/code&gt; array (&lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.18.0&quot;&gt;v0.18&lt;/a&gt;) provides fine-grained control over which zoom levels will load new tiles.&lt;/p&gt;

&lt;p&gt;For example, we can use &lt;code&gt;zoom_offset: 1&lt;/code&gt; to opt for softer and more performant terrain tiles:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://www.mapzen.com/assets/images/2019-12-20-mapzen-project-updates-december-2019/zoom-offset.gif&quot; alt=&quot;Tangram JS zoom_offset example in Washington state&quot;&gt;&lt;/p&gt;

&lt;p&gt;Geo-referenced (un-tiled) raster image layers were added in &lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.17.0&quot;&gt;v0.17&lt;/a&gt;, useful for ad hoc overlays such as historical images or local aerial imagery; the scene author can apply alpha processing or composite multiple images into a single layer. Together these features extend Tangram’s unique flexibility for real-time raster processing, with the ability to mask, filter, and analyze multiple raster and vector layers simultaneously with custom GLSL shader code.&lt;/p&gt;

&lt;p&gt;Agricultural drone imagery filtered by raster-derived values in a Tangram shader:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://www.mapzen.com/assets/images/2019-12-20-mapzen-project-updates-december-2019/raster-overlay-filter.gif&quot; alt=&quot;Agricultural drone imagery&quot;&gt;&lt;/p&gt;

&lt;p&gt;Or use a slide tool to compare contemporary topographical data (shown here from Nextzen terrain tiles) with contour lines from a USGS historical map:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://www.mapzen.com/assets/images/2019-12-20-mapzen-project-updates-december-2019/raster-overlay-topo-slide-compare.jpg&quot; alt=&quot;USGS historical map overlay&quot;&gt;&lt;/p&gt;

&lt;p&gt;Significant label improvements arrived in &lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.15.0&quot;&gt;v0.15&lt;/a&gt;, with labels now properly colliding across multiple data sources and tile boundaries &amp;ndash; enabling more seamless data overlays interleaved with Mapzen basemaps. Label collision is also now re-evaluated in between zoom levels, for increased label density.&lt;/p&gt;

&lt;p&gt;Filtering and styling syntax also gained new capabilities with native support for complex JSON objects (&lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.19.0&quot;&gt;v0.19&lt;/a&gt;), whether included in GeoJSON properties, or embedded as stringified JSON in MVT as output by Mapbox’s &lt;a href=&quot;https://github.com/mapbox/tippecanoe&quot;&gt;Tippecanoe&lt;/a&gt; tiling library. These objects can now be automatically parsed from MVT data sources, accessed in &lt;code&gt;layers&lt;/code&gt; with common JS-style “dot notation” syntax, and filtered with new array-to-array set operations (&lt;code&gt;includes_all&lt;/code&gt; and &lt;code&gt;includes_any&lt;/code&gt;). Tangram’s hierarchical layer structure is powerful, but managing parallel filter sub-trees can be complex; we’ve added new &lt;code&gt;priority&lt;/code&gt; and &lt;code&gt;exclusive&lt;/code&gt; keywords (&lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.18.0&quot;&gt;v0.18&lt;/a&gt;) for more control over the layer matching logic, useful for disambiguating competing sub-layers or short-circuiting filter paths.&lt;/p&gt;

&lt;p&gt;Finally, several syntax extensions focus on removing repetitive boilerplate code in scene files. Most notably, the &lt;code&gt;blend_order&lt;/code&gt; parameter can now be set within &lt;code&gt;draw&lt;/code&gt; groups (&lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.18.0&quot;&gt;v0.18&lt;/a&gt;), greatly simplifying complex stacks of label and sprite symbol layers. &lt;a href=&quot;https://github.com/tangrams/tangram/releases/tag/v0.19.0&quot;&gt;v0.19&lt;/a&gt; brought built-in rendering styles for all combinations of &lt;code&gt;blend&lt;/code&gt; and &lt;code&gt;base&lt;/code&gt;, removing another common pain point with blend modes. And the new &lt;code&gt;all_layers&lt;/code&gt; data source parameter composites an entire vector source into one scene layer, useful for creating wireframe views or loading MVT tiles with variable or unknown layer names.&lt;/p&gt;

&lt;h3 id=&quot;tangram-es&quot;&gt;Tangram ES&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/tangrams/tangram-es&quot;&gt;Tangram ES&lt;/a&gt; has steadily stabilized and improved its own capabilities with a host of changes over the past two years, all bundled up into our latest release: &lt;a href=&quot;https://github.com/tangrams/tangram-es/releases/tag/0.11.0&quot;&gt;Tangram ES 0.11&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This release includes an essential change for Android users. Following the &lt;a href=&quot;https://developer.android.com/distribute/best-practices/develop/64-bit&quot;&gt;guidelines for Google Play&lt;/a&gt;, the Tangram Android SDK now includes 64-bit binaries for both the ARM and x86 architectures. &lt;strong&gt;If you have an app on Google Play that uses Tangram, you should upgrade to this release!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;zoom_offset&lt;/code&gt; for data sources, as described in Tangram JS above, is now supported in Tangram ES as well.&lt;/p&gt;

&lt;p&gt;Android apps can now render a Tangram map into a &lt;code&gt;TextureView&lt;/code&gt;. This lets you embed maps into more complex &lt;code&gt;View&lt;/code&gt; hierarchies or apply bitmap effects that aren’t possible with a &lt;code&gt;SurfaceView&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;A new JavaScript engine abstraction adds the ability to compile Tangram ES with JSCore, the native JS engine on iOS and macOS, reducing the size of your compiled binary.&lt;/p&gt;

&lt;p&gt;Both the iOS and Android Tangram SDKs have a new, much faster interface for adding custom data layers. The scene below used to take 4.5 seconds to load on a phone - now it takes 22 milliseconds!&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Tangram ES map pin explosion&quot; src=&quot;https://www.mapzen.com/assets/images/2019-12-20-mapzen-project-updates-december-2019/pin-explosion.png&quot; height=&quot;400&quot; /&gt;&lt;/p&gt;

&lt;p&gt;These are just a few of the changes in Tangram ES since becoming part of the Linux Foundation. We’ve also made loads of bug fixes, performance enhancements, and developer workflow improvements. Head on over to &lt;a href=&quot;https://github.com/tangrams/tangram-es&quot;&gt;our repository&lt;/a&gt; to see all the activity!&lt;/p&gt;

&lt;h3 id=&quot;search&quot;&gt;Search&lt;/h3&gt;

&lt;p&gt;The &lt;a href=&quot;https://github.com/pelias/pelias&quot;&gt;Pelias&lt;/a&gt; geocoder has seen many improvements in the last two years. Active development has been continued by the growing Pelias community and by Geocode Earth, who offers a hosted geocoding API and consulting for custom geocoding installation.&lt;/p&gt;

&lt;p&gt;Notable developments since joining the Linux Foundation include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A major focus on customization including support for importing &lt;a href=&quot;https://github.com/pelias/csv-importer&quot;&gt;custom data via CSV&lt;/a&gt;, &lt;a href=&quot;https://github.com/pelias/api#custom-boosts&quot;&gt;customization of “boost” levels&lt;/a&gt; to fine tune results, and display of additional data through the &lt;a href=&quot;https://github.com/pelias/csv-importer#custom-data&quot;&gt;“addendum”&lt;/a&gt; feature&lt;/li&gt;
&lt;li&gt;Improved autocomplete through the &lt;a href=&quot;https://geocode.earth/blog/2019/improved-autocomplete-parsing-is-here&quot;&gt;new Pelias Parser&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Massively improved query performance through &lt;a href=&quot;https://github.com/pelias/api/pull/1323&quot;&gt;multiple&lt;/a&gt; &lt;a href=&quot;https://github.com/pelias/api/pull/1333&quot;&gt;optimizations&lt;/a&gt; to Elasticsearch queries, use of the &lt;a href=&quot;https://github.com/pelias/libpostal-service&quot;&gt;libpostal service&lt;/a&gt;, and more&lt;/li&gt;
&lt;li&gt;An easy to use &lt;a href=&quot;https://github.com/pelias/docker/&quot;&gt;Docker framework&lt;/a&gt; for quickly getting started with Pelias&lt;/li&gt;
&lt;li&gt;Improved &lt;a href=&quot;https://github.com/pelias/api/pull/1230&quot;&gt;deduplication logic&lt;/a&gt; to avoid presenting identical looking (and confusing!) results&lt;/li&gt;
&lt;li&gt;New query parameters such as &lt;a href=&quot;https://github.com/pelias/documentation/blob/master/search.md#search-within-a-parent-administrative-area&quot;&gt;boundary.gid&lt;/a&gt; for filtering by parent administrative area&lt;/li&gt;
&lt;li&gt;Support for importing &lt;a href=&quot;https://github.com/pelias/pbf2json/pull/70&quot;&gt;OpenStreetMap relation&lt;/a&gt; records&lt;/li&gt;
&lt;li&gt;A new &lt;a href=&quot;https://github.com/pelias/transit&quot;&gt;Transit&lt;/a&gt; importer supporting GTFS and other common formats&lt;/li&gt;
&lt;li&gt;Support for &lt;a href=&quot;https://github.com/pelias/pelias/issues/461&quot;&gt;Elasticsearch 5&lt;/a&gt;, &lt;a href=&quot;https://github.com/pelias/pelias/issues/719&quot;&gt;Elasticsearch 6&lt;/a&gt;, and soon &lt;a href=&quot;https://github.com/pelias/pelias/issues/831&quot;&gt;Elasticsearch 7&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;routing&quot;&gt;Routing&lt;/h3&gt;

&lt;p&gt;The main themes in the &lt;a href=&quot;https://github.com/valhalla/valhalla/&quot;&gt;Valhalla&lt;/a&gt; project have been centered around maturity and efficiency. The code is easier to build on platforms like Windows, Android and iOS. We’ve added some new features like 2 new costing modes and are working towards a multimodal bike-share routing. &lt;a href=&quot;https://github.com/valhalla/valhalla/releases/tag/3.0.0&quot;&gt;V3.0&lt;/a&gt; of the Valhalla tile spec was released about a year ago and allowed us to make some gains in tile sizes where we know the use-case the tiles would be targeted at. The bulk of the rest of the contributions have been largely around maturity of the product adding new features for properly selecting origin and destination edges in the graph or allowing/disallowing routes based on time of day or access restrictions (ie accuracy of the routing). We’ve also generally improved the performance and usability in scenarios where you are disk limited (server-less or mobile).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows build support&lt;/li&gt;
&lt;li&gt;Motorcycle costing&lt;/li&gt;
&lt;li&gt;Experimental nodejs bindings&lt;/li&gt;
&lt;li&gt;Supported for predicted traffic influenced routing&lt;/li&gt;
&lt;li&gt;Reduced boost dependencies to header only for easier crossplatform development&lt;/li&gt;
&lt;li&gt;Time dependent isochrones (isochrones differ depending on predicted traffic)&lt;/li&gt;
&lt;li&gt;Valhalla V3.0

&lt;ul&gt;
&lt;li&gt;Smaller tiles especially when omitting elevation sources&lt;/li&gt;
&lt;li&gt;Improved performance (~100ms cross country US routing)&lt;/li&gt;
&lt;li&gt;Support for filtering out parts of the graph based on mode of travel (remove bike-only edges or remove pedestrian-only edges for example)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Support for polyline5 and geojson geometry output&lt;/li&gt;
&lt;li&gt;Taxi costing&lt;/li&gt;
&lt;li&gt;Preferred side of street (and tolerance) for arrival and departure locations&lt;/li&gt;
&lt;li&gt;Max search radius for locations&lt;/li&gt;
&lt;li&gt;Via and break through location types allowing for u-turns with no separate leg and continuing in the same direction with a separate leg respectively&lt;/li&gt;
&lt;li&gt;Internal API now tracks turn lane information at the nodes along the route&lt;/li&gt;
&lt;li&gt;Improve reachability checks to search in both directions&lt;/li&gt;
&lt;li&gt;Caching improvements for on-the-fly tile fetching (serverless mode)&lt;/li&gt;
&lt;li&gt;Allow time-independent routes to ignore timed restrictions&lt;/li&gt;
&lt;li&gt;Allow u-turns where no other option is possible&lt;/li&gt;
&lt;li&gt;Bike-share multimodal coming very soon!&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;vector-tiles&quot;&gt;Vector Tiles&lt;/h3&gt;

&lt;p&gt;Long term support for free hosted access to vector and terrain &lt;a href=&quot;https://github.com/tilezen/vector-datasource&quot;&gt;Tilezen&lt;/a&gt; tiles continue to be supported by generous AWS Research Grants thru April 2020, and global builds sponsored by HERE on &lt;a href=&quot;https://developers.nextzen.org/&quot;&gt;Nextzen&lt;/a&gt;. Please &lt;a href=&quot;hello@nextzen.org&quot;&gt;email&lt;/a&gt; if you’re interested in sponsoring a build or access to tiles!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tilezen/vector-datasource/releases/tag/v1.5.0&quot;&gt;v1.5&lt;/a&gt; added an inexpensive global tile build, international road shields (&lt;a href=&quot;https://www.mapzen.com/assets/images/mapzen-maps-long-term-support/bubble-wrap-shields-international@2x.png&quot;&gt;img&lt;/a&gt;), and many more kinds of points of interest.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tilezen/vector-datasource/releases/tag/v1.6.0&quot;&gt;v1.6&lt;/a&gt; significantly reduced file sizes between 23% (p50) and 30% (p90) globally by additional geometry simplification, dropping features, dropping properties, and more aggressive merging to multi-lines and multi-polygons in low- and mid-zooms.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tilezen/vector-datasource/releases/tag/v1.7.0&quot;&gt;v1.7&lt;/a&gt; added more green areas, prototyped point-of-view for disputed boundaries, and added &lt;code&gt;collision_rank&lt;/code&gt; for more predictable label collisions, and &lt;code&gt;population_rank&lt;/code&gt; for sizing place labels, and modeling support for showing traffic flow lines and traffic incidents.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tilezen/vector-datasource/milestone/26&quot;&gt;v1.8&lt;/a&gt; support ~30 points of view for disputed boundaries, country, region, and capitals for high-zooms from OpenStreetMap and low-zooms from Natural Earth, added wikidata_id concordances. The version hosted on Nextzen since July 2019.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/tilezen/vector-datasource/milestone/24&quot;&gt;v1.9&lt;/a&gt; (under development) focused on adding more landuse green areas at low- and mid-zooms, contours, and outdoor feature enhancements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;https://github.com/tilezen/vector-datasource/raw/master/docs/images/tilezen-v1d5-versus-v1d6-size-zooms.gif&quot; alt=&quot;Tilezen v1.5 compared to v1.6 average file size (p50, p99)&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;(above) Chart shows sizes in bytes (logarithmic scale), based on top 100,000 tiles from openstreetmap.org logs at 512 pixel zoom.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We will continue to host indefinitely the raw metatiles assets in an &lt;a href=&quot;https://docs.aws.amazon.com/AmazonS3/latest/dev/RequesterPaysBuckets.html&quot;&gt;S3 requester pays&lt;/a&gt; bucket. You can now run your own tile server via &lt;a href=&quot;https://github.com/tilezen/tapalcatl-py&quot;&gt;tapalcatl-py&lt;/a&gt;: it’s cheap for low usage and easy to configure as an on-demand Lambda + API Gateway with &lt;a href=&quot;https://www.zappa.io/&quot;&gt;Zappa&lt;/a&gt;. This is the same software and configuration that powers the existing endpoint, but billed to your own AWS account. Setup instructions are in the project &lt;a href=&quot;https://github.com/tilezen/tapalcatl-py/blob/master/README.md&quot;&gt;README&lt;/a&gt; and most users should expect to see AWS bills less than $5 / month.&lt;/p&gt;

&lt;p&gt;If you’re running a larger commercial service you’d also want to add &lt;a href=&quot;https://aws.amazon.com/cloudfront/&quot;&gt;CloudFront&lt;/a&gt; edge cache and look at running tapalcatl-py via &lt;a href=&quot;https://github.com/tilezen/tapalcatl-py/blob/master/Dockerfile&quot;&gt;Docker&lt;/a&gt; in &lt;a href=&quot;https://aws.amazon.com/eks/&quot;&gt;EKS&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;terrain-tiles&quot;&gt;Terrain Tiles&lt;/h3&gt;

&lt;p&gt;Tilezen terrain tiles are available via &lt;a href=&quot;https://developers.nextzen.org/about.html&quot;&gt;Nextzen&lt;/a&gt; with an API key, and are still accessible in 256 sized tiles via the existing &lt;a href=&quot;https://registry.opendata.aws/terrain-tiles/&quot;&gt;Amazon public dataset&lt;/a&gt; S3 endpoints.&lt;/p&gt;

&lt;p&gt;The 512 and buffered 260 and 516 sized terrain tiles on Nextzen are made possible by running &lt;a href=&quot;https://github.com/tilezen/zaloa&quot;&gt;Zaloa&lt;/a&gt; as a Lambda function.&lt;/p&gt;

&lt;p&gt;We did additional work extending Marble Cutter to tile indexed landcover sources into tiles, and prototyped a vector export.&lt;/p&gt;

&lt;h3 id=&quot;who&amp;#39;s-on-first&quot;&gt;Who&amp;rsquo;s On First&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;On the data side, &lt;a href=&quot;https://github.com/whosonfirst-data/whosonfirst-data&quot;&gt;Who&amp;rsquo;s On First&lt;/a&gt; gained comprehensive &lt;a href=&quot;https://whosonfirst.org/blog/2019/05/13/geonames/&quot;&gt;worldwide locality coverage&lt;/a&gt; by adding over 4 million new locality points from GeoNames. Projects like Pelias can now import Who’s On First alone without having to worry about deduplicating results between the two datasets.&lt;/li&gt;
&lt;li&gt;Added 11.7 million more &lt;a href=&quot;https://github.com/whosonfirst-data/whosonfirst-data/issues/1656&quot;&gt;name translations&lt;/a&gt; to 972k places, thanks Wikidata.&lt;/li&gt;
&lt;li&gt;Posting monthly changelogs (&lt;a href=&quot;https://whosonfirst.org/blog/2019/11/18/changelog/&quot;&gt;1&lt;/a&gt;, &lt;a href=&quot;https://whosonfirst.org/blog/2019/12/11/nov-changelog/&quot;&gt;2&lt;/a&gt;) at &lt;a href=&quot;https://whosonfirst.org/blog/&quot;&gt;whosonfirst.org/blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Legal audit of WOF datasources terms and conditions, we’re enterprise ready.&lt;/li&gt;
&lt;li&gt;Expanded and validated Disputed area coverage, including guidance on label hierarchy display&lt;/li&gt;
&lt;li&gt;Split the mono repo into &lt;a href=&quot;https://whosonfirst.org/blog/2019/05/09/changes/&quot;&gt;per country&lt;/a&gt; repos for the administrative data at the request of Github.&lt;/li&gt;
&lt;li&gt;Alternate geometries are more explicit, easier to index, and include in distributions.&lt;/li&gt;
&lt;li&gt;All features now include &lt;code&gt;mz:min_zoom&lt;/code&gt; and point geometries include label bbox&lt;/li&gt;
&lt;li&gt;Easier to work with the data in databases, documenting fields, removing nested : strings in property names, simplify default geometries, resolve geometry self intersections&lt;/li&gt;
&lt;li&gt;Label shortcodes and abbreviations for country and regions&lt;/li&gt;
&lt;li&gt;Capital cities declared with new data properties&lt;/li&gt;
&lt;li&gt;Per country rebuilds, including: Norway, Poland, France, Switzerland, Denmark, Germany, India, Ireland, United Kingdom, Sweden, Finland, Belgium, Australia, Austria, Saudi Arabia, United Arab Emirates, Canada, United States (townships for localadmin, reset geometry of oversized mostly rural neighbourhoods), and Netherlands&lt;/li&gt;
&lt;li&gt;Other small fixes from customer feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;pre-geonames-import-locality-coverage-visualized:&quot;&gt;Pre-GeoNames import locality coverage visualized:&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;https://whosonfirst.org/blog/2019/05/13/geonames/images/pre-gn.png&quot; alt=&quot;World map in brown, less dots&quot;&gt;&lt;/p&gt;

&lt;h4 id=&quot;post-geonames-import-locality-coverage-visualized:&quot;&gt;Post-GeoNames import locality coverage visualized:&lt;/h4&gt;

&lt;p&gt;&lt;img src=&quot;https://whosonfirst.org/blog/2019/05/13/geonames/images/post-gn.png&quot; alt=&quot;World map in blue, more dots after GeoNames import&quot;&gt;&lt;/p&gt;

&lt;h3 id=&quot;transitland&quot;&gt;Transitland&lt;/h3&gt;

&lt;p&gt;Transitland started in 2014 as a data platform aggregating transit data in the San Francisco and New York metro regions. Today Transitland makes available stop locations, route lines, schedules, and other data from 2,626 transit operators in 59 countries. There’s an API and a range of different user interfaces.&lt;/p&gt;

&lt;p&gt;Transitland is managed by &lt;a href=&quot;https://www.interline.io/&quot;&gt;Interline Technologies&lt;/a&gt;, a mobility and transportation technology firm founded by Mapzen alums. Interline provides custom Transitland integrations and consulting to transit agencies and private mobility providers (think e-scooters and ride-hail cars). Here’s one example of how we’re using Transitland open-source components to &lt;a href=&quot;https://www.interline.io/blog/metropolitan-transportation-commission-selects-interline/&quot;&gt;support the 30+ transit agencies in the San Francisco Bay Area&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to generous support from Amazon Web Services, Transitland’s APIs have been free to other startups, advocacy groups, and transit enthusiasts. Learn more about &lt;a href=&quot;https://transit.land/news/2019/01/08/transitland-continues.html&quot;&gt;Transitland’s general governance and growth&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Thanks to a grant from the United States&amp;rsquo; Transportation Research Board, Interline is currently &lt;a href=&quot;https://www.interline.io/blog/transportation-research-board-funds-gtfs-realtime/&quot;&gt;expanding Transitland to support real-time transit data&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;And finally, we’re ending 2019 with major technical changes: &lt;a href=&quot;https://transit.land/news/2019/10/17/tlv2.html&quot;&gt;Transitland Version 2.0&lt;/a&gt;. The new version is faster (to handle an entire country’s worth of transit data in one import!) and distributed (to allow Interline’s client, other organizations, and enthusiasts to run their own deployments of Transitland tooling.&lt;/p&gt;

&lt;h3 id=&quot;metro-extracts&quot;&gt;Metro Extracts&lt;/h3&gt;

&lt;p&gt;Daily OSM extracts are available from &lt;a href=&quot;https://www.interline.io/osm/extracts/&quot;&gt;Interline&lt;/a&gt;, making it easy to get started with Valhalla, Pelias, or Tilezen with a small local area instead of the entire, very large OpenStreetMap planet file. Interline OSM Extracts are powered by the open-source &lt;a href=&quot;https://github.com/interline-io/planetutils&quot;&gt;PlanetUtils&lt;/a&gt; package, which wraps up a variety of OSM processing toolchains.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://images.collection.cooperhewitt.org/265027_6c5be7cd895461c6_b.jpg&quot; alt=&quot;Calendar, June; Japan; 1985-44-1-7&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;header image: Calendar, June; Japan; 1985-44-1-7, &lt;a href=&quot;https://collection.cooperhewitt.org/objects/18733875/&quot;&gt;Cooper Hewitt, Smithsonian Design Museum&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
  <pubDate>Fri, 27 Dec 2019 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/mapzen-project-updates-december-2019</link>
  <guid isPermaLink="true">https://mapzen.com/blog/mapzen-project-updates-december-2019</guid>
</item>
		
			<item>
  <title>Mapzen is now a Linux Foundation project!</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;We have good news! &lt;a href=&quot;https://www.linuxfoundation.org/press-release/2019/01/mapzen-open-source-data-and-software-for-real-time-mapping-applications-to-become-a-linux-foundation-project/&quot;&gt;Mapzen is now a Linux Foundation project&lt;/a&gt;! &lt;/p&gt;

&lt;p&gt;Mapzen the company may have shut down, but the open source tools that the services were based upon live on and continue to grow. As we noted back in 2015, the &lt;a href=&quot;https://www.mapzen.com/blog/our-magna-carto/&quot;&gt;very premise of Mapzen&lt;/a&gt; was longevity:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;One of the core tenets of Mapzen is that all our software and data must be open. This has been our guiding principle since the beginning, and as sure as all things must end, we will follow this through to our end (hopefully a hundred or more years from now&amp;hellip; By building everything in the open we can build for real permanence, not just the short-lived permanence of a hot brand in this turbulent space.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re humbled to see so many people continuing to use our tools, but we also understand that some organizations need more reassurance and clarity. The Mapzen Diaspora decided to work with the &lt;a href=&quot;https://www.linuxfoundation.org/press-release/2019/01/mapzen-open-source-data-and-software-for-real-time-mapping-applications-to-become-a-linux-foundation-project/&quot;&gt;Linux Foundation&lt;/a&gt; because it allows us to give the projects and intellectual property a clear legal framework. Note that no one is going to work for the Linux Foundation, nor does this mean that the Mapzen APIs are coming back — these had considerable infrastructure costs — but it does give us a place for fundraising to support the AWS, S3 and Github bills for the &lt;a href=&quot;https://www.nextzen.org/&quot;&gt;Tilezen vector tiles&lt;/a&gt; and &lt;a href=&quot;https://whosonfirst.org/&quot;&gt;Who&amp;rsquo;s On First data&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The work accomplished in past year shows that there&amp;rsquo;s a strong future for what we were lucky enough to be able to create. The tools and data continue to be used and updated, with thousands of PRs added in the past year.&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;project&lt;/th&gt;
&lt;th style=&quot;text-align: right&quot;&gt;2018 closed PRs&lt;/th&gt;
&lt;th style=&quot;text-align: right&quot;&gt;stars&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Pelias&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;1131&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;1,509&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Valhalla&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;361&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;760&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tangram JS/ES&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;258&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;1,324/480&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tilezen&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;242&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;363&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who&amp;rsquo;s On First&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;49&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;n/a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Who&amp;rsquo;s On First data&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;149&lt;/td&gt;
&lt;td style=&quot;text-align: right&quot;&gt;217&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;p&gt;We&amp;rsquo;ve also been making a few updates to this website — we are now &lt;a href=&quot;https://www.mapzen.com/documentation/&quot;&gt;directly pointing to each project&amp;rsquo;s documentation sources&lt;/a&gt;, and the blog posts are all up and continue to be interesting and useful. Also, come by and say hi on &lt;a href=&quot;https://twitter.com/mapzen/&quot;&gt;Twitter&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://images.collection.cooperhewitt.org/93980_ea8cb32a039bd2ba_b.jpg&quot; alt=&quot;Stick Navigation Chart (Marshall Islands)&quot;&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;header image: Stick Navigation Chart (Marshall Islands), Before 1950, &lt;a href=&quot;https://collection.cooperhewitt.org/objects/35520475/&quot;&gt;Cooper Hewitt, Smithsonian Design Museum&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
</description>
  <pubDate>Tue, 29 Jan 2019 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/mapzen-is-now-a-linux-foundation-project</link>
  <guid isPermaLink="true">https://mapzen.com/blog/mapzen-is-now-a-linux-foundation-project</guid>
</item>
		
			<item>
  <title>&#39;/v1/search&#39;ing for the Road Ahead</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            julian@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/searching-for-the-road-ahead/night.jpg&quot; alt=&quot;The east coast of the United States from the International Space Station&quot;&gt;
&lt;em&gt;Image Credit: &lt;a href=&quot;https://www.nasa.gov/image-feature/saying-goodnight&quot;&gt;NASA/Mark Vande Hei&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Here on the geocoding team at Mapzen, we&amp;rsquo;ve grown to love what we do. As soon as the Mapzen shutdown
was announced, we started looking into ways where we could continue to work on geocoding and
&lt;a href=&quot;http://pelias.io&quot;&gt;Pelias&lt;/a&gt;, the open source geocoder we&amp;rsquo;ve been building at Mapzen.&lt;/p&gt;

&lt;p&gt;Just last week we announced that &lt;a href=&quot;https://geocode.earth&quot;&gt;Geocode Earth&lt;/a&gt; is live and ready. It&amp;rsquo;s
hosted geocoding, based on Pelias. It&amp;rsquo;s owned and operated by a new, independent company that
we&amp;rsquo;ve founded.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;ve done this for two reasons. The first, obviously, is to provide an easy migration path for
anyone using Mapzen Search. Thanks to the open source commitment at Mapzen not just for
the geocoder itself, but for the infrastructure around it, we&amp;rsquo;ve been able to do that in a very
short time.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;If you were using &lt;a href=&quot;https://twitter.com/mapzen?ref_src=twsrc%5Etfw&quot;&gt;@mapzen&lt;/a&gt; and worried about the shutdown next week, &lt;a href=&quot;https://t.co/cKYQ88lu99&quot;&gt;https://t.co/cKYQ88lu99&lt;/a&gt; is a perfect drop-in replacement. Literally just changed API keys and endpoints, and it worked. &lt;a href=&quot;https://t.co/S2AyzCLXSI&quot;&gt;https://t.co/S2AyzCLXSI&lt;/a&gt;&lt;/p&gt;&amp;mdash; Andy Baio (@waxpancake) &lt;a href=&quot;https://twitter.com/waxpancake/status/956991836849168384?ref_src=twsrc%5Etfw&quot;&gt;January 26, 2018&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;The second reason we launched &lt;a href=&quot;https://geocode.earth&quot;&gt;Geocode Earth&lt;/a&gt; is to provide a way for us to
continue to spend time growing the Pelias open source project.&lt;/p&gt;

&lt;p&gt;In the days after Mapzen&amp;rsquo;s shutdown announcement we heard from people all over the world who were
using and loving Pelias. Some we knew, but others were reaching out for the first time.&lt;/p&gt;

&lt;p&gt;A great example is the &lt;a href=&quot;https://planninglabs.nyc/&quot;&gt;NYC Planning Labs&lt;/a&gt;. They launched their own
Pelias-based geocoder with features specifically to handle the nuances of New
York City address data in under a week.&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;We started standing up &lt;a href=&quot;https://twitter.com/mapzen?ref_src=twsrc%5Etfw&quot;&gt;@mapzen&lt;/a&gt; Pelias geocoder on Monday, &lt;a href=&quot;https://twitter.com/juliansimioni?ref_src=twsrc%5Etfw&quot;&gt;@juliansimioni&lt;/a&gt; showed up to our sprint demo on Friday with words of encouragement and technical guidance!  This is why we are &lt;a href=&quot;https://twitter.com/hashtag/opensource?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#opensource&lt;/a&gt; at &lt;a href=&quot;https://twitter.com/nycplanninglabs?ref_src=twsrc%5Etfw&quot;&gt;@nycplanninglabs&lt;/a&gt;.  Thanks!&lt;/p&gt;&amp;mdash; Chris Whong (@chris_whong) &lt;a href=&quot;https://twitter.com/chris_whong/status/951968880402018304?ref_src=twsrc%5Etfw&quot;&gt;January 13, 2018&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;The Planning Labs is already contributing back to the project in big ways. Many others have been doing so for
years. We&amp;rsquo;ll continue to be right there with them.&lt;/p&gt;

&lt;p&gt;In other words, we&amp;rsquo;ve listened to &lt;a href=&quot;https://mapzen.com/blog/a-letter-just-to-you/&quot;&gt;Velvet Underground&amp;rsquo;s first album&lt;/a&gt;,
and we&amp;rsquo;re starting a band. We look forward to performing for, and with, all of you. See you at
conferences, events, and of course, around the internet!&lt;/p&gt;
</description>
  <pubDate>Wed, 31 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/v1-searching-for-the-road-ahead</link>
  <guid isPermaLink="true">https://mapzen.com/blog/v1-searching-for-the-road-ahead</guid>
</item>
		
			<item>
  <title>Long-term support for Mapzen maps, vector &amp;amp; terrain tiles</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            ian.dees@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
         &amp; 
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            nathaniel@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
         &amp; 
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            rob@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
         &amp; 
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            matt.amos@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
         &amp; 
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            geraldine@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
         &amp; 
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            brett@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;As Mapzen hosted services enter final shutdown we&amp;rsquo;re proud to offer long-term support for the maps, basemap designs, and the vector and terrain tile data that has powered Mapzen&amp;rsquo;s cartography. To enjoy the maps into the future, you&amp;rsquo;ll need to make a few updates to your projects.&lt;/p&gt;

&lt;p&gt;This post details new long-term support endpoints for various map display related services and libraries, and provides information on accessing the new requester pays S3 bucket which features archival December 2017 vector tiles for the entire world.&lt;/p&gt;

&lt;p&gt;See it all together at &lt;a href=&quot;https://tile.nextzen.org/preview.html&quot;&gt;tile.nextzen.org/preview.html&lt;/a&gt;.&lt;/p&gt;

&lt;div id=&quot;distribution&quot; style=&quot;margin-left: calc(50% - 50vw); width: 100vw;&quot;&gt;
&lt;center&gt;&lt;img width=&quot;1220&quot; height=&quot;810&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/mapzen-basemap-styles.gif&quot; alt=&quot;Mapzen basemap styles&quot; &gt;&lt;/center&gt;
&lt;/div&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;importing-a-basemap&quot;&gt;Importing a Basemap&lt;/h3&gt;

&lt;p&gt;All basemaps have been updated to use the new Nextzen sources, but you&amp;rsquo;ll need to import a new major version from a new web location.&lt;/p&gt;

&lt;p&gt;For example, this Tangram scene file example imports Refill, adds Blue as a color theme, shows more labels, using the new Nextzen endpoints:&lt;/p&gt;

&lt;div width=&quot;900&quot;&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;kr&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//www.nextzen.org/carto/refill-style/11/refill-style.zip&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//www.nextzen.org/carto/refill-style/11/themes/color-blue.zip&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;https&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;c1&quot;&gt;//www.nextzen.org/carto/refill-style/11/themes/label-10.zip&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;p&gt;The updated basemap scenes files also include many &lt;a href=&quot;#ps-show-me-the-icons&quot;&gt;new icons&lt;/a&gt; and a few bug fixes, and are fully documented &lt;a href=&quot;#all-together-now...&quot;&gt;below&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;200&quot; height=&quot;200&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/8495302.png&quot; alt=&quot;Tangram logo&quot;&gt;&lt;/p&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;rendering-maps-with-tangram-js&quot;&gt;Rendering maps with Tangram JS&lt;/h3&gt;

&lt;p&gt;The basemaps are written in the Tangram scene file syntax, and the Tangram JS library is available for import to your Javascript projects via a new Nextzen endpoint:&lt;/p&gt;

&lt;div style=&quot;float: left;&quot; width=&quot;900&quot;&gt;

&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-javascript&quot; data-lang=&quot;javascript&quot;&gt;&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;nx&quot;&gt;script&lt;/span&gt; &lt;span class=&quot;nx&quot;&gt;type&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&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;s2&quot;&gt;&amp;quot;https://www.nextzen.org/tangram/0.14/tangram.min.js&amp;quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;/script&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;/div&gt;

&lt;p&gt;Tangram JS, Tangram ES, and &lt;a href=&quot;https://tangram.city/play/&quot;&gt;Tangram Play&lt;/a&gt; remain open source projects.&lt;/p&gt;

&lt;p&gt;NOTE: The &lt;a href=&quot;https://github.com/mapzen/mapzen.js&quot;&gt;Mapzen.js&lt;/a&gt; wrapper around Tangram is not currently ported over to Nextzen. &lt;a href=&quot;http://eepurl.com/diYJzD&quot;&gt;Stay in touch&lt;/a&gt; if that&amp;rsquo;s important to you.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;500&quot; height=&quot;400&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/vector-tile-example.png&quot; alt=&quot;Vector tiles are the future&quot;&gt;&lt;/p&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;vector-tiles&quot;&gt;Vector Tiles&lt;/h3&gt;

&lt;p&gt;If you were using Tilezen vector tiles via the Mapzen Vector Tile service you&amp;rsquo;ll need to get an API key (more on that later, &lt;a href=&quot;http://eepurl.com/diYJzD&quot;&gt;learn more&lt;/a&gt;) and update your endpoints to the new Nextzen locations:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;https://tile.nextzen.org/tilezen/vector/v1/{tilesize}/all/{z}/{x}/{y}.mvt?api_key=your-nextzen-api-key
https://tile.nextzen.org/tilezen/vector/v1/512/all/{z}/{x}/{y}.mvt?api_key=your-nextzen-api-key
https://tile.nextzen.org/tilezen/vector/v1/256/all/{z}/{x}/{y}.mvt?api_key=your-nextzen-api-key
https://tile.nextzen.org/tilezen/vector/v1/all/{z}/{x}/{y}.mvt?api_key=your-nextzen-api-key
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We&amp;rsquo;re also making an entire global vector tile build, based on December 2017 data, available as a &lt;a href=&quot;https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html&quot;&gt;requester pays&lt;/a&gt; S3 endpoint:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;vector-tiles-prod/20171221/{hashed-z-x-y-coordinate}.zip
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;To access the Tilezen vector tiles you&amp;rsquo;ll need to run the same middleware called &lt;a href=&quot;https://github.com/tilezen/tapalcatl-py/&quot;&gt;Tapalcatl-py&lt;/a&gt; that powers the &lt;code&gt;tile.nextzen.org&lt;/code&gt; service. Tapalcatl reads the &lt;a href=&quot;https://github.com/tilezen/tapalcatl-py/blob/778eea6538a4a1fabd3dad8e98aac0ef1ad065d8/server.py#L108-L131&quot;&gt;hashed-x-y-z-coordinate&lt;/a&gt; metatiles (which group many tiles together in one ZIP archive) and extracts and returns the requested tile in the correct format (MVT, GeoJSON, and TopoJSON) and tile size (256 and 512 pixel).&lt;/p&gt;

&lt;p&gt;Tapalcatl is similar to &lt;a href=&quot;https://github.com/mapbox/tilelive&quot;&gt;TileLive&lt;/a&gt; and other MBTiles based servers that vastly reduce financial costs associated with S3 gets and puts. This minimizes what would otherwise be billions of individual files, while introducing just a few milliseconds of latency at the edge. Amazon &lt;a href=&quot;https://aws.amazon.com/s3/pricing/&quot;&gt;S3 GET pricing&lt;/a&gt; in &lt;code&gt;us-east&lt;/code&gt; is currently $0.004 per 10,000 requests, and running Lambda and/or CloudFront on top of that adds only a little bit more.&lt;/p&gt;

&lt;p&gt;Instructions for running Tapalcatl as an AWS Lambda function with Zappa are included in the project&amp;rsquo;s &lt;a href=&quot;https://github.com/tilezen/tapalcatl-py/blob/master/README.md&quot;&gt;readme&lt;/a&gt; and enable a &amp;ldquo;serverless&amp;rdquo; (i.e.: low maintenance and generally cheap) way to serve vector tiles. Or &lt;a href=&quot;http://eepurl.com/diYJzD&quot;&gt;join our mailing list&lt;/a&gt; if you&amp;rsquo;d like information about hosted instances or future data updates.&lt;/p&gt;

&lt;p&gt;&lt;img width=&quot;622&quot; height=&quot;367&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/mapzen-terrain-tile-example.jpg&quot; alt=&quot;Terrain tile raster is faster&quot;&gt;&lt;/p&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;terrain-tiles&quot;&gt;Terrain Tiles&lt;/h3&gt;

&lt;p&gt;If you were using Tilezen terrain tiles via the Mapzen Terrain Tiles service you&amp;rsquo;ll need to get an API key and update your endpoints to the new Nextzen locations:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;https://tile.nextzen.org/tilezen/terrain/v1/{tilesize}/terrarium/{z}/{x}/{y}.png?api_key=your-nextzen-api-key
https://tile.nextzen.org/tilezen/terrain/v1/{tilesize}/normal/{z}/{x}/{y}.png?api_key=your-nextzen-api-key
https://tile.nextzen.org/tilezen/terrain/v1/geotiff/{z}/{x}/{y}.tif?api_key=your-nextzen-api-key
https://tile.nextzen.org/tilezen/terrain/v1/skadi/{N|S}{y}/{N|S}{y}{E|W}{x}.hgt.gz?api_key=your-nextzen-api-key
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You can still access the Tilezen terrain tiles in 256 sized tiles via the existing Amazon public dataset S3 endpoints:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;elevation-tiles-prod/terrarium/{z}/{x}/{y}.png
elevation-tiles-prod/normal/{z}/{x}/{y}.png
elevation-tiles-prod/geotiff/{z}/{x}/{y}.tif
elevation-tiles-prod/skadi/{N|S}{y}/{N|S}{y}{E|W}{x}.hgt.gz
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The 512 and buffered 260 and 516 sized terrain tiles are made possible by running &lt;a href=&quot;https://github.com/tilezen/zaloa&quot;&gt;Zaloa&lt;/a&gt; as a Lambda function.&lt;/p&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;all-together-now...&quot;&gt;All together now&amp;hellip;&lt;/h3&gt;

&lt;p&gt;The following versions of the Tangram basemap styles introduce support for Nextzen sources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bubble Wrap: &lt;code&gt;9.0.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Cinnabar: &lt;code&gt;9.0.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Refill: &lt;code&gt;11.0.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Tron: &lt;code&gt;6.0.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Walkabout &lt;code&gt;7.0.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;SDK Deault &lt;code&gt;1.1.0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;new-nextzen-basemap-endpoints:&quot;&gt;New Nextzen basemap endpoints:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/bubble-wrap-style/9/bubble-wrap-style.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/cinnabar-style/9/cinnabar-style.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/refill-style/11/refill-style.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/tron-style/6/tron-style.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/walkabout-style/7/walkabout-style.zip&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/sdk-default-style/1.1/sdk-default-style.zip&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;icon-library:-sprites-on-their-own&quot;&gt;Icon Library: sprites on their own&lt;/h3&gt;

&lt;p&gt;The full Icon Library is available for use in your favorite mapping or graphics software as individual sprite images, independent of the basemaps. Currently only &lt;code&gt;png&lt;/code&gt; format at &lt;code&gt;2x&lt;/code&gt; resolution is supported.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/bubble-wrap-style/9/icons/{resolution}/{sprite}.{format}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/cinnabar-style/9/icons/{resolution}/{sprite}.{format}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/refill-style/11/icons/{resolution}/{sprite}.{format}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/tron-style/6/icons/{resolution}/{sprite}.{format}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/walkabout-style/7/icons/{resolution}/{sprite}.{format}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;https://www.nextzen.org/carto/sdk-default-style/1.1/icons/{resolution}/{sprite}.{format}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Load the &lt;code&gt;adit&lt;/code&gt; sprite in the &lt;strong&gt;Bubble Wrap&lt;/strong&gt; style at &lt;code&gt;2x&lt;/code&gt; in &lt;code&gt;png&lt;/code&gt; format:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;https://www.nextzen.org/carto/bubble-wrap-style/9/icons/2x/adit.png
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;center&gt;&lt;img src=&quot;https://www.nextzen.org/carto/bubble-wrap-style/9/icons/2x/adit.png&quot; alt=&quot;Bubble Wrap adit&quot; height=&quot;19&quot; width=&quot;19&quot;&gt;&lt;/center&gt;&lt;/p&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;thank-you&quot;&gt;Thank you&lt;/h3&gt;

&lt;p&gt;It&amp;rsquo;s been a pleasure serving you the last few years! If you&amp;rsquo;d like to continue or otherwise sponsor the Tilezen open source project let us know :)&lt;/p&gt;

&lt;p&gt;See you on the other side!&lt;/p&gt;

&lt;h4 id=&quot;&amp;nbsp;&quot;&gt;&amp;nbsp;&lt;/h4&gt;

&lt;h3 id=&quot;ps:-show-me-the-icons&quot;&gt;PS: Show me the icons&lt;/h3&gt;

&lt;p&gt;This release of the basemaps and stand-alone icon libraries triples the number of map icons, with 100% interoperability with the Maki icon set, the default openstreetmap.org cartography, the HOT icon set, and adds icons for all Tilezen POI kinds. (When there is a name discrepancy between Tilezen and Maki, for instance, we re-export the same artwork per name variant.) We also added nearly 200 shields, each with 5 character widths to support localized road shields in more than 40 countries.&lt;/p&gt;

&lt;p&gt;The artwork is available in 3 different styles: &lt;strong&gt;Bubble Wrap&lt;/strong&gt; full color, &lt;strong&gt;Walkabout&lt;/strong&gt; silhouettes, and &lt;strong&gt;Refill&lt;/strong&gt;&amp;rsquo;s greyscale. We were lucky to contract with the extraordinary Denis Sazhin of &lt;a href=&quot;http://iconka.com&quot;&gt;iconka&lt;/a&gt; to extend Geraldine&amp;rsquo;s original set of icons. The raw Illustrator files is also &lt;a href=&quot;https://github.com/tangrams/icons&quot;&gt;available&lt;/a&gt; under an open license, please use the artwork far and wide :)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;674 map and ux icons&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;958 road shields&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;290 United States&lt;/strong&gt; road shields for all 50 states, US Routes, US Interstates, county routes, US Forest Service highways and roads, and more.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;668 international&lt;/strong&gt; road shields, including in: Argentina, Australia, Austria, Bangladesh, Belgium, Brazil, Canada (including all provinces), Chile, China, Denmark, Finland, France, Germany, Greece, India, Indonesia, Iraq, Ireland, Italy, Japan, Luxembourg, Malaysia, Mexico, Netherlands, New Zealand, Norway, Peru, Poland, Portugal, Romania, Russia, Saudi Arabia, Singapore, South Africa, South Korea, Spain, Sweden, Switzerland, Thailand, Turkey, Ukraine, United Kingdom, and Vietnam.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div id=&quot;distribution&quot; style=&quot;margin-left: calc(50% - 50vw); width: 100vw;&quot;&gt;
&lt;center&gt;&lt;img width=&quot;509&quot; height=&quot;668&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/bubble-wrap@2x.png&quot; alt=&quot;Bubble Wrap icons&quot; &gt;&lt;/center&gt;

&lt;center&gt;&lt;img width=&quot;505&quot; height=&quot;1308&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/bubble-wrap-shields-usa@2x.png&quot; alt=&quot;Bubble Wrap USA road shields&quot; &gt;&lt;/center&gt;

&lt;center&gt;&lt;img width=&quot;507&quot; height=&quot;1848&quot; src=&quot;/assets/images/mapzen-maps-long-term-support/bubble-wrap-shields-international@2x.png&quot; alt=&quot;Bubble Wrap international road shields&quot; &gt;&lt;/center&gt;
&lt;/div&gt;
</description>
  <pubDate>Tue, 30 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/long-term-support-mapzen-maps</link>
  <guid isPermaLink="true">https://mapzen.com/blog/long-term-support-mapzen-maps</guid>
</item>
		
			<item>
  <title>Post Mortem III</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            randy@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;script async src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;h2 id=&quot;a-letter-just-to-you,-with-flowers&quot;&gt;A Letter Just to You, with Flowers&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;https://s3.amazonaws.com/mapzen-blog/flowers1.jpg&quot; alt=&quot;Early springtime lilacs from Shelter Island, NY&quot;&gt;
&lt;em&gt;Early springtime lilacs. Shelter Island, NY&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hi there -&lt;/p&gt;

&lt;p&gt;It’s been a while since the &lt;a href=&quot;https://mapzen.com/blog/east-coker/&quot;&gt;first&lt;/a&gt; &lt;a href=&quot;https://mapzen.com/blog/magna-carto/&quot;&gt;two&lt;/a&gt; posts in our Mapzen Post Mortem series, but we’ve been busy. You’ve heard that &lt;a href=&quot;https://mapzen.com/blog/shutdown/&quot;&gt;Mapzen is shutting down&lt;/a&gt;, right? If you still depend on the services, please check our &lt;a href=&quot;https://mapzen.com/blog/migration/&quot;&gt;migration guide&lt;/a&gt; soon because February 1 is right around the corner&amp;hellip; We’ll keep adding relevant substitutes to the guide over the next week so do take a look if you need to move.&lt;/p&gt;

&lt;p&gt;Most at Mapzen are gone, but a few are here for the next week. One week! Not much time left. On the subject of time, we all have so little of it to begin with, so if you’re fortunate enough to have the choice, make sure you’re working on things that matter to you and the people you care about. If you’re reading this post, you probably have more choice than you realize: more choice and less time. Mapzen was lucky to be able to work on things that mattered to us for the last four-and-a-half years, and we wish the same for you.&lt;/p&gt;

&lt;p&gt;On that subject, I love this Tweet and send it warmly to the Mapzen team:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;listen. if you have the chance to create something with your friends, do it. do not wait. the chance may not come again. you will not find these people, as they are, again. as much as it may feel like it, opportunity doesnt last forever. it barely even lasts to begin with. go!&lt;/p&gt;&amp;mdash; jomny sun (@jonnysun) &lt;a href=&quot;https://twitter.com/jonnysun/status/942196176954281986?ref_src=twsrc%5Etfw&quot;&gt;December 17, 2017&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;It was an honor and pleasure to build all this with you!&lt;/p&gt;

&lt;h3 id=&quot;post-blame,-less-mortem&quot;&gt;Post Blame, Less Mortem&lt;/h3&gt;

&lt;p&gt;As Mapzen shuts down, I’ve been thinking about legacy, continuity, and like everyone here, I&amp;rsquo;ve been thinking about what&amp;rsquo;s next. We&amp;rsquo;re in an interesting position where much of what we built will live on, and I wanted to talk more about that.&lt;/p&gt;

&lt;p&gt;I also promised a reply to Kellan:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;I&amp;rsquo;ve always been inspired by Mapzen&amp;rsquo;s commitment to build sustained long term improvements to the ecosystem &amp;ndash; I hope they write more about those choices and how their work will live on because of them. &lt;a href=&quot;https://t.co/4KbRYS2tM6&quot;&gt;https://t.co/4KbRYS2tM6&lt;/a&gt;&lt;/p&gt;&amp;mdash; kellan (@kellan) &lt;a href=&quot;https://twitter.com/kellan/status/948309514134093824?ref_src=twsrc%5Etfw&quot;&gt;January 2, 2018&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;Kellan is the former CTO of Etsy, which popularized the &lt;a href=&quot;https://codeascraft.com/2012/05/22/blameless-postmortems/&quot;&gt;blameless post-mortem&lt;/a&gt;, a way to understand and learn from failure in a constructive way. I find it amusing that our post mortem series includes both &lt;a href=&quot;https://mapzen.com/blog/east-coker/&quot;&gt;poems about death&lt;/a&gt; and also quotes from him, and I hope he doesn&amp;rsquo;t mind being dragged into this. So here goes&amp;hellip;&lt;/p&gt;

&lt;p&gt;Mapzen had a mandate to work only on open software and data, a very rare opportunity. Usually, companies that pursue open software or data draw a strategic line about what will be open and what will be proprietary. This makes a lot of sense; it was the case at my previous companies and will certainly be the case at my next company. But some kind of open strategy remains critical in mapping, a field dominated by incumbents who have invested billions of dollars and who use their advantages to restrict products across many industries. No one can compete in mapping at this point without embracing some collaborative efforts. At Mapzen, we went to the extreme and drew the line at near-zero proprietary elements, basically just this website and some operational code that didn&amp;rsquo;t make sense to publish.&lt;/p&gt;

&lt;p&gt;Would I undertake this strategy again? For a large company trying to find flexibility in a restrictive area like mapping, I think the Mapzen strategy makes a lot of sense. If two or more large companies put significant, long-term resources behind what we were doing, the difficult problem of mapping would quickly be solved and companies could move the competition to a more interesting area: their products. For companies focused specifically on mapping and location services, the Mapzen strategy makes less sense. They need to find the right strategic line and hope that their proprietary elements remain stable.&lt;/p&gt;

&lt;p&gt;In the end, I wouldn&amp;rsquo;t bet on any proprietary elements in mapping remaining stable.&lt;/p&gt;

&lt;h3 id=&quot;how-to-survive-death&quot;&gt;How to Survive Death&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://s3.amazonaws.com/mapzen-blog/flowers2.jpg&quot; alt=&quot;Forsythia in bloom with later-spring lilacs behind, Shelter Island, NY&quot;&gt;
&lt;em&gt;Forsythia in bloom with later-spring lilacs behind. Shelter Island, NY&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Early on at Mapzen, we were planning some new project. I asked a question that kind of scared me: &amp;ldquo;How would this survive the death of the company?&amp;rdquo; We weren&amp;rsquo;t close to death, and it scared me because who wants to hear that from the CEO? But it captured what we were doing in this special point in time and inspired our work. We had the chance to build everything to survive, and we did it. And we planned it all along the way to survive past our own existence.&lt;/p&gt;

&lt;p&gt;Because we built everything like this, others joined in. They trusted that we were working on permanent infrastructure not tied to a specific company. Our &lt;a href=&quot;https://github.com/whosonfirst-data/whosonfirst-data&quot;&gt;gazetteer&lt;/a&gt;, &lt;a href=&quot;https://github.com/valhalla&quot;&gt;routing engine&lt;/a&gt;, &lt;a href=&quot;https://github.com/pelias&quot;&gt;geocoder&lt;/a&gt;, &lt;a href=&quot;https://github.com/tilezen&quot;&gt;tile server&lt;/a&gt;, and &lt;a href=&quot;https://github.com/tangrams&quot;&gt;rendering engines&lt;/a&gt; were all set up as independent Github orgs with liberal licenses to ensure their durability. Others contribute to them, and their reach is wide. You&amp;rsquo;re using Mapzen&amp;rsquo;s legacy when you drive certain cars, play popular AR games, or interact with location data all over the Internet. Neither the shutdown of our hosted services nor the dissolution of the team can change this.&lt;/p&gt;

&lt;p&gt;We were able to do this because we were pursuing the strategy outlined above: trying to provide flexibility in a restrictive area. Having others join as equals wasn&amp;rsquo;t a threat, it was a success to be celebrated. Someone once asked me, &amp;ldquo;What happens if the big mapping providers decide to open their data as well?&amp;rdquo; I replied, &amp;ldquo;We can all just go home!&amp;rdquo; Of course there would still be work to do, but Mapzen would have considered this a big success for our mission.&lt;/p&gt;

&lt;p&gt;On January 2nd we announced our shutdown. December 2017 was one of the hardest months of my life, letting go one of the best teams in the industry and many good friends. As I came into the office on January 2nd and made the announcement at noon eastern time, I braced myself for a wave of internet snark and cynicism. Would people make fun of Mapzen for our tone and our all-open positioning? No. Instead, we all marveled at the overwhelming support and sadness from the community that loved our work and appreciated what we did. We spent most of the day &lt;a href=&quot;https://news.ycombinator.com/item?id=16053348&quot;&gt;at the top of Hacker News&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;not quite the way I wanted &lt;a href=&quot;https://twitter.com/mapzen?ref_src=twsrc%5Etfw&quot;&gt;@Mapzen&lt;/a&gt; to be number one on Hacker News &lt;a href=&quot;https://t.co/nq3ArEsBLO&quot;&gt;pic.twitter.com/nq3ArEsBLO&lt;/a&gt;&lt;/p&gt;&amp;mdash; Burrito Justice (@burritojustice) &lt;a href=&quot;https://twitter.com/burritojustice/status/948259138554830848?ref_src=twsrc%5Etfw&quot;&gt;January 2, 2018&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;No snark was detected. Our inboxes filled up. Twitter went wild. Corporate development teams from every company you might imagine - and many you might not - reached out to acquire us. Recruiters reached out to many on the team. The idea of hiring entire teams, whether they focused on search, navigation, or map rendering, became a hot topic. People learned that the tools and services we worked on could continue intact. January was a great month and gives me a lot of hope.&lt;/p&gt;

&lt;p&gt;We knew that building technology to last would be valuable for the community, but over the last month we realized it&amp;rsquo;s also valuable to individuals on the team. It turns out that working entirely in public on big problems is good for your career. The Mapzen team has a high profile and we&amp;rsquo;re humbled by the hiring demands, and want to remind companies that a lot of our high profile is due to non-engineering work. If you&amp;rsquo;re at a company that needs to improve its own profile, consider looking at our marketing, community, support, and business teams.&lt;/p&gt;

&lt;h3 id=&quot;case-study:-mobility&quot;&gt;Case Study: Mobility&lt;/h3&gt;

&lt;p&gt;Let&amp;rsquo;s look specifically at one of our products and how it will survive our death.&lt;/p&gt;

&lt;p&gt;Years ago I arrived at MapQuest through a startup acquisition, and I began thinking about open strategies for larger companies. The problem was that data providers were too restrictive and expensive. Data providers who were formerly partners suddenly seemed more like competitors, and it was becoming harder to build new products without control over the entire map stack including data. I had worked with OpenStreetMap data previously, and wondered if that might be a solution: share the data with others and compete on products instead. MapQuest became the earliest corporate backer of OpenStreetMap, and did some work on &lt;a href=&quot;http://mapnik.org/&quot;&gt;Mapnik&lt;/a&gt; and &lt;a href=&quot;https://github.com/openstreetmap/Nominatim&quot;&gt;Nominatim&lt;/a&gt; which would be used well into the future. I started to think about the elements that would later become Mapzen.&lt;/p&gt;

&lt;p&gt;When I left MapQuest, I always regretted not giving more access to the excellent navigation engine the MapQuest team built. So when we had the chance at Mapzen, we hired that team in its entirety and built the Valhalla routing engine. I&amp;rsquo;m very proud of this work: it&amp;rsquo;s the first global, open, multi-modal (meaning transit!) navigation engine. It&amp;rsquo;s built for low-memory usage to make it possible to use in embedded systems, like a car. Valhalla makes accessible to all developers what was previously reserved for Google and Apple. Their work is freely available &lt;a href=&quot;https://github.com/valhalla/valhalla/blob/master/COPYING&quot;&gt;under the liberal MIT license&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;m very happy that &lt;a href=&quot;https://blog.mapbox.com/mapbox-%EF%B8%8F-valhalla-1fdda95ac4f&quot;&gt;Mapbox hired this team&lt;/a&gt; and will continue the work around Valhalla in conjunction with their other navigation services. I&amp;rsquo;m confident that they will move this work forward, and pursue a sensible strategic line around open and proprietary. I look forward to see what they do here!&lt;/p&gt;

&lt;p&gt;But the key to Mapzen&amp;rsquo;s legacy is that you are free to &lt;a href=&quot;https://github.com/valhalla/packaging&quot;&gt;run Valhalla yourself&lt;/a&gt;. As we helped a well-known customer move off the paid services, we showed them how to do just this. They said, &amp;ldquo;I thought this was going to be a disaster, but actually it&amp;rsquo;s kind of awesome.&amp;rdquo; I agree!&lt;/p&gt;

&lt;p&gt;On the subject of awesome, &lt;a href=&quot;https://twitter.com/drewdaraabrams&quot;&gt;Drew Dara-Abrams&lt;/a&gt; and &lt;a href=&quot;https://twitter.com/woolie&quot;&gt;Ian Rees&lt;/a&gt;, who worked on mobility and transit at Mapzen, have &lt;a href=&quot;https://www.interline.io/&quot;&gt;announced a company called Interline Technologies&lt;/a&gt;. If you need help running Valhalla yourself, or want to work more closely with transit data, they&amp;rsquo;re available.&lt;/p&gt;

&lt;p&gt;Brian Eno &lt;a href=&quot;http://music.hyperreal.org/artists/brian_eno/interviews/musn82.htm&quot;&gt;once said about the Velvet Underground&lt;/a&gt; that their first album sold few copies, but that everyone who bought one formed a band. I&amp;rsquo;d like to see something similar happen with Mapzen&amp;rsquo;s work - I want to see a lot of new companies pop up here with what we built. I&amp;rsquo;d like to think back on Mapzen as the Velvet Underground of mapping.&lt;/p&gt;

&lt;h3 id=&quot;other-case-studies&quot;&gt;Other Case Studies&lt;/h3&gt;

&lt;p&gt;If you want to read more on the same topic, check out &lt;a href=&quot;https://www.whosonfirst.org/blog/2018/01/02/chapter-two/&quot;&gt;Aaron&amp;rsquo;s post about Who&amp;rsquo;s On First&lt;/a&gt;. Also we&amp;rsquo;ll announce some exciting developments for our search and vector tiles services before we close later this week, so watch this space. Spoiler alert: all of our work will continue to be supported and accessible to all.&lt;/p&gt;

&lt;h3 id=&quot;what&amp;#39;s-next-for-me&quot;&gt;What&amp;rsquo;s Next for Me&lt;/h3&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Only three or four more gigantic problems to solve and this should all work pretty well&lt;/p&gt;&amp;mdash; Randy Meech (@randyme) &lt;a href=&quot;https://twitter.com/randyme/status/704648762866712576?ref_src=twsrc%5Etfw&quot;&gt;March 1, 2016&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;What&amp;rsquo;s next! Follow me above to see what&amp;rsquo;s next very soon (it will be awesome).&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve been working in open mapping for about ten years now. While Mapzen made a lot of progress, a few of the problems we wanted to solve still exist. To my mind, high quality points of interest (restaurants, bars, parks, etc) are still too inaccessible, and this area has not improved as fast as other areas of mapping. I want to focus more directly on this as Mapzen had a very wide focus. I&amp;rsquo;m also interested in exploring some of the decentralizing technologies that are emerging now; my sense is that they&amp;rsquo;re a good way to express the work we&amp;rsquo;ve already been doing with open software and data.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s keep in touch! Thanks for working with us and thanks for caring!&lt;/p&gt;

&lt;p&gt;Much love,&lt;br&gt;
Randy&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://s3.amazonaws.com/mapzen-blog/flowers3.jpg&quot; alt=&quot;Lilacs in full bloom, Shelter Island, NY&quot;&gt;
&lt;em&gt;Lilacs in full bloom. Shelter Island, NY&lt;/em&gt;&lt;/p&gt;
</description>
  <pubDate>Mon, 29 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/a-letter-just-to-you</link>
  <guid isPermaLink="true">https://mapzen.com/blog/a-letter-just-to-you</guid>
</item>
		
			<item>
  <title>Post Mortem II</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            randy@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;&lt;em&gt;This is a republication of &lt;a href=&quot;https://mapzen.com/blog/our-magna-carto/&quot;&gt;Our Magna Carto&lt;/a&gt; from July 1, 2015, and the second installment of our post mortem series. Read &lt;a href=&quot;https://mapzen.com/blog/our-magna-carto/&quot;&gt;the first installment here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One of my favorite pages on Wikipedia lists the &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_oldest_companies&quot;&gt;oldest companies in the world&lt;/a&gt;. While mapping is indeed an ancient profession, you won’t find any mapping companies there: the oldest companies make alcoholic beverages, knives and swords, or provide restaurant and hotel services. The oldest I’ve done business with is probably Stella Artois (1366).&lt;/p&gt;

&lt;p&gt;The oldest company in the world was until recently &lt;a href=&quot;https://en.wikipedia.org/wiki/Kong%C5%8D_Gumi&quot;&gt;Kongō Gumi&lt;/a&gt;, a Japanese construction company founded in 578. Yet even good old Kongō Gumi ran into difficulties in 2006 and was absorbed into a larger construction company, proving that nothing in this world is permanent. Even &lt;a href=&quot;https://en.wikipedia.org/wiki/Shitenn%C5%8D-ji&quot;&gt;Shitennō-ji Buddhist temple&lt;/a&gt;, which it originally built in the 6th century, has been completely rebuilt a number of times over the centuries:&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Shitenn%C5%8D-ji#/media/File:Shitennoji07s3200.jpg&quot;&gt;&lt;img src=&quot;/assets/images/our-magna-carto/Shiten.jpg&quot; alt=&quot;screen-reader accessible &amp;quot;Shitennō-ji&amp;quot; for image&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p class=&#39;caption&#39;&gt;Shitennō-ji: younger than it looks. image credit 663highland, CC BY 2.5&lt;/p&gt;

&lt;p&gt;I started in tech in 2000, and moved into the mapping industry in 2008. Not a long time ago by any means, although feeling &lt;em&gt;like I’ve seen things before&lt;/em&gt; happens more frequently to me at this phase of my career. And what I’ve seen over the years is change and impermanence. Giants have tripped, hot startups have been acquired and fallen quite literally off the map. What has remained and been carried forward?&lt;/p&gt;

&lt;h3 id=&quot;seeking-permanence&quot;&gt;Seeking permanence&lt;/h3&gt;

&lt;p&gt;One of the core tenets of Mapzen is that all our software and data must be open. This has been our guiding principle since the beginning, and as sure as all things must end, we will follow this through to our end (hopefully a hundred or more years from now, like Kongō Gumi). By building everything in the open we can build for real permanence, not just the short-lived permanence of a hot brand in this turbulent space.&lt;/p&gt;

&lt;p&gt;Our motto is “Start where you are.” This means many different things, but I often think about it when we’re looking at an area where open data is clearly inferior to proprietary, such as geocoding. A conventional company would abandon its open philosophy and strike a deal with a proprietary geocoding service. But &lt;a href=&quot;https://investor.google.com/corporate/2004/ipo-founders-letter.html&quot;&gt;to quote Google&lt;/a&gt;, &lt;strong&gt;we are not a conventional company:&lt;/strong&gt; we will start where we are and insist on open data. This is part of our work with Code for America and OpenAddresses: &lt;a href=&quot;http://www.codeforamerica.org/blog/2015/03/03/mapzen-and-our-work-on-geographic-open-data/&quot;&gt;we would rather spend $500,000 improving open address data&lt;/a&gt; than strike a quick deal to provide a better geocoder. We would rather do things that benefit all in the open.&lt;/p&gt;

&lt;p&gt;Why? Because striking a quick deal robs from our collective future. It props up old, struggling business models, and prevents us and our developers from using and improving data as a community. It’s not that we don’t have the money to work with traditional map data providers. We won’t work with them because it would divert focus from the real work of improving open data, which will help everyone. We will never take harmful shortcuts, even if they make short-term business sense.&lt;/p&gt;

&lt;p&gt;At the US State of the Map conference, I spoke on &lt;a href=&quot;https://www.youtube.com/watch?v=MgEh9d9Rj74&quot;&gt;businesses and OpenStreetMap&lt;/a&gt;. At the end of the talk I invited the whole community - individuals, businesses, governments - to work together to get all of this data into the open. Doing this will allow us to build something that will outlast many things, and will certainly outlast the older proprietary models that we see collapsing around us now. Then we can build much more interesting things on top.&lt;/p&gt;

&lt;p&gt;As companies and individuals, let’s all work on things that will be around for the next hundred years.&lt;/p&gt;
</description>
  <pubDate>Tue, 09 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/magna-carto</link>
  <guid isPermaLink="true">https://mapzen.com/blog/magna-carto</guid>
</item>
		
			<item>
  <title>Mapzen Post Mortem I</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;&lt;img src=&quot;https://magnoliaforever.files.wordpress.com/2011/12/the-seventh-seal3.jpg&quot; alt=&quot;Seventh Seal Danse Macabre&quot;&gt;
&lt;em&gt;The Seventh Seal, Danse Macabre&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;O dark dark dark. They all go into the dark,&lt;br&gt;
The vacant interstellar spaces, the vacant into the vacant,&lt;br&gt;
The captains, merchant bankers, eminent men of letters,&lt;br&gt;
The generous patrons of art, the statesmen and the rulers,&lt;br&gt;
Distinguished civil servants, chairmen of many committees,&lt;br&gt;
Industrial lords and petty contractors, all go into the dark,&lt;br&gt;
And dark the Sun and Moon, and the Almanach de Gotha&lt;br&gt;
And the Stock Exchange Gazette, the Directory of Directors,&lt;br&gt;
And cold the sense and lost the motive of action.&lt;br&gt;
And we all go with them, into the silent funeral,&lt;br&gt;
Nobody&amp;rsquo;s funeral, for there is no one to bury.&lt;/p&gt;

&lt;p&gt;I said to my soul, be still, and let the dark come upon you&lt;br&gt;
Which shall be the darkness of God. As, in a theatre,&lt;br&gt;
The lights are extinguished, for the scene to be changed&lt;br&gt;
With a hollow rumble of wings, with a movement of darkness on darkness,&lt;br&gt;
And we know that the hills and the trees, the distant panorama&lt;br&gt;
And the bold imposing facade are all being rolled away -&lt;br&gt;
Or as, when an underground train, in the tube, stops too long between stations&lt;br&gt;
And the conversation rises and slowly fades into silence&lt;br&gt;
And you see behind every face the mental emptiness deepen&lt;br&gt;
Leaving only the growing terror of nothing to think about;&lt;br&gt;
Or when, under ether, the mind is conscious but conscious of nothing—&lt;/p&gt;

&lt;p&gt;I said to my soul, be still, and wait without hope&lt;br&gt;
For hope would be hope for the wrong thing; wait without love&lt;br&gt;
For love would be love of the wrong thing; there is yet faith&lt;br&gt;
But the faith and the love and the hope are all in the waiting.&lt;br&gt;
Wait without thought, for you are not ready for thought:&lt;br&gt;
So the darkness shall be the light, and the stillness the dancing.&lt;/p&gt;

&lt;p&gt;Whisper of running streams, and winter lightning.&lt;br&gt;
The wild thyme unseen and the wild strawberry,&lt;br&gt;
The laughter in the garden, echoed ecstasy&lt;br&gt;
Not lost, but requiring, pointing to the agony&lt;br&gt;
Of death and birth.&lt;/p&gt;

&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You say I am repeating&lt;br&gt;
Something I have said before. I shall say it again,&lt;br&gt;
Shall I say it again? In order to arrive there,&lt;br&gt;
To arrive where you are, to get from where you are not,&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You must go by a way wherein there is no ecstasy.&lt;br&gt;
In order to arrive at what you do not know&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You must go by a way which is the way of ignorance.&lt;br&gt;
In order to possess what you do not possess&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You must go by the way of dispossession.&lt;br&gt;
In order to arrive at what you are not&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;You must go through the way in which you are not.&lt;br&gt;
And what you do not know is the only thing you know&lt;br&gt;
And what you own is what you do not own&lt;br&gt;
And where you are is where you are not.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;-T.S. Eliot from &amp;ldquo;The Four Quartets&amp;rdquo; - East Coker III&lt;/em&gt;&lt;/p&gt;
</description>
  <pubDate>Mon, 08 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/east-coker</link>
  <guid isPermaLink="true">https://mapzen.com/blog/east-coker</guid>
</item>
		
			<item>
  <title>Mapzen Shutdown :(</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;&lt;div class=&quot;banner-message&quot; style=&quot;background-color: #366026; /* $mz-forestgreen-1 */&quot;&gt;
  &lt;div class=&quot;container&quot;&gt;
    &lt;div class=&quot;row&quot;&gt;
      &lt;div class=&quot;col-xs-12 col-sm-9&quot;&gt;
        &lt;h3 class=&quot;no-margin pt-1&quot;&gt;Mapzen is now a Linux Foundation project!&lt;/h3&gt;
      &lt;/div&gt;
      &lt;div class=&quot;hidden-xs col-sm-3&quot;&gt;
        &lt;a href=&quot;https://www.linuxfoundation.org/press-release/2019/01/mapzen-open-source-data-and-software-for-real-time-mapping-applications-to-become-a-linux-foundation-project&quot; class=&quot;btn btn-secondary&quot;&gt;Read more&lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;&lt;i&gt;There continues to be a future for the projects incubated at Mapzen and those tools and data continue to be &lt;a href=&quot;https://www.mapzen.com/blog/mapzen-project-updates-december-2019/&quot;&gt;used and updated&lt;/a&gt; in 2020 and beyond after our January 2019 &lt;a href=&quot;https://www.linuxfoundation.org/press-release/2019/01/mapzen-open-source-data-and-software-for-real-time-mapping-applications-to-become-a-linux-foundation-project&quot;&gt;transition to the Linux Foundation&lt;/a&gt;.&lt;/b&gt;&lt;/i&gt;&lt;/p&gt;

&lt;p&gt;&lt;i&gt;Now back to 2018&amp;hellip;&lt;/i&gt; Unfortunately, we have some sad news. Mapzen will cease operations at the end of January 2018. Our hosted APIs and all related support and services will turn off on February 1, 2018. You will not be charged for API usage in December/January. We know this is an inconvenience and have provided a &lt;a href=&quot;https://mapzen.com/blog/migration&quot;&gt;migration guide to similar services&lt;/a&gt; for our developer community. Our goal is to help as much as possible to ensure continuity in the services that you have built with us.&lt;/p&gt;

&lt;p&gt;Fortunately, the core products of Mapzen are built entirely on open software and data. As a result, there are options to run Mapzen services yourself or to switch to other service providers.&lt;/p&gt;

&lt;p&gt;Thanks for being with us over the past four years. We&amp;rsquo;re grateful that the open work we&amp;rsquo;ve done can continue outside of Mapzen and while we know this is a sad day, we’re optimistic about what&amp;rsquo;s next.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Preview image: Air Afrique Map of the World by M. Bourie from the David Rumsey Map Collection&lt;/em&gt;&lt;/p&gt;
</description>
  <pubDate>Tue, 02 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/shutdown</link>
  <guid isPermaLink="true">https://mapzen.com/blog/shutdown</guid>
</item>
		
			<item>
  <title>Mapzen Alternatives</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;Mapzen will cease operations at the end of January 2018, and its hosted APIs and all related support and services will turn off on February 1, 2018.&lt;/p&gt;

&lt;p&gt;Your two options are to switch to another hosted API that offers similar functionality, or to run your own servers with the open-source projects that powered Mapzen services. We list several options below to make this as easy as possible.&lt;/p&gt;

&lt;h2 id=&quot;alternate-services-and-hosted-apis&quot;&gt;Alternate services and hosted APIs&lt;/h2&gt;

&lt;h3 id=&quot;mapzen-vector-tiles-and-cartography&quot;&gt;Mapzen Vector Tiles and Cartography&lt;/h3&gt;

&lt;p&gt;For basemaps and vector tiles, you may want to consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://mapzen.com/blog/long-term-support-mapzen-maps/&quot;&gt;Nextzen&lt;/a&gt; (A long-term support version of own own Tilezen)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mapbox.com/maps/&quot;&gt;Mapbox&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://openmaptiles.org/&quot;&gt;OpenMapTiles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thunderforest.com/docs/vector-maps-api/&quot;&gt;Thunderforest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mapcat.com/&quot;&gt;MAPCAT&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Long-term support for Vector Tiles is available &lt;a href=&quot;https://mapzen.com/blog/long-term-support-mapzen-maps/&quot;&gt;via Nextzen&lt;/a&gt; through 2018 supported by Amazon Web Services, thanks to an award from the &lt;a href=&quot;https://aws.amazon.com/earth/research-credits/&quot;&gt;Earth on AWS Cloud Credits for Research Program&lt;/a&gt;. This includes hosted versions of Tangram JS and the map styles. The vector tile data is an archived December 2017 global build available in a requestor pays S3 bucket with associated serverless software.&lt;/p&gt;

&lt;p&gt;Terrain Tiles will continue to be available as an &lt;a href=&quot;https://aws.amazon.com/public-datasets/terrain/&quot;&gt;Amazon Public Dataset&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Mapzen Vector Tiles and Cartography are based on the &lt;a href=&quot;https://github.com/tangrams&quot;&gt;Tangram&lt;/a&gt; and &lt;a href=&quot;https://github.com/tilezen/&quot;&gt;Tilezen&lt;/a&gt; open-source projects. Read below for information on how to run these services locally.&lt;/p&gt;

&lt;p&gt;Tangram scene files saved in a &lt;a href=&quot;https://github.com/tangrams/tangram-play&quot;&gt;Tangram Play&lt;/a&gt; account can be saved to a &lt;a href=&quot;https://gist.github.com/&quot;&gt;GitHub Gist&lt;/a&gt; or downloaded locally, while Mapzen services are still running.&lt;/p&gt;

&lt;h3 id=&quot;mapzen-turn-by-turn-routing&quot;&gt;Mapzen Turn-by-Turn routing&lt;/h3&gt;

&lt;p&gt;For routing and navigation, you may want to consider these services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.graphhopper.com/&quot;&gt;GraphHopper&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mapbox.com/navigation/&quot;&gt;Mapbox Directions API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://project-osrm.org/&quot;&gt;Project OSRM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mapzen&amp;rsquo;s routing and navigation projects were backed by &lt;a href=&quot;https://github.com/valhalla&quot;&gt;Valhalla&lt;/a&gt;, an open-source project. Read below for how to run Valhalla locally.&lt;/p&gt;

&lt;h3 id=&quot;mapzen-search&quot;&gt;Mapzen Search&lt;/h3&gt;

&lt;p&gt;For search and geocoding, you may want to consider these services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://geocode.earth&quot;&gt;Geocode Earth&lt;/a&gt; (A new hosted version of our very own Pelias)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nominatim.openstreetmap.org/&quot;&gt;Nominatim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://geocoder.opencagedata.com/&quot;&gt;OpenCage Data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://osmnames.org/&quot;&gt;OSMNames&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mapbox.com/geocoding/&quot;&gt;Mapbox Search API&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mapzen Search was backed by &lt;a href=&quot;https://github.com/pelias/&quot;&gt;Pelias&lt;/a&gt;, an open source project. Read below for how to run this service locally.&lt;/p&gt;

&lt;h2 id=&quot;mobile&quot;&gt;Mobile&lt;/h2&gt;

&lt;p&gt;For Android and iOS, you may want to consider these third party SDKs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.mapbox.com/mobile/&quot;&gt;Mapbox&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the event you decide to host a version of Valhalla and Pelias locally, you can continue to use our mobile SDKs we&amp;rsquo;ve built to interact with that service.&lt;/p&gt;

&lt;p&gt;Mapzen iOS and Android SDKs, along with On The Road SDKs for Valhalla will be available at &lt;a href=&quot;https://github.com/nextzen&quot;&gt;https://github.com/nextzen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our LOST project for Android will be available at &lt;a href=&quot;https://github.com/lostzen/&quot;&gt;https://github.com/lostzen/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pelias and tangram-es SDKs will continue to be available from their respective repositories.&lt;/p&gt;

&lt;h2 id=&quot;transitland&quot;&gt;Transitland&lt;/h2&gt;

&lt;p&gt;Transitland will continue as an open-data project at &lt;a href=&quot;https://transit.land&quot;&gt;https://transit.land&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Transitland&amp;rsquo;s server and data operations through 2018 will be supported by Amazon Web Services, thanks to an award from the &lt;a href=&quot;https://aws.amazon.com/earth/research-credits/&quot;&gt;Earth on AWS Cloud Credits for Research Program&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Continue to follow &lt;a href=&quot;https://twitter.com/transitland&quot;&gt;@transitland&lt;/a&gt; on Twitter for updates.&lt;/p&gt;

&lt;h2 id=&quot;who&amp;#39;s-on-first-/-mapzen-places&quot;&gt;Who&amp;rsquo;s On First / Mapzen Places&lt;/h2&gt;

&lt;p&gt;Data (individual records) and source code for Who&amp;rsquo;s On First will continue to be hosted at &lt;a href=&quot;https://github.com/whosonfirst&quot;&gt;https://github.com/whosonfirst&lt;/a&gt;, but whosonfirst.mapzen.com and the Mapzen Places API will go offline.&lt;/p&gt;

&lt;p&gt;Who&amp;rsquo;s On First will continue (in a scaled back version, for now) at &lt;a href=&quot;https://whosonfirst.org&quot;&gt;https://whosonfirst.org&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data (individual records) and source code are at &lt;a href=&quot;https://github.com/whosonfirst&quot;&gt;https://github.com/whosonfirst&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;All of the data and code and blog posts have also been cloned to the Internet Archive.&lt;/li&gt;
&lt;li&gt;The Spelunker will go offline, in the short term.&lt;/li&gt;
&lt;li&gt;Batch processing and cascading edits will stop in the short term.&lt;/li&gt;
&lt;li&gt;A limited version of the API that returns individual records will be at &lt;a href=&quot;https://whosonfirst.org&quot;&gt;https://whosonfirst.org&lt;/a&gt;, with additional functionality growing over time (spatial queries, point-in-polygon, editorial tool, cascading updates).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Follow along at &lt;a href=&quot;https://www.whosonfirst.org&quot;&gt;https://www.whosonfirst.org&lt;/a&gt; for updates.&lt;/p&gt;

&lt;h2 id=&quot;metro-extracts&quot;&gt;Metro Extracts&lt;/h2&gt;

&lt;p&gt;Metro Extracts will no longer be updated, and the custom extract service will no longer be available.  We are working on making a copy of the existing extracts available.&lt;/p&gt;

&lt;p&gt;The Humanitarian Open Streetmap Team has created the &lt;a href=&quot;https://export.hotosm.org&quot;&gt;HOT Export Tool&lt;/a&gt; that creates customized extracts of up-to-date OSM data in various file formats, including PBFs. Please consider &lt;a href=&quot;https://www.hotosm.org/donate&quot;&gt;donating to HOT&lt;/a&gt;, whether or not you use this service.&lt;/p&gt;

&lt;p&gt;For non planet-sized PBF extracts, you may want to consider &lt;a href=&quot;https://www.geofabrik.de/&quot;&gt;Geofabrik&lt;/a&gt; or the &lt;a href=&quot;http://wiki.openstreetmap.org/wiki/Overpass_API&quot;&gt;Overpass API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also, &lt;a href=&quot;https://osmaxx.hsr.ch/&quot;&gt;OSMaxx&lt;/a&gt; can be used for downloading OSM data.&lt;/p&gt;

&lt;h2 id=&quot;documentation-and-blog-posts&quot;&gt;Documentation and blog posts&lt;/h2&gt;

&lt;p&gt;Blog posts will be archived on &lt;a href=&quot;https://medium.com/postzen&quot;&gt;https://medium.com/postzen&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Documentation will be available in each open-source GitHub repo:&lt;/p&gt;

&lt;table&gt;&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Documentation section&lt;/th&gt;
&lt;th&gt;Source location&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;http://www.mapzen.com/documentation/overview&quot;&gt;Overview&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/mapzen/mapzen-docs-generator/tree/master/docs&quot;&gt;https://github.com/mapzen/mapzen-docs-generator/tree/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/mapzen-js/&quot;&gt;mapzen.js&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/mapzen/mapzen.js/tree/master/docs&quot;&gt;https://github.com/mapzen/mapzen.js/tree/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/tangram/&quot;&gt;Tangram&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/tangrams/tangram-docs&quot;&gt;https://github.com/tangrams/tangram-docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/vector-tiles/&quot;&gt;Vector tiles&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/tilezen/vector-datasource/tree/master/docs&quot;&gt;https://github.com/tilezen/vector-datasource/tree/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/search/&quot;&gt;Search&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/pelias/pelias-doc&quot;&gt;https://github.com/pelias/pelias-doc&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/mobility/&quot;&gt;Mobility&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/valhalla/valhalla-docs&quot;&gt;https://github.com/valhalla/valhalla-docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/metro-extracts/&quot;&gt;Metro Extracts&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/mapzen/metro-extracts/tree/master/docs&quot;&gt;https://github.com/mapzen/metro-extracts/tree/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/terrain-tiles/&quot;&gt;Terrain tiles&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/tilezen/joerd&quot;&gt;https://github.com/tilezen/joerd&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/elevation/&quot;&gt;Elevation&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/valhalla/valhalla-docs&quot;&gt;https://github.com/valhalla/valhalla-docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/android/&quot;&gt;Android SDK&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/mapzen/android/tree/master/docs&quot;&gt;https://github.com/mapzen/android/tree/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/ios/&quot;&gt;iOS SDK&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/mapzen/ios/blob/master/docs&quot;&gt;https://github.com/mapzen/ios/blob/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/libpostal/&quot;&gt;Address parsing/libpostal&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/whosonfirst/go-whosonfirst-libpostal/blob/master/docs&quot;&gt;https://github.com/whosonfirst/go-whosonfirst-libpostal/blob/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/wof/&quot;&gt;Who&amp;rsquo;s On First&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-api/tree/master/docs&quot;&gt;https://github.com/whosonfirst/whosonfirst-www-api/tree/master/docs&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href=&quot;https://mapzen.com/documentation/cartography/&quot;&gt;Cartography&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&quot;https://github.com/tangrams/cartography-docs/&quot;&gt;https://github.com/tangrams/cartography-docs/&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;

&lt;h2 id=&quot;run-open-source-versions-of-mapzen-services&quot;&gt;Run open-source versions of Mapzen services&lt;/h2&gt;

&lt;p&gt;Mapzen services are backed by open-source software projects, and use open data. Even with limited technical knowledge, you can run these yourself for metro-sized areas using a local web server or &lt;a href=&quot;https://docs.docker.com/&quot;&gt;Docker containers&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;tangram-and-tilezen-(cartography-and-vector-tiles)&quot;&gt;Tangram and Tilezen (Cartography and Vector Tiles)&lt;/h3&gt;

&lt;p&gt;Documentation for Tangram is available at &lt;a href=&quot;https://github.com/tangrams/tangram-docs&quot;&gt;https://github.com/tangrams/tangram-docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/tangrams/tangram&quot;&gt;tangram.js&lt;/a&gt;, &lt;a href=&quot;https://github.com/tangrams/tangram-es&quot;&gt;tangram.es&lt;/a&gt;, Mapzen.js, &lt;a href=&quot;https://github.com/tangrams/tangram-play&quot;&gt;Tangram Play&lt;/a&gt; are all open-source projects that can be run locally.&lt;/p&gt;

&lt;h4 id=&quot;basemap-styles&quot;&gt;Basemap styles&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;https://github.com/tangrams/bubble-wrap&quot;&gt;Refill&lt;/a&gt;, &lt;a href=&quot;https://github.com/tangrams/walkabout-style&quot;&gt;Walkabout&lt;/a&gt;, &lt;a href=&quot;https://github.com/tangrams/bubble-wrap&quot;&gt;Bubble-wrap&lt;/a&gt;, &lt;a href=&quot;https://github.com/tangrams/tron-style&quot;&gt;Tron&lt;/a&gt; and &lt;a href=&quot;https://github.com/tangrams/cinnabar-style&quot;&gt;Cinnabar&lt;/a&gt; basemap styles will continue to be available in their repositories in &lt;a href=&quot;https://github.com/tangrams&quot;&gt;https://github.com/tangrams&lt;/a&gt; and served via tangrams.github.io and &lt;a href=&quot;https://mapzen.com/blog/long-term-support-mapzen-maps/&quot;&gt;via Nextzen.org&lt;/a&gt;.&lt;/p&gt;

&lt;h4 id=&quot;map-data&quot;&gt;Map data&lt;/h4&gt;

&lt;p&gt;While Tangram can import non-tiled GeoJSON and TopoJSON, vector tiles are what makes it interesting.&lt;/p&gt;

&lt;p&gt;The Docker version of Tilezen can dynamically serve tiles from a Metro Extract or reasonably-sized PBF.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tilezen in Docker &lt;a href=&quot;https://github.com/tilezen/tileserver/blob/master/DOCKER.md&quot;&gt;https://github.com/tilezen/tileserver/blob/master/DOCKER.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To run a map for a city or a region with no network dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save mapzen.js / tangram.js, index.html and scene.yaml file in a directory&lt;/li&gt;
&lt;li&gt;Extract a pyramid of tiles for area of interest using &lt;code&gt;tilepack&lt;/code&gt; and save them in that same directory. (Note you don’t need to go beyond z15 tiles as they contain all the data in higher (&amp;gt;= 16) tiles, and Tangram overzooms.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To download tiles from our hosted services before shutdown:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;https://github.com/tilezen/tilepacks
MAPZEN_API_KEY=mapzen-xxxxxx tilepack -122.51489 37.70808 -122.35698 37.83239 10 15 sf_mvt_10_15 --tile-size 512&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Size and download speeds makes this viable for a city and perhaps a region. The example above generates a 30MB pyramid of MVT tiles, or 138MB of topojson, for San Francisco. For GeoJSON, SF is 67MB at z14, and 130MB at z15.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serve tiles via a web server (localhost or hosted).&lt;/li&gt;
&lt;li&gt;Create a scene file for Tangram. Note you will need to override the &lt;code&gt;mapzen&lt;/code&gt; source in the scene file if you are importing a basemap.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sources:
    mapzen:
        type: MVT
        url:  localhost:8000/sf_mvt_10_15/all/{z}/{x}/{y}.mvt
        tile_size: 512
        max_zoom: 15
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h3 id=&quot;valhalla-(routing)&quot;&gt;Valhalla (routing)&lt;/h3&gt;

&lt;p&gt;Documentation for Valhalla is available at &lt;a href=&quot;https://github.com/valhalla/valhalla-docs&quot;&gt;https://github.com/valhalla/valhalla-docs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instructions on running Valhalla in Docker using data from a Metro Extract or PBF are at &lt;a href=&quot;https://github.com/valhalla/docker&quot;&gt;https://github.com/valhalla/docker&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;pelias-(search)&quot;&gt;Pelias (search)&lt;/h3&gt;

&lt;p&gt;Documentation for Pelias is available at &lt;a href=&quot;http://pelias.io&quot;&gt;http://pelias.io&lt;/a&gt; and &lt;a href=&quot;https://github.com/pelias/pelias-doc&quot;&gt;https://github.com/pelias/pelias-doc&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Instructions on how to run &lt;a href=&quot;https://github.com/pelias/dockerfiles&quot;&gt;Pelias in Docker&lt;/a&gt; with data from a Metro Extract or PBF and OpenAddresses data are at &lt;a href=&quot;https://github.com/pelias/dockerfiles/blob/master/how_to_guide.pdf&quot;&gt;https://github.com/pelias/dockerfiles/blob/master/how_to_guide.pdf&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;General instructions on running and installing Pelias and Elasticsearch: &lt;a href=&quot;http://pelias.io/install.html&quot;&gt;http://pelias.io/install.html&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;mobile&quot;&gt;Mobile&lt;/h3&gt;

&lt;p&gt;Android and iOS SDK source code and LOST will available at &lt;a href=&quot;https://github.com/lostzen&quot;&gt;https://github.com/lostzen&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Preview image: World Emigration Map by Charles Minard from the David Rumsey Map Collection&lt;/em&gt;&lt;/p&gt;
</description>
  <pubDate>Tue, 02 Jan 2018 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/migration</link>
  <guid isPermaLink="true">https://mapzen.com/blog/migration</guid>
</item>
		
			<item>
  <title>WOF in a Box (part 2)</title>
  <author>
    
      
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
            dan@mapzen.com
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
          
        
        
        
    
  </author>
  <description>&lt;p&gt;&lt;em&gt;This is the second of the two part guide to running &lt;a href=&quot;https://whosonfirst.mapzen.com&quot;&gt;Who&amp;rsquo;s On First&lt;/a&gt; tools on your own hardware. You may want to read &lt;a href=&quot;https://mapzen.com/blog/wof-in-a-box/&quot;&gt;part 1&lt;/a&gt; first.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Before we jump into installing the Who&amp;rsquo;s On First &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-api&quot;&gt;REST API&lt;/a&gt; and &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-boundaryissues&quot;&gt;editor&lt;/a&gt;, let&amp;rsquo;s briefly take stock of what we have running from the &lt;a href=&quot;https://mapzen.com/blog/wof-in-a-box/&quot;&gt;first part&lt;/a&gt; of this guide.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We have a git repo of &lt;a href=&quot;https://github.com/whosonfirst-data/whosonfirst-data&quot;&gt;WOF administrative data&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Incoming web requests get proxied by &lt;a href=&quot;https://www.nginx.com/&quot;&gt;nginx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;We can explore the data with our own installation of the &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-spelunker/&quot;&gt;WOF Spelunker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Some of the stuff we set up in part one, like Elasticsearch and nginx, are dependencies for this second part of the stack too.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/boxes-and-arrows.png&quot; alt=&quot;Boxes and arrows&quot;&gt;&lt;/p&gt;

&lt;p&gt;These next parts we&amp;rsquo;re setting up run on a &lt;a href=&quot;https://en.wikipedia.org/wiki/LAMP_(software_bundle)&quot;&gt;LAMP stack&lt;/a&gt;, each built with &lt;a href=&quot;https://github.com/exflickr/flamework/blob/master/docs/philosophy.md&quot;&gt;Flamework, a set of libraries and conventions&lt;/a&gt; originally created for the Flickr back-end. It still works just fine, although you can find some crufty bits if you poke around.&lt;/p&gt;

&lt;p&gt;The two remaining web apps exist separately for now, but could very well be combined into a single codebase at some point in the future. The diagram shown above is rather simplified, and reflects a slight adjustment from the plan in the first part of this guide. Instead of API requests getting routed through &lt;code&gt;/api&lt;/code&gt;, we will use the top-level &lt;code&gt;/&lt;/code&gt; path.&lt;/p&gt;

&lt;p&gt;The Who&amp;rsquo;s On First documentation we used to have at the top-level &lt;code&gt;/&lt;/code&gt; path is still &lt;a href=&quot;https://whosonfirst.mapzen.com/&quot;&gt;available online&lt;/a&gt;, if not on your NUC.&lt;/p&gt;

&lt;h2 id=&quot;getting-the-time-right&quot;&gt;Getting the time right&lt;/h2&gt;

&lt;p&gt;Before we start, there is one minor change from how we set up the server in &lt;a href=&quot;https://mapzen.com/blog/wof-in-a-box/&quot;&gt;part one&lt;/a&gt; of the guide. During the Ubuntu server setup I mentioned that I just accept the defaults except for a handful important changes. One important change that I left out was to set the server&amp;rsquo;s timezone to &lt;a href=&quot;https://en.wikipedia.org/wiki/Coordinated_Universal_Time&quot;&gt;UTC (Coordinated Universal Time)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We can easily revisit that step in the setup menu.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo dpkg-reconfigure tzdata
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then choose &lt;strong&gt;None of the above&lt;/strong&gt;, then &lt;strong&gt;UTC&lt;/strong&gt;. Then select &lt;strong&gt;Ok&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s err on the side of caution and install some software to ensure the server has the most up-to-date time set.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo apt-get update
sudo apt-get install -y ntpdate
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now we can update the time from the &lt;a href=&quot;https://www.nist.gov/&quot;&gt;National Institute of Standards and Technology&lt;/a&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo ntpdate time.nist.gov
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;With that settled, let&amp;rsquo;s continue.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/trolling-wtCFBQ0lNjxaU&quot;&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/continue.gif&quot; alt=&quot;Let&amp;#39;s continue&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;setting-up-the-api&quot;&gt;Setting up the API&lt;/h2&gt;

&lt;p&gt;Okay, let&amp;rsquo;s begin setting up the API. I&amp;rsquo;m going to assume you&amp;rsquo;re already SSH&amp;rsquo;d into the NUC machine.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen
git clone https://github.com/whosonfirst/whosonfirst-www-api.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Much of the API&amp;rsquo;s setup process is automated, but if you look inside the &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-api/blob/master/Makefile&quot;&gt;Makefile&lt;/a&gt; you can inspect each step in detail.&lt;/p&gt;

&lt;p&gt;Since we are proxying requests with nginx, we will set things up without SSL support (for now).&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-api
make setup-nossl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You may be prompted for your password for &lt;code&gt;sudo&lt;/code&gt;. You will also be asked to confirm that you want to install unattended upgrades (Yes) and which updates to install (the default is fine). Finally, you will choose a MySQL root password (and confirm it), then enter it once more to set up the database schema.&lt;/p&gt;

&lt;p&gt;When all of this finishes your API setup will &lt;em&gt;almost&lt;/em&gt; be in working order. Some things you should know about how the stack is set up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The API&amp;rsquo;s Apache configuration is symlinked from &lt;code&gt;whosonfirst-www-api/config/whosonfirst-www-api-apache.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The database is called &lt;code&gt;wof_api&lt;/code&gt; and is accessed by user &lt;code&gt;wof_api&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;All passwords and tokens are stored in &lt;code&gt;www/include/secrets.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;You will learn a lot by reading &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-api/blob/master/www/.htaccess&quot;&gt;&lt;code&gt;www/.htaccess&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;There&amp;rsquo;s also a great number of configuration tweaks contained in &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-api/blob/master/www/include/config.php&quot;&gt;&lt;code&gt;www/include/config.php&lt;/code&gt;&lt;/a&gt; (the convention is to set overrides in a separate file, we&amp;rsquo;ll get to that down below)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;configuring-apache&quot;&gt;Configuring Apache&lt;/h2&gt;

&lt;p&gt;We still need to adjust a couple configurations in Apache, to make the API run on port 8888.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-api
nano config/whosonfirst-www-api-apache.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Edit the first line to use port 8888:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&amp;lt;VirtualHost *:8888&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next, edit Apache&amp;rsquo;s &lt;code&gt;ports.conf&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo nano /etc/apache2/ports.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We&amp;rsquo;re instructing Apache to listen on 8888 and also 9999 (for Boundary Issues). We can get rid of the existing configurations for port 80 and 443. Those ports are handled by nginx.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;Listen 0.0.0.0:8888    # API
Listen 0.0.0.0:9999    # Boundary Issues
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s restart Apache and check to make sure we can reach port 8888.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo service apache2 restart
curl -I http://localhost:8888/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you see &lt;code&gt;HTTP/1.1 200 OK&lt;/code&gt; then you are in good shape.&lt;/p&gt;

&lt;h2 id=&quot;github-oauth-application&quot;&gt;GitHub OAuth application&lt;/h2&gt;

&lt;p&gt;We use GitHub&amp;rsquo;s OAuth mechanism to authenticate users. We will need to set some things up at GitHub in order for that to work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to GitHub&amp;rsquo;s &lt;a href=&quot;https://github.com/settings/developers&quot;&gt;Developer settings&lt;/a&gt; and navigate to OAuth Apps&lt;/li&gt;
&lt;li&gt;Click the &lt;a href=&quot;https://github.com/settings/applications/new&quot;&gt;New OAuth App&lt;/a&gt; button&lt;/li&gt;
&lt;li&gt;Enter an Application Name (&lt;code&gt;WOF in a Box&lt;/code&gt; is a good choice)&lt;/li&gt;
&lt;li&gt;For the Homepage URL, enter your server&amp;rsquo;s IP address, for example &lt;code&gt;http://192.168.0.47/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The Authorization callback URL is similar to the Homepage URL, but with an &lt;code&gt;/auth&lt;/code&gt; path suffix, e.g., &lt;code&gt;http://192.168.0.47/auth&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click the Register Application button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/oauth-app.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;Edit &lt;code&gt;/usr/local/mapzen/whosonfirst-www-api/www/include/secrets.php&lt;/code&gt; and copy/paste the GitHub OAuth tokens using the following configurations. You&amp;rsquo;ll want to add this just before &lt;code&gt;# the end&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;github_oauth_key&amp;#39;] = &amp;#39;(your client ID)&amp;#39;;
$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;github_oauth_secret&amp;#39;] = &amp;#39;(your client secret)&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;secret-hashes&quot;&gt;Secret hashes&lt;/h2&gt;

&lt;p&gt;While we&amp;rsquo;re looking at this file, check to see if the first three configurations are set. If they have values like &lt;code&gt;You must set cfg.crypto_password_secret&lt;/code&gt; that means we need to set them still. These are used for things like cookie sessions, passwords, and &lt;a href=&quot;https://en.wikipedia.org/wiki/Cross-site_request_forgery&quot;&gt;CSRF&lt;/a&gt;-deterrent crumbs.&lt;/p&gt;

&lt;p&gt;Generate a new secret hash for each of the three configurations, using the following script:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-api
php bin/generate_secret.php
php bin/generate_secret.php
php bin/generate_secret.php
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Those hashes get copied into &lt;code&gt;secrets.php&lt;/code&gt; like this (your hashes will be different):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;crypto_cookie_secret&amp;#39;] = &amp;#39;lfMi9sHoC2gnFKmMBgG8wUWqvqWO80eq&amp;#39;;
$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;crypto_password_secret&amp;#39;] = &amp;#39;afEp7fVgVe7TeO07jhud1y9opqgmhsmy&amp;#39;;
$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;crypto_crumb_secret&amp;#39;] = &amp;#39;u73GlqrDxqBOriFK921H8a0OsT8YZExz&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;configuring-nginx&quot;&gt;Configuring nginx&lt;/h2&gt;

&lt;p&gt;Before we can test everything, we will need to make one last adjustment to the nginx config. Instead of routing traffic from &lt;code&gt;/api&lt;/code&gt; to port 8888, we will send everything from the top level &lt;code&gt;/&lt;/code&gt; path.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo nano /etc/nginx/sites-enabled/whosonfirst
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;First, delete this block:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;location / {
    try_files $uri $uri/ =404;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then modify the API block to use &lt;code&gt;/&lt;/code&gt; instead of &lt;code&gt;/api&lt;/code&gt;. Notice there are two places that need editing, the &lt;code&gt;location /&lt;/code&gt; part and the &lt;code&gt;proxy_set_header X-Proxy-Path /&lt;/code&gt; part.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;location / {
    proxy_pass http://localhost:8888;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Proxy-Path /;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s restart nginx to make those configurations take effect.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo service nginx restart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;logging-in-with-github&quot;&gt;Logging in with GitHub&lt;/h2&gt;

&lt;p&gt;There is one last configuration we need to make for all of this to run on plain vanilla HTTP. It&amp;rsquo;s not so much that we wouldn&amp;rsquo;t want to run on HTTPS, just that we would need a public hostname, or a self-signed certificate.&lt;/p&gt;

&lt;p&gt;If file &lt;code&gt;config_local.php&lt;/code&gt; exists, it gets loaded in to override the default values defined in &lt;code&gt;config.php&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-api
nano www/include/config_local.php
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Add the following to disable HTTPS and, while we&amp;rsquo;re in here, use the right Elasticsearch index:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&amp;lt;?php

    $GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;server_force_https&amp;#39;] = 0;
    $GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;api_require_ssl&amp;#39;] = 0;
    $GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;elasticsearch_spelunker_index&amp;#39;] = &amp;#39;spelunker&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We don&amp;rsquo;t need a trailing &lt;code&gt;?&amp;gt;&lt;/code&gt; since it is optional, and can lead to &lt;a href=&quot;https://stackoverflow.com/questions/4410704/why-would-one-omit-the-close-tag&quot;&gt;unexpected side-effects&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Save your &lt;code&gt;config_local.php&lt;/code&gt; configuration, and then load up your WOF in a Box&amp;rsquo;s IP address (something like &lt;a href=&quot;http://192.168.0.47/&quot;&gt;http://192.168.0.47/&lt;/a&gt;) in a browser.&lt;/p&gt;

&lt;p&gt;In the top-right corner, choose &lt;strong&gt;Sign In&lt;/strong&gt; from the drop-down menu labeled &lt;strong&gt;You&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/signin.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;GitHub will ask for permission to authenticate you with the OAuth application you just set up. Click the green button to login.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/authorize.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;You should get redirected back to the WOF in a Box homepage. If all goes well you should see your name appear in the top-right drop-down menu. You have been OAuth&amp;rsquo;d by GitHub.&lt;/p&gt;

&lt;h2 id=&quot;create-an-access-token&quot;&gt;Create an access token&lt;/h2&gt;

&lt;p&gt;Go to the to-right drop-down menu and choose &lt;strong&gt;Developer&lt;/strong&gt;. From here you can explore some of the API methods available, and configure OAuth access.&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Your Access Tokens&lt;/strong&gt;, then &lt;strong&gt;Create a new access token for yourself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Give your token a name (&amp;ldquo;WOF in a Box&amp;rdquo; is a safe choice), permissions (&amp;ldquo;Read&amp;rdquo; is good), and expiration (&amp;ldquo;until I revoke it&amp;rdquo;).&lt;/p&gt;

&lt;p&gt;Then you have to click one more &lt;strong&gt;I agree!&lt;/strong&gt; checkbox and you should be set.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/access-token.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;You should see a green &amp;ldquo;hooray&amp;rdquo; message, with a hexidecimal token for you to copy/paste.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/hooray.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;For the sake of having a realistic looking example token, we&amp;rsquo;ll go with &lt;code&gt;87ffbaee33443e4b9b385606d6b9af28&lt;/code&gt;, but yours will be different.&lt;/p&gt;

&lt;h2 id=&quot;accessing-the-api&quot;&gt;Accessing the API&lt;/h2&gt;

&lt;p&gt;If you navigate to the &lt;strong&gt;API methods&lt;/strong&gt; section of the Developer pages, you can try out some of the methods using the web-based API explorer.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s try calling some API methods using &lt;code&gt;curl&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;curl -s &amp;quot;http://192.168.0.47/api/rest/?method=api.test.echo&amp;amp;access_token=87ffbaee33443e4b9b385606d6b9af28&amp;quot; | jq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You should see the following result:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;{
  &amp;quot;method&amp;quot;: &amp;quot;api.test.echo&amp;quot;,
  &amp;quot;access_token&amp;quot;: &amp;quot;87ffbaee33443e4b9b385606d6b9af28&amp;quot;,
  &amp;quot;stat&amp;quot;: &amp;quot;ok&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We can use a shell variable to store the IP address and access token, which should make the examples easier to copy/paste. Note, again, that your own IP and token will be different.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;wof_api=&amp;quot;http://192.168.0.47&amp;quot;
wof_token=&amp;quot;87ffbaee33443e4b9b385606d6b9af28&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now we should be able to test out the REST API. Let&amp;rsquo;s get a list of all the API method names.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;curl -s &amp;quot;$wof_api/api/rest/?method=api.spec.methods&amp;amp;access_token=$wof_token&amp;quot; | jq &amp;quot;[ .methods[].name ]&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let&amp;rsquo;s load up some info about a specific WOF record.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;curl -s &amp;quot;$wof_api/api/rest/?method=whosonfirst.places.getInfo&amp;amp;id=102030609&amp;amp;access_token=$wof_token&amp;quot; | jq
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You should see a record for &lt;a href=&quot;https://whosonfirst.mapzen.com/spelunker/id/102030609/&quot;&gt;Mumbai&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One last example, all the &lt;a href=&quot;https://whosonfirst.mapzen.com/docs/placetypes/#microhood&quot;&gt;microhoods&lt;/a&gt; in &lt;a href=&quot;https://whosonfirst.mapzen.com/spelunker/id/85922583/&quot;&gt;San Francisco&lt;/a&gt;:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;curl -s &amp;quot;$wof_api/api/rest/?method=whosonfirst.places.getDescendants&amp;amp;id=85922583&amp;amp;placetype=microhood&amp;amp;access_token=$wof_token&amp;quot; | jq &amp;#39;[ .places[][&amp;quot;wof:name&amp;quot;] ]&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You should take some time to explore the API documentation, and try out the &lt;a href=&quot;https://mapzen.com/blog/whosonfirst-api-explorer/&quot;&gt;standalone API Explorer desktop app&lt;/a&gt;. It has a settings pane that lets you change the API endpoint, so you can test out requests against your own WOF in a Box rig.&lt;/p&gt;

&lt;p&gt;Important note: not all of the API methods will work for you at this point. We need some additional software for spatial queries and an additional Elasticsearch index for brands to work. Those can be subjects of some future WOF guide.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/cat-box-j1BQPAjNzKh9K&quot;&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/onward.gif&quot; alt=&quot;Onward&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;setting-up-boundary-issues&quot;&gt;Setting up Boundary Issues&lt;/h2&gt;

&lt;p&gt;We are in the home stretch. The final part of the stack is &lt;a href=&quot;https://mapzen.com/tag/boundaryissues/&quot;&gt;our bespoke web-based WOF editor&lt;/a&gt;, called &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-boundaryissues/&quot;&gt;Boundary Issues&lt;/a&gt;. It has a similar setup process as the API.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen
git clone https://github.com/whosonfirst/whosonfirst-www-boundaryissues.git
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Like the API, much of the setup has been automated with a Makefile to run a sequence of shell scripts. And as with the API, we will set things up without HTTPS, since we&amp;rsquo;re proxying requests through nginx.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-boundaryissues
make setup-nossl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You will be prompted for your &lt;code&gt;sudo&lt;/code&gt; password, and then for the MySQL root password.&lt;/p&gt;

&lt;p&gt;There is a second set of installation scripts that install everything required for offline tasks. The offline task functionality was designed to be an optional add-on to Boundary Issues, so it gets installed with a separate Makefile target.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;make setup-offline
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Most of the offline task dependencies are pulled in from modular single-purpose Flamework repos that take care of setting up each of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/whosonfirst/flamework-redis&quot;&gt;redis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/whosonfirst/flamework-gearman&quot;&gt;gearman&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/whosonfirst/flamework-logstash&quot;&gt;logstash&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You may notice the process of setting up &lt;code&gt;gearman&lt;/code&gt; has an exceptionally large set of dependencies. This is the unfortunate consequence of &lt;code&gt;apt-get install gearman&lt;/code&gt; not working in Ubuntu 16.04. Instead we install a few low-level dependencies and then build it &lt;a href=&quot;https://github.com/gearman/gearmand/&quot;&gt;from source&lt;/a&gt;. The process is automated by a shell script, so you shouldn&amp;rsquo;t have to type anything extra, but you will notice a whole lot more scrolling by.&lt;/p&gt;

&lt;p&gt;Also, for some reason &lt;code&gt;logstash&lt;/code&gt; doesn&amp;rsquo;t get validated during its installation, so you will need to manually confirm that you&amp;rsquo;re okay with that.&lt;/p&gt;

&lt;p&gt;Once all that finishes, things will be set up similarly to the API:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The API&amp;rsquo;s Apache configuration is symlinked from &lt;code&gt;whosonfirst-www-boundaryissues/config/whosonfirst-www-boundaryissues-apache.conf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The database is called &lt;code&gt;boundaryissues&lt;/code&gt; and is accessed by user &lt;code&gt;boundaryissues&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;All passwords and tokens are stored in &lt;code&gt;www/include/secrets.php&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reading the bottom part of &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-boundaryissues/blob/master/www/.htaccess&quot;&gt;&lt;code&gt;www/.htaccess&lt;/code&gt;&lt;/a&gt; will show you all the URL path routing logic&lt;/li&gt;
&lt;li&gt;There&amp;rsquo;s also an awful lot of configuration tweaks contained in &lt;a href=&quot;https://github.com/whosonfirst/whosonfirst-www-boundaryissues/blob/master/www/include/config.php&quot;&gt;&lt;code&gt;www/include/config.php&lt;/code&gt;&lt;/a&gt; (we&amp;rsquo;ll set some overrides in a &lt;code&gt;config_local.php&lt;/code&gt; down below)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;configuring-apache-(again)&quot;&gt;Configuring Apache (again)&lt;/h2&gt;

&lt;p&gt;Like with the API, we need to adjust a couple configurations to make Boundary Issues run on port 9999.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-boundaryissues
nano config/whosonfirst-www-boundaryissues-apache.conf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Edit the first line to use port 9999:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&amp;lt;VirtualHost *:9999&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Also, add this additional config after the &lt;code&gt;DocumentRoot&lt;/code&gt; part, to get the &lt;code&gt;/boundaryissues&lt;/code&gt; path to work properly:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;Alias /boundaryissues /usr/local/mapzen/whosonfirst-www-boundaryissues/www
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We already took care of &lt;code&gt;/etc/apache2/ports.conf&lt;/code&gt; earlier, so we can just restart Apache and check to make sure we can reach port 9999.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo service apache2 restart
curl -I http://localhost:9999/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;If you see &lt;code&gt;HTTP/1.1 200 OK&lt;/code&gt; then take a moment to celebrate quietly before we move on.&lt;/p&gt;

&lt;h2 id=&quot;indexing-elasticsearch-(again)&quot;&gt;Indexing Elasticsearch (again)&lt;/h2&gt;

&lt;p&gt;One of the quirks about the Who&amp;rsquo;s On First ecosystem is that Boundary Issues and the Spelunker run on separate Elasticsearch indexes. This was intended to reduce the likelihood of accidentally screwing up live data in the Spelunker. We may combine them at some point, but for now it means we have some more schemas and indexing to take care of.&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s start with the schemas, yes plural. Boundary Issues uses three of them! I&amp;rsquo;m assuming we already did all the other Elasticsearch setup from &lt;a href=&quot;https://mapzen.com/blog/wof-in-a-box/&quot;&gt;part one&lt;/a&gt; of the guide.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/es-whosonfirst-schema
cat schema/2.4/mappings.boundaryissues.json | curl -X PUT http://localhost:9200/boundaryissues_20171229 -d @-
curl -X POST http://localhost:9200/_aliases -d &amp;#39;{ &amp;quot;actions&amp;quot;: [ { &amp;quot;add&amp;quot;: { &amp;quot;alias&amp;quot;: &amp;quot;boundaryissues&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;boundaryissues_20171229&amp;quot; } } ] }&amp;#39;
cat schema/2.4/mappings.offline_tasks.json | curl -X PUT http://localhost:9200/offline_tasks_20171229 -d @-
curl -X POST http://localhost:9200/_aliases -d &amp;#39;{ &amp;quot;actions&amp;quot;: [ { &amp;quot;add&amp;quot;: { &amp;quot;alias&amp;quot;: &amp;quot;offline_tasks&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;offline_tasks_20171229&amp;quot; } } ] }&amp;#39;
cat schema/2.4/mappings.audit_trail.json | curl -X PUT http://localhost:9200/audit_trail_20171229 -d @-
curl -X POST http://localhost:9200/_aliases -d &amp;#39;{ &amp;quot;actions&amp;quot;: [ { &amp;quot;add&amp;quot;: { &amp;quot;alias&amp;quot;: &amp;quot;audit_trail&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;audit_trail_20171229&amp;quot; } } ] }&amp;#39;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;That&amp;rsquo;s a whole lot of schemas and aliases. Basically what we did was set up three new indexes, aliased to make future upgrades easier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;boundaryissues&lt;/code&gt; aliased to &lt;code&gt;boundaryissues_20171229&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;offline_tasks&lt;/code&gt; aliased to &lt;code&gt;offline_tasks_20171229&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;audit_trail&lt;/code&gt; aliased to &lt;code&gt;audit_trail_20171229&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now we can start the process of indexing the WOF records into the &lt;code&gt;boundaryissues&lt;/code&gt; index. As with the Spelunker&amp;rsquo;s Elasticsearch index, this will take some time to finish, so you may want to use &lt;code&gt;screen&lt;/code&gt; for it.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/data/whosonfirst-data
wof-es-index -s . --index=boundaryissues -b
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Let that run in the background while we finish up the rest of the Boundary Issues setup.&lt;/p&gt;

&lt;h2 id=&quot;secret-hashes-and-github-oauth-(again-again)&quot;&gt;Secret hashes and GitHub OAuth (again again)&lt;/h2&gt;

&lt;p&gt;Okay, so a lot of what&amp;rsquo;s below may seem familiar after setting up the API. And I know you are eager to start editing WOF records. We are getting there!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.tumblr.com/search/cat%20in%20a%20box%20gif&quot;&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/angrycat.gif&quot; alt=&quot;Angry cat in a box&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unfortunately, because the API and Boundary Issues are separate apps, we need to set up a second GitHub OAuth application to handle redirects properly.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to GitHub&amp;rsquo;s &lt;a href=&quot;https://github.com/settings/developers&quot;&gt;Developer settings&lt;/a&gt; and click the &lt;a href=&quot;https://github.com/settings/applications/new&quot;&gt;New OAuth App&lt;/a&gt; button&lt;/li&gt;
&lt;li&gt;Enter another Application Name (&lt;code&gt;Boundary Issues in a Box&lt;/code&gt; is a good choice)&lt;/li&gt;
&lt;li&gt;For the Homepage URL, enter your server&amp;rsquo;s IP address, for example &lt;code&gt;http://192.168.0.47/boundaryissues&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The Authorization callback URL is similar to the Homepage URL, but with an &lt;code&gt;/auth&lt;/code&gt; path suffix, e.g., &lt;code&gt;http://192.168.0.47/boundaryissues/auth&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Click the Register Application button&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let&amp;rsquo;s open up &lt;code&gt;secrets.php&lt;/code&gt; and insert those GitHub OAuth credentials.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;github_oauth_key&amp;#39;] = &amp;#39;(your client ID)&amp;#39;;
$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;github_oauth_secret&amp;#39;] = &amp;#39;(your client secret)&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next we&amp;rsquo;ll generate three new secret hashes, for the crypto hash configs:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-boundaryissues
php bin/generate_secret.php
php bin/generate_secret.php
php bin/generate_secret.php
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Those hashes get copied into &lt;code&gt;secrets.php&lt;/code&gt; like this (your hashes will be different):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;crypto_cookie_secret&amp;#39;] = &amp;#39;9NBEy7d484AN3muSObRPsicoQIpjrhxQ&amp;#39;;
$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;crypto_password_secret&amp;#39;] = &amp;#39;HRoQz6jcuCB6lHhSmOhlWmfH3X7Nw9xa&amp;#39;;
$GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;crypto_crumb_secret&amp;#39;] = &amp;#39;AxM2yCFsTwY9lVgyDUpJphrv4Qxf3gwI&amp;#39;;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;the-pending-folder&quot;&gt;The pending folder&lt;/h2&gt;

&lt;p&gt;To accommodate the process of saving WOF records, we need to set up a www-writeable directory for incoming edits. It works kind of similarly to a Git index, with subfolders to keep the present edited state and a snapshot record of each edit.&lt;/p&gt;

&lt;p&gt;The convention is to put the pending folder into the same structure as the other data repos.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo mkdir /usr/local/data/whosonfirst-pending
sudo chown www-data:www-data /usr/local/data/whosonfirst-pending
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;hellip; and then symlink &lt;em&gt;that&lt;/em&gt; into the Boundary Issues folder.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo ln -s /usr/local/data/whosonfirst-pending /usr/local/mapzen/whosonfirst-www-boundaryissues/pending
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2 id=&quot;let&amp;#39;s-test-things-out&quot;&gt;Let&amp;rsquo;s test things out&lt;/h2&gt;

&lt;p&gt;Now that we&amp;rsquo;ve set a whole bunch of Boundary Issues stuff&amp;hellip; let&amp;rsquo;s maybe try it?&lt;/p&gt;

&lt;p&gt;Go to &lt;code&gt;http://192.168.0.47/boundaryissues/&lt;/code&gt; in a browser (again, with your IP subbed in), and see if it loads up. You should see something similar, but not quite the same as, the API&amp;rsquo;s homepage.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/bi-home.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;Click on the same &lt;strong&gt;You&lt;/strong&gt; menu and then &lt;strong&gt;Sign in with GitHub&lt;/strong&gt;. You should see a similar OAuth confirmation page on GitHub, and then redirect back to the Boundary Issues homepage.&lt;/p&gt;

&lt;p&gt;Once you get redirected back, you will have to accept some terms before you can continue.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/terms.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;Let&amp;rsquo;s search for a record, for example &lt;a href=&quot;https://whosonfirst.mapzen.com/spelunker/id/421205765/&quot;&gt;Brooklyn&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/search.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;You want to click on the one that&amp;rsquo;s a &lt;a href=&quot;https://whosonfirst.mapzen.com/docs/placetypes/#borough&quot;&gt;Borough placetype&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/edit-bk.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;Okay now we are getting somewhere, although&amp;hellip;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/unauthorized.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;&amp;hellip; by default, new users don&amp;rsquo;t have permissions to edit records.&lt;/p&gt;

&lt;h2 id=&quot;add-a-user-role&quot;&gt;Add a user role&lt;/h2&gt;

&lt;p&gt;One last setup task: we just need to add the role &lt;code&gt;admin&lt;/code&gt; to your user account and you should be all set.&lt;/p&gt;

&lt;p&gt;Here&amp;rsquo;s how that works (again, swap in the email address you used to sign up for your GitHub account):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-boundaryissues
php bin/add_user_role.php your.email@example.com admin
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You should be prompted with a confirmation (press &lt;code&gt;Y&lt;/code&gt; or just press enter).&lt;/p&gt;

&lt;p&gt;There is actually &lt;em&gt;another configuration&lt;/em&gt; we should set, inside a new &lt;code&gt;config_local.php&lt;/code&gt; file.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-boundaryissues/www/include
nano config_local.php
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will make Boundary Issues update the Spelunker&amp;rsquo;s Elasticsearch index, upon saving.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;&amp;lt;?php

    $GLOBALS[&amp;#39;cfg&amp;#39;][&amp;#39;enable_feature_index_spelunker&amp;#39;] = 1;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And &lt;em&gt;one more thing&lt;/em&gt; (I know, this is complicated), we need to make sure we have the offline tasks running, since they take care of saving stuff after you hit the &lt;strong&gt;Save&lt;/strong&gt; button.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo /etc/init.d/gearmand start
sudo supervisorctl start all
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Okay, now we should really be ready.&lt;/p&gt;

&lt;h2 id=&quot;edit-a-wof-record&quot;&gt;Edit a WOF record&lt;/h2&gt;

&lt;p&gt;Go back to the &lt;strong&gt;Edit Brooklyn&lt;/strong&gt; page in Boundary Issues and reload it. You should be able to edit things now, yay!&lt;/p&gt;

&lt;p&gt;Scroll down to the &lt;strong&gt;name&lt;/strong&gt; section, and expand it open. Add the colonial name &amp;ldquo;Breuckelen&amp;rdquo; to the list of variant names (technically this should be under the Dutch language, not English, but one thing at a time).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/breuckelen.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;Notice how the interface added a blue indicator next to the field? That helps you keep track of which things you&amp;rsquo;ve edited.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/save.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;When you hit the save button, if all goes well, it should replace the list of changed properties with &lt;strong&gt;Saved&lt;/strong&gt;. If it gets stuck on &lt;strong&gt;Saving&amp;hellip;&lt;/strong&gt; you may want to try again and keep an eye on the JavaScript console looking for error messages.&lt;/p&gt;

&lt;p&gt;Finally, let&amp;rsquo;s try searching for updated name using the Spelunker.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/spelunker-updated.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;Hooray, you made an edit and it showed up in the Spelunker. There is more to all of this that I won&amp;rsquo;t go into in this blog post. Right now all the changes you make end up in &lt;code&gt;/usr/local/data/whosonfirst-pending&lt;/code&gt;, without modifying the actual WOF Git repos. If we wanted to actually upstream the changes to GitHub, we would need to set up a new user on the server (we tend to go with &lt;code&gt;botsonfirst&lt;/code&gt;) with credentials to push up to GitHub. And that user would execute the script &lt;code&gt;bin/save_pending.php&lt;/code&gt; on a cron job.&lt;/p&gt;

&lt;p&gt;There is also the whole subject of pipeline tasks vs. offline tasks, but maybe you can ask me about that over a beer some day.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://i68.tinypic.com/2j3qvm1.gif&quot;&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/maru.gif&quot; alt=&quot;Maru&quot;&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;bundler-config&quot;&gt;Bundler config&lt;/h2&gt;

&lt;p&gt;Okay one final set of config changes before we call it a day. The Spelunker has a very handy tool called the &lt;a href=&quot;https://mapzen.com/blog/bundler/&quot;&gt;Bundler&lt;/a&gt; and we should get it working with our new &lt;em&gt;WOF in a Box&lt;/em&gt; stack.&lt;/p&gt;

&lt;p&gt;SSH into the NUC server and edit the flask config.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-spelunker/config/
nano whosonfirst-www-spelunker-flask.cfg
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We&amp;rsquo;ll make two edits here, the first enables the bundler feature:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;enable_feature_bundler=1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The second will swap where the Spelunker looks for its WOF records from (once again, with your own IP swapped in):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;data_root=https://192.168.0.47/data
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;There are a couple more edits to another config file: &lt;code&gt;mapzen.whosonfirst.config.js&lt;/code&gt;&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;cd /usr/local/mapzen/whosonfirst-www-spelunker/www/static/javascript/
nano mapzen.whosonfirst.config.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We are going to scroll down to the bottom and edit this part:&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;if (mapzen.whosonfirst.api) {
        mapzen.whosonfirst.api.set_endpoint(&amp;#39;https://&amp;#39; + api_host + api_path);
        mapzen.whosonfirst.api.set_key(api_key);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Change it so that it looks like this (remember the access token we generated for the API?):&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;if (mapzen.whosonfirst.api) {
        mapzen.whosonfirst.api.set_endpoint(&amp;#39;http://192.168.0.47/api/rest/&amp;#39;);
        mapzen.whosonfirst.api.set_token(&amp;#39;87ffbaee33443e4b9b385606d6b9af28&amp;#39;);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Note that we changed the &lt;code&gt;set_key&lt;/code&gt; function call to &lt;code&gt;set_token&lt;/code&gt;. This is an important difference.&lt;/p&gt;

&lt;p&gt;Okay, now we can try it all out!&lt;/p&gt;

&lt;p&gt;First, restart the Spelunker for the config changes to take effect.&lt;/p&gt;
&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;sudo /etc/init.d/whosonfirst-www-spelunker.sh restart
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Next, load up the Spelunker page for Brooklyn (or Breuckelen). The URL should be something like &lt;code&gt;http://192.168.0.47/spelunker/id/421205765/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now, scroll down until you get to the &amp;ldquo;Other&amp;rdquo; links, below the Hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/other-links.jpg&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;p&gt;You should see a new link for &lt;strong&gt;Download descendants of Brooklyn&lt;/strong&gt;. Click on that.&lt;/p&gt;

&lt;p&gt;If everything is working, you should now be able to bundle and download all the descendants records of Brooklyn, using the NUC&amp;rsquo;s API and data. Let&amp;rsquo;s try getting all the Brooklyn neighbourhoods.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/bundler.gif&quot; alt=&quot;screenshot&quot;&gt;&lt;/p&gt;

&lt;h2 id=&quot;that&amp;#39;s-all,-folks&quot;&gt;That&amp;rsquo;s all, folks&lt;/h2&gt;

&lt;p&gt;That was a whole lotta WOF in a Box, thanks for reading this far!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://giphy.com/gifs/vtT53Z1YmKCxW&quot;&gt;&lt;img src=&quot;/assets/images/wof-in-a-box-part2/toomuch.gif&quot; alt=&quot;Too much WOF in the Box&quot;&gt;&lt;/a&gt;&lt;/p&gt;
</description>
  <pubDate>Fri, 29 Dec 2017 00:00:00 +0000</pubDate>
  <link>https://mapzen.com/blog/wof-in-a-box-part2</link>
  <guid isPermaLink="true">https://mapzen.com/blog/wof-in-a-box-part2</guid>
</item>
		
	</channel>
</rss>