sql >> Databasteknik >  >> RDS >> Sqlserver

Hur får man de avgränsande koordinaterna för ett amerikanskt postnummer?

En fördjupning av min kommentar, att postnummer inte är polygoner...

Vi tänker ofta på postnummer som områden (polygoner) eftersom vi säger:"Åh, jag bor i detta postnummer..." vilket ger intrycket av en innehållande region, och kanske det faktum att ZIP står för "Zone Improvement Plan" hjälper den falska associationen med polygoner.

I verkligheten är postnummer linjer som representerar, på sätt och vis, postbärarrutter. Geometriskt har linjer ingen area. Precis som linjer är strängar av punkter längs ett koordinatplan, är postnummer linjer strängar av leveranspunkter i det abstrakta utrymmet av USPS-utsedda adresser.

De är inte korrelerade till geografiska koordinater. Vad du kommer att finna är dock att de visas att vara geografiskt orienterad eftersom det skulle vara ineffektivt för transportörer att ha en rutt helt irrelevant av avstånd och plats.

Vad är det här "abstrakta utrymmet med USPS-designade adresser"? Det är så jag beskriver den stora och mystiska databasen med leveransplatser som underhålls av US Postal Service. Adresser tilldelas inte baserat på geografi, utan på de rutter som transportörerna reser, vilket vanligtvis relaterar till gator och resbarhet.

Vissa 5-siffriga postnummer är bara en enskild byggnad, eller ett komplex av byggnader, eller till och med en enda våning i en byggnad (ja, flera postnummer kan vara på en enda koordinat eftersom deras utlämningsställen ligger vertikalt i lager). Några av dessa -- bland annat -- är "unika" zip-poster. Företag och universitet får ofta sina egna postnummer för marknadsföring eller organisatoriska syften. Till exempel, postnumret "12345" tillhör General Electric uppe i Schenectady, NY. (Redigering:I en tidigare version av Google Maps, när du följer den länken, skulle du märka att placeringsmarkören svävade, eftersom den pekar på ett postnummer, som inte är en koordinat. Medan de flesta amerikanska postnummer brukade visa en region på Google Maps, kan dessa typer inte eftersom USPS inte "äger" dem, så att säga, och de har inget område.)

Bara för skojs skull, låt oss försöka verifiera en adress i ett unikt postnummer. Gå över till SmartyStreets och slå in en falsk adress i 12345, som:

Gata: 999 Sdf sdf

Postnummer: 12345

När du försöker verifiera det, lägg märke till att... det är GILTIGT! Varför? USPS kommer att leverera en bit till behållaren för det unika postnumret, men vid den tidpunkten är det upp till GE att distribuera det. I stort sett allt internt i postnumret är irrelevant för USPS, inklusive gatuadressen (tekniskt sett "leveransrad 1"). Många universitet fungerar på liknande sätt. Här är mer information om det.

Prova nu samma falska adress, men utan postnummer, och gör istället staden/staten:

Gata: 999 Sdf sdf

Stad: Schenectady

Stat: NY

Det validerar inte. Detta beror på att även om Schenectady innehåller 12345, där adressen är "giltig", skär den geometriskt de "riktiga" postnumren för Schenectady.

Ta ett annat exempel:militär. Vissa örlogsfartyg har sina egna postnummer. Militära adresser är en helt annan klass av adresser som använder samma namnområde . Fartyg rör sig. Det gör inte geografiska koordinater.

ZIP precision är en annan rolig sådan. 5-siffriga postnummer är de minst "exakta" (även om termen "specifik" kan vara mer meningsfull här, eftersom postnummer inte pekar ut någonting). 7- och 9-siffriga postnummer är de mest specifika, ofta ner till block- eller kvartersnivå i stadsområden. Men eftersom varje postnummer har olika storlek är det riktigt svårt för att tala om vilka faktiska avstånd du pratar om.

Ett 9-siffrigt postnummer kan delas upp på en våning i en byggnad, så där har du överlappande postnummer för potentiellt hundratals adresser.

Kontroll:Postnummer tillhandahåller inte, i motsats till vad många tror, ​​geografiska eller gränsdata. De varierar stort och är faktiskt ganska ohjälpsamma om du inte levererar post eller paket... men USPS:s uppgift var att utforma effektiva transportrutter, inte dela upp befolkningen i koordinerade regioner så mycket.

Det är mer folkräkningsbyråns uppgift. De har sammanställt en lista över kartografiska gränser eftersom postnummer är "bekväma" att arbeta med. För att göra detta delade de upp massa adresser i folkräkningsblock. Sedan aggregerade de USPS postnummerdata för att hitta relationen mellan deras folkräkningsblock (som har några grova koordinatdata) och postnumren. Vi har alltså approximationer av hur det skulle se ut att plotta en linje som en polygon. (Tydligen konverterade de en 1D-linje till en 2D-polygon genom att transformera en 2D-polygon baserat på dess innehåll för att passa linjära data -- för varje icke-unik, vanligt postnummer.)

Från deras hemsida (länk ovan):

Ett postnummertabellområde (ZCTA) är en statistisk geografisk enhet som approximerar leveransområdet för ett femsiffrigt eller tresiffrigt postnummer i USA. ZCTA är aggregering av folkräkningsblock som har samma dominerande postnummer som är associerat med adresserna i U.S. Census Bureau's Master Address File (MAF). Tresiffriga ZCTA-koder tillämpas på stora sammanhängande områden för vilka U.S. Census Bureau inte har femsiffrig ZIP Kodinformation i dess MAF. ZCTA:er visar inte exakt postnummerleveransområden och inkluderar inte alla postnummer som används för postleverans. U.S. CensusBureau har etablerat ZCTAs som en ny geografisk enhet som liknar, men ersätter, datatabeller för postnummer som genomförts i samband med 1990 och tidigare folkräkningar.

USCB:s datauppsättning är ofullständig och ibland felaktig. Google har fortfarande hål i sin data också (12345 är ett ganska bra exempel) - men Google kommer att korrigera det så småningom genom att gå igenom varje adress och postnummer för hand. De gör detta redan, men har inte gjort all sin kartdata perfekt ännu. Naturligtvis är tillgången till denna data begränsad till API-termer, och det är mycket dyrt att ta fram dessa.

Puh. Jag är slagen. Jag hoppas att det hjälper till att klargöra saker och ting. Ansvarsfriskrivning:Jag brukade vara utvecklare på SmartyStreets. Mer information om geokodning med adressdata.

Ännu mer information om postnummer.



  1. Undantag:Det finns redan en öppen DataReader kopplad till denna anslutning som måste stängas först

  2. Prestanda överraskningar och antaganden:DATEDIFF

  3. Hur kör man ett MySQL-kommando från ett skalskript?

  4. Prestanda för COUNT SQL-funktion