Building a future-proof database of neighborhoods
"Dorf the Giraffe" by Tamara Schneider (2024).

Building a future-proof database of neighborhoods

In this week's article, I attempt to answer a recurring question: "Where am I?"

Plus: An outline of how to combine geospatial data, AI-generated insights, and user-defined content into a personalized map.

“What neighborhood are we in?”

When I posed that question to several people at Seattle Convention Center, the most common response was a look of befuddlement, even among locals considering the possible answers of Downtown, Capitol Hill, First Hill, and Denny Triangle.

My answer: “Welcome to Convention City!”

But one area hotelier came back with an unexpected response: “This is Pike/Pine.”

Wait, is Pike/Pine a neighborhood? It does have definition, distinctive zoning, and official sanction through initiatives such as the Pike Pine Streetscape and Bicycle Improvement project. It's a very skinny, rectangular parcel going from Waterfront Park on one end to the Starbucks Roastery on Melrose Ave. on the uphill side.

That’s not a neighborhood. That's a corridor.

In a giraffe-shaped neighborhood.

My intuition was backed up by the math behind Delaunay triangulations and Voronoi diagrams.

If you draw a bunch of points on a map and then connect the points to form the most equilateral triangles possible, you end up with a Delaunay triangulation.

Or, if you draw lines that are equidistant to the nearest points, you end up with a Voronoi diagram. You’ll see this cell pattern on giraffes, plant cells, bubbles in a glass, or any number of other natural phenomena (video).

I created a Voronoi diagram overlay on a map of Seattle. (You can make your own using this Voronoi diagram generator with the "Display image with URL" option pointing to this map or any other image.

In the diagram, I added points for Pike Place Market, Amazon Spheres, MOHAI, Seattle Convention Center Summit and Arch, Seattle Center, Seattle U., Pioneer Square, Yesler Terrace, and Lumen Field (plus a few points in Elliott Bay to define the Waterfront).

Seattle map with Voronoi diagram overlay

The resulting pattern shows approximations of the existing neighborhood boundaries for South Lake Union, Belltown, Central Business District, Pioneer Square, First Hill, Yesler Terrace, and International District.

You’ll notice that there’s no "Pike/Pine” cell.

In the center of the map, we see two unlabeled cells. Hey, that’s Convention City!

Convention City in the unlabeled cells

Interstate I-5 slices Convention City down the middle. That's why I have high hopes for the Lid I-5 movement. Lidding the highway would be a powerful catalyst for an expanding Convention City neighborhood, creating opportunities for economic and social development throughout the region. There are several lid parcels that could be dedicated to housing, parks, schools, or entertainment – any of which would be far better than a downtown highway.

You don't see too many giraffes on LinkedIn. I wonder why.

Building a future-proof neighborhood database

Let’s say that I’m building a Convention City tourism app to recommend journeys to visitors, and I want to assign each Destination to a Neighborhood.

Here are seven mix-and-match approaches.

1. One-to-many relationship

A straightforward approach is to create a lookup table called Neighborhoods with two columns: Name and Description. Each Destination would include the name of a Neighborhood, in a many-to-one relationship.

2. Many-to-many relationship

But what happens if a destination is in a neighborhood with two names (e.g. Uptown / Lower Queen Anne), or on the border between two neighborhoods, or in a neighborhood that doesn’t (yet) appear on any maps? Or what if it’s a large neighborhood like Capitol Hill with sub-neighborhoods such as Broadway, Stevens, and North Capitol Hill?

That suggests the need for a many-to-many relationship between Neighborhoods and Destinations. Except it seems like overkill to build a system that allows any destination to be part of any neighborhood. Other than Starbucks, that's not how destinations work.

3. Hierarchical relationships

We might consider creating a Subneighborhood table, but then we’d have to build some kind of kludge to handle neighborhoods without sub-neighborhoods.

A single hierarchical table might do the trick. A hierarchical table has one column that points to the parent, and another column that contains the name of the current item. This approach allows any number of neighborhoods within neighborhoods, using a single table.

But then you get to the problem of those hard-to-classify sub-neighborhoods that blend characteristics of two adjacent neighborhoods without belonging to either one. When that happens, you end up with duplicated nodes.

4. Text column in Destination table

We could skip the Neighborhoods table entirely by adding a searchable text column to the Destination table containing all the possible ways that someone could refer to the surrounding neighborhood. A script could then collect all the Neighborhoods across all Destinations and use that output to populate the user interface and search function.

While this is a flexible and pragmatic approach, it would be difficult to maintain consistency.

5. Add location coordinates

Or how about this: Add latitude and longitude to the Destinations table to enable precise geospatial relationships.

Then, put in a yes/no column for “Neighborhood Center” and mark each major landmark (as I did above with the Seattle map).

Using that data, we would programmatically generate Voronoi diagrams on the map. Each Destination would be positioned in terms of its proximity to the closest Neighborhood Center.

6. AI-Generated Neighborhood Descriptions

Here's a fun trick:

First, curate an indexed content library of information about neighborhood landmarks.

Then, configure an AI summarizer to generate localized descriptions based on where someone's going.

If someone's traveling between neighborhoods, they'll see the larger neighborhood name. If they're walking around within a neighborhood, they'll get the sub-neighborhoods too.

7. User-Defined Neighborhoods

Building on the last two, we can get personalized. Each user can define what they consider to be primary Destinations as points on a Voronoi diagram, with secondary Destinations organized around the main point.

You’d have your own map based entirely upon what you consider to be important, whether it’s coffee shops, cat cafés, or fancy hotel bars. And isn't that how we perceive the world?

How would you build a future-proof neighborhood database? Let me know!

The 16:9 widescreen aspect ratio does not favor the giraffe.


要查看或添加评论,请登录

社区洞察