(Who will be) America's Next Big Mapping Company?

When talking to government audiences, I like to point out that the largest national mapping agency in the world resides in a building decorated like a hypertrophic kindergarten, in Mountain View, California. This generally gets their attention.

The second most important year in my career in geospatial was 20051, the year that Google Maps debuted, and began the migration of “maps on computers” from a niche market dominated by government customers to the central pivot of multiple consumer-facing applications.

The echoes of 2005 lasted for several years.

  • Microsoft quickly realized it was dramatically behind in the space, “MapPoint” being its only spatial product, and went on an acquisition and R&D spree.
  • Esri started moving much more quickly into web technology, slavishly aping Google product direction (spinny globes?! yes! JSON on the wire!? yes! tiled basemaps?!? oh yes!) in what must have been an embarassing turn for the “industry leader” in GIS.
  • Navteq and Teleatlas transitioned quickly from industry darlings (selling data to Google!) to providers of last resort, as more nimble data gatherers took up the previously-unimagineable challenge of mapping the whole world from scratch.
  • Open source did its usual fast-follower thing, churning out a large number of Javascript-and-map-tiles web components, and pivoting existing rendering engines into tile generators.

A funny thing happened in the shake out, though. Nobody ever caught up to Google. Or even came very close. While Google has abandoned Maps Engine–their foray into “real GIS”–their commitment to core location data, knowing where everything is and what everything is, all the time and in real time, remains solid and far in advance of all competitors.

Probably even before they rolled out the iPhone in 2007 Apple knew they had a “maps problem”. Once they added a GPS chip (a development that was only awaiting a little more battery oomph) they would be beholden to Google for all the directions and maps that made the chip actually useful to phone users.

And so we eventually got the Apple maps debacle of 2012. It turns out, building a global basemap that is accurate and includes all the relevant details that users have come to expect is really really really hard.

In an excellent article on the differences between Google and Apple’s maps, Justin O’Beirne posited:


Even the most well-funded and motivated competitors cannot keep up. Microsoft came the closest early on with Bing Maps, but seems to have taken their foot off the gas, in acknowledgement of the fact that they cannot achieve parity, let alone get ahead.

And so what? So what if Google has established Google Maps as a source of location data so good and so unassailable that it’s not worth competing?

Well, it sets up an interesting future dynamic, because the competitive advantage those maps provide is too large to leave unchallenged.

  • Apple cannot afford to have their location based devices beholden to Google–a direct competitor now via Android–so they have continued to invest heavily in maps. They’ve been a lot quieter about it after the debacle, but they haven’t given up.
  • Amazon AWS is the unchallenged leader in cloud computing, but Google wants a bigger piece of the cloud computing pie, and they are using Google Maps as a wedge to pull customers into the Google Cloud ecosystem. I have heard of multiple customers who have been wooed via combined Maps + Cloud deals that offer discounted Cloud pricing on top of Maps contracts. Why not put it all in one data centre?
  • Salesforce has just purchased Tableau, pulling one of the largest BI companies into the largest enterprise cloud company. Analytics has a lower need for precise location data, but Salesforce customers will include folks who do logistics and other spatial problems requiring accurate real-time data.

Someone is going to take another run at Google, they have to. My prediction is that it will be AWS, either through acquisition (Esri? Mapbox?) or just building from scratch. There is no doubt Amazon already has some spatial smarts, since they have to solve huge logistical problems in moving goods around for the retail side, problems that require spatial quality data to solve. And there is no doubt that they do not want to let Google continue to leverage Maps against them in Cloud sales. They need a “good enough” response to help keep AWS customers on the reservation.

How will we know it’s happening? It might be hard to tell from outside the Silicon Valley bubble. Most of the prominent contributors to the New Mapping Hegemony live behind the NDA walls of organizations like Google and Apple, but they are the kinds of folks Amazon will look to poach, in addition to members of Microsoft’s Bing team (more conveniently already HQ’ed in Seattle).

I think we’re due for another mapping space race, and I’m looking forward to watching it take shape.

1. The most important event of my geospatial career was the release of the iPhone 3GS with a GPS chip as a standard component.

Parallel PostGIS and PgSQL 12 (2)





How Many Workers?



Forcing Workers



ALTER TABLE pd SET ( parallel_workers = 8);




SET max_worker_processes = 16;
SET max_parallel_workers = 16;
SET max_parallel_workers_per_gather = 16;


  • pd a table of 69,534 polygons
  • pts_10 a table of 695,340 points

Scan Performance


  SELECT Sum(ST_Area(geom)) 
    FROM pd;


Workers 1 2 4 8 16
Time (ms) 318 167 105 62 47


Join Performance


  FROM pd 
  JOIN pts_10 pts
  ON ST_Intersects(pd.geom, pts.geom);


Workers 1 2 4 8 16
Time (ms) 26789 - 9371 5169 4043




Parallel PostGIS and PgSQL 12


Parallel PostGIS and PgSQL 12

Initially, the results were pretty bad.



  • Parallel sequence scans,
  • Parallel aggregates, and
  • Parallel joins!!



What Changed




In order to run these tests yourself, you will need:

  • PostgreSQL 12
  • PostGIS 3.0



  • pd a table of ~70K polygons
  • pts a table of ~70K points
  • pts_10 a table of ~700K points
  • pts_100 a table of ~7M points






show max_worker_processes;
show max_parallel_workers;
show max_parallel_workers_per_gather;



SET max_parallel_workers = 8;
SET max_parallel_workers_per_gather = 4;

  SELECT Sum(ST_Area(geom)) 
    FROM pd;




SET max_parallel_workers = 8;
SET max_parallel_workers_per_gather = 4;

  SELECT ST_Area(geom)
    FROM pd; 


   Workers Planned: 3
   ->  Parallel Seq Scan on pd  



SET max_parallel_workers_per_gather = 4;

  FROM pd 
  JOIN pts_100 pts
  ON ST_Intersects(pd.geom, pts.geom);

PDs & Points


   Workers Planned: 4
   ->  Nested Loop  
         ->  Parallel Seq Scan on pts_100 pts  
         ->  Index Scan using pd_geom_idx on pd  
               Index Cond: (geom && pts.geom)
               Filter: st_intersects(geom, pts.geom)



  FROM pd 
  JOIN pts_10 pts
  ON ST_Intersects(pd.geom, pts.geom);


   Workers Planned: 3
   ->  Nested Loop  
         ->  Parallel Seq Scan on pd  
         ->  Index Scan using pts_10_gix on pts_10 pts  
               Index Cond: (geom && pd.geom)
               Filter: st_intersects(pd.geom, geom)


  • !!!!!!!!!!!

Keynote @ FOSS4G NA 2019


In 2009, the central pivot of thought about open source in the economy was professional open source firms in the Red Hat model. Since then we’ve taken a ride through a VC-backed “open core” bubble and are now grappling with an environment where the major cloud platforms are absorbing most of the value of open source while contributing back proportionally quite little.



GeoJSON Features from PostGIS





Start with a simple table.

CREATE TABLE mytable (
  name TEXT,

INSERT INTO mytable (name, size, geom) VALUES


SELECT to_jsonb(mytable.*) FROM mytable;



CREATE OR REPLACE FUNCTION rowjsonb_to_geojson(
  rowjsonb JSONB, 
  geom_column TEXT DEFAULT 'geom')
 json_props jsonb;
 json_geom jsonb;
 json_type jsonb;
 IF NOT rowjsonb ? geom_column THEN
 json_geom := jsonb_build_object('geometry', json_geom);




