Determinar quais CEPs dos EUA mapeiam para mais de um estado ou mais de uma cidade?

Estou usando uma listagem de CEP e estou curioso para saber quantos (ou quais) CEPs mapeiam para mais de um estado dos EUA ou dos EUA cidade?

Por exemplo, eu sei que o código postal 42223 se refere ao exército dos EUA, Fort Campbell, que se estende até a divisa do estado KY-TN. Estranhamente, apenas a API do Google retorna TN para o estado correspondente a esse zip.

Comentários

  • Como você está definindo ” cidade ” e ” código postal “?

Resposta

Existem 13 áreas de tabulação de código postal (ZCTAs) do Censo dos EUA de vários estados: 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.

Como outros mencionaram, há são algumas maneiras diferentes de descobrir a área coberta por um CEP, mas os ZCTAs são os mais fáceis e o apenas a versão oficial que eu conheço.

Portanto, o seu exemplo de 42223 abrange uma fronteira de estado, mas parece que na verdade fica entre Maryland e Virgínia. entre Kentucky e Tennessee.

Aqui está a lista completa com estados:

 02861 Massachusetts 02861 Rhode Island 42223 Kentucky 42223 Tennessee 59221 Montana 59221 North Dakota 63673 Illinois 63673 Missouri 71749 Arkansas 71749 Louisiana 73949 Oklahoma 73949 Texas 81137 Colorado 81137 New Mexico 84536 Arizona 84536 Utah 86044 Arizona 86044 Utah 86515 Arizona 86515 New Mexico 88063 New Mexico 88063 Texas 89439 California 89439 Nevada 97635 California 97635 Oregon 

Veja como eu gerei (com Pandas em Python):

import pandas as pd zcta_to_place_url = "http://www2.census.gov/geo/docs/maps-data/data/rel/zcta_place_rel_10.txt" # load relevant data df = pd.read_csv( zcta_to_place_url, dtype={"ZCTA5": str}, usecols=["ZCTA5", "STATE"]) # the data often repeats the same (ZCTA, state) pair. Remove these df = df.drop_duplicates() # get number of times each ZCTA appears (most are only 1) counts = df["ZCTA5"].value_counts() # get those listed more than once multi_state_zips = df[df.ZCTA5.isin(counts[counts > 1].index)] # the census uses numeric state codes # replace these with state names census_codes_to_names_url = "http://www2.census.gov/geo/docs/reference/state.txt" states = pd.read_csv(census_codes_to_names_url, sep="|") merged = pd.merge( multi_state_zips, states, on="STATE" )[["ZCTA5", "STATE_NAME"]] print merged.sort(["ZCTA5", "STATE_NAME"]).to_string(index=False) 

Editar : parece que o Censo tem duas codificações diferentes de dois dígitos para os estados. Ambos são números atribuídos com base na ordem alfabética do estado, mas um parece aplicar os números diretamente de 1-51 (50 estados + DC), enquanto o outro pula alguns números . Eu estava usando o primeiro, enquanto deveria usar o segundo, então os nomes de estado que listei estavam errados. Eu atualizei o código e resultados com a lista correta.

Editar : novo mapeamento de estado confirmado pela API OpenCongress: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad

Comentários

  • Muito obrigado por pegar este @JesseCrocker – Parece que o Censo (confuso) tem duas codificações diferentes de dois dígitos para estados. Ambos são números atribuídos com base na ‘ ordem alfabética do estado, mas parece que se aplica os números diretamente de 1-51 (50 estados + DC), enquanto o outro pula alguns números . Eu estava usando o primeiro, mas deveria usar o segundo, então os nomes de estado que listei estavam errados (embora os ZCTAs fossem bons). Eu ‘ fixei o código e os resultados com a lista correta.
  • Com relação às lacunas nos códigos FIPS, os números ignorados foram reservados na década de 1970 para territórios periféricos (Samoa Americana, Zona do Canal, Guam, Porto Rico e Ilhas Virgens), mas não ‘ acabaram sendo usados para eles. en.wikipedia.org/wiki/…
  • Não ‘ não se esqueça do código postal 57717, que abrange três estados, seis condados e várias cidades: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
  • Esta listagem não está ‘ quase completa. Confira minha resposta para uma aproximação muito melhor. gis.stackexchange.com/a/223445/6052
  • Isso ‘ é estranho. O Google Maps mostra 02861 literalmente fazendo parte da fronteira entre MA e RI, e todo o código postal firmemente em RI google.com/ maps / place / Pawtucket, + RI + 02861 / …

Resposta

Realmente não há uma maneira de dizer isso; já que não há um formato de limite ZipCode que seja definido pelo USPS. ZipCodes são definidos por uma caixa delimitadora de Streets entregues para transportadoras de um centro de distribuição específico.

Então você precisaria pegar os dados AIS do USPS e extrair por ZipCodes as ruas que são entregues por uma determinada agência dos correios e, em seguida, Junte-se a elas em uma grade de ruas. todos os fornecedores comerciais fazem (Nokia / TomTom) para criar a forma Psuedo que eles usam para mostrar as fronteiras postais.

Esse processo inexato é a razão pela qual o USPS não fornece dados espaciais.

Comentários

Resposta

O US Census Bureau deriva limites aproximados para CEPs com base nos endereços contidos neles, chamados de ZIP Code Tabulation Areas (ZCTAs).

Eles publicam arquivos de relacionamento que descrevem como seus ZCTAs mapeiam para várias outras geografias. Se você examinar o arquivo de relacionamento ZCTA para local , poderá ver como eles mapeiam para cidades e vilas. Você pode inferir como eles mapeiam para estados a partir do arquivo de relacionamento ZCTA para condados .

Os arquivos de relacionamento usam IDs de geografia do Censo, então você ” Vou querer obter um arquivo dicionário geográfico para ajudá-lo a converter os IDs numéricos nos nomes de lugares ou condados que você está esperando.

Como outros as respostas declararam, qualquer mapeamento de CEPs para lugares provavelmente será aproximado, mas tive boa sorte com os arquivos de dados do Censo.

Resposta

Dados TIGER 2016 com PostGIS

Como uma advertência especial, os dados ZCTA não são códigos postais do USPS. É uma aproximação disso. Os códigos postais do USPS são realmente horríveis e não úteis, exceto para aproximar. Todos, incluindo todas as entidades governamentais que não o USPS, e (o Censo para fazer ZCTA) os ignora completamente. Se o USPS quisesse crescer um pouco, eles apenas seriam convertidos para o ZCTA mais recente e forneceriam polígonos GIS confiáveis.

Então … Aqui, consultamos as interseções entre Estado TIGER e conjuntos de dados TIGER ZCTA. Observe que qualificamos os estados em 1% da área total da ZCTA. Se 1% da área da ZCTA não estiver no estado, presumimos que é um erro de arredondamento, ou alguém gordo dedilhando algo no Censo. Verifique 56168 ou mesmo 83832 para um código postal que estamos podando com essa seletividade adicionada.

SELECT zcta5ce10, array_agg(state.name ORDER BY state.name) AS states FROM census.state AS state JOIN census.zcta AS zcta ON ( ST_Intersects(state.geog::geometry, zcta.geog::geometry) AND NOT ST_Touches(state.geog::geometry, zcta.geog::geometry) AND ST_Area(ST_Intersection(state.geog, zcta.geog)) > (ST_Area(zcta.geog)*0.01) ) GROUP BY zcta.zcta5ce10 HAVING count(*) > 1 ORDER BY zcta5ce10; 

Aqui está o resultado

 zcta5ce10 | states -----------+--------------------------------- 03579 | {Maine,"New Hampshire"} 20135 | {Virginia,"West Virginia"} 24604 | {Virginia,"West Virginia"} 31905 | {Alabama,Georgia} 38079 | {Kentucky,Tennessee} 38769 | {Arkansas,Mississippi} 38852 | {Alabama,Mississippi} 42223 | {Kentucky,Tennessee} 51001 | {Iowa,"South Dakota"} 51023 | {Iowa,"South Dakota"} 51360 | {Iowa,Minnesota} 51557 | {Iowa,Nebraska} 51640 | {Iowa,Missouri} 52542 | {Iowa,Missouri} 52573 | {Iowa,Missouri} 52626 | {Iowa,Missouri} 54554 | {Michigan,Wisconsin} 56027 | {Iowa,Minnesota} 56144 | {Minnesota,"South Dakota"} 56164 | {Minnesota,"South Dakota"} 56219 | {Minnesota,"South Dakota"} 56744 | {Minnesota,"North Dakota"} 57026 | {Minnesota,"South Dakota"} 57030 | {Minnesota,"South Dakota"} 57068 | {Minnesota,"South Dakota"} 57078 | {Nebraska,"South Dakota"} 57638 | {"North Dakota","South Dakota"} 57641 | {"North Dakota","South Dakota"} 57642 | {"North Dakota","South Dakota"} 57645 | {"North Dakota","South Dakota"} 57648 | {"North Dakota","South Dakota"} 57660 | {"North Dakota","South Dakota"} 57717 | {"South Dakota",Wyoming} 57724 | {Montana,"South Dakota"} 58225 | {Minnesota,"North Dakota"} 58439 | {"North Dakota","South Dakota"} 58623 | {"North Dakota","South Dakota"} 58649 | {"North Dakota","South Dakota"} 58653 | {"North Dakota","South Dakota"} 59221 | {Montana,"North Dakota"} 59270 | {Montana,"North Dakota"} 59275 | {Montana,"North Dakota"} 59847 | {Idaho,Montana} 63673 | {Illinois,Missouri} 65729 | {Arkansas,Missouri} 65733 | {Arkansas,Missouri} 65761 | {Arkansas,Missouri} 66541 | {Kansas,Nebraska} 67950 | {Kansas,Oklahoma} 68325 | {Kansas,Nebraska} 68719 | {Nebraska,"South Dakota"} 68978 | {Kansas,Nebraska} 69201 | {Nebraska,"South Dakota"} 69212 | {Nebraska,"South Dakota"} 69216 | {Nebraska,"South Dakota"} 71749 | {Arkansas,Louisiana} 72338 | {Arkansas,Tennessee} 72644 | {Arkansas,Missouri} 73949 | {Oklahoma,Texas} 75556 | {Arkansas,Texas} 79837 | {"New Mexico",Texas} 80758 | {Colorado,Nebraska} 81137 | {Colorado,"New Mexico"} 81324 | {Colorado,Utah} 82063 | {Colorado,Wyoming} 82082 | {Nebraska,Wyoming} 82701 | {"South Dakota",Wyoming} 82801 | {Montana,Wyoming} 82930 | {Utah,Wyoming} 83111 | {Idaho,Wyoming} 83120 | {Idaho,Wyoming} 83312 | {Idaho,Utah} 83342 | {Idaho,Utah} 84034 | {Nevada,Utah} 84531 | {Arizona,Utah} 84536 | {Arizona,Utah} 86044 | {Arizona,Utah} 86504 | {Arizona,"New Mexico"} 86514 | {Arizona,Utah} 86515 | {Arizona,"New Mexico"} 87328 | {Arizona,"New Mexico"} 88220 | {"New Mexico",Texas} 88430 | {"New Mexico",Texas} 89010 | {California,Nevada} 89019 | {California,Nevada} 89060 | {California,Nevada} 89421 | {Nevada,Oregon} 89439 | {California,Nevada} 89832 | {Idaho,Nevada} 97635 | {California,Oregon} 97910 | {Idaho,Oregon} 99128 | {Idaho,Washington} 99362 | {Oregon,Washington} (93 rows) 

Você deve conseguir verificar todos eles no Google Maps. No entanto, O Google Maps também não tem autoridade.

Resposta

Sobreposições de estados mencionadas no documento do censo de 1994

Em junho de 1994, de acordo com o seguinte site do US Census Bureau, havia 153 CEPs que cruzam as fronteiras dos estados.

Conforme mencionado anteriormente, existem alguns códigos postais que atendem às divisões estaduais e alguns CEPs / setores que cruzam as fronteiras regionais. Existem 153 CEPs em mais de um estado. Existem 9.000 CEPs em mais de um condado. Havia 11.331 (de um total de 857.400) CEP / setores que foram spl por condado. Todos os estados tinham alguns setores divididos, com Virgínia, Michigan e Ohio tendo uma dosagem especialmente maior. Os setores de rota rural, como esperado, continham (relativamente) a maior parte dos setores divididos. A maioria dos outros casos está na faixa de setor inferior (reservado para caixas de correio) e no Setor 99 (reservado para o agente dos correios e empresas devolução de correspondência). Deve haver alguma atribuição de código de condado fora do padrão ocorrendo para esses casos selecionados. Teremos que investigá-los em uma data posterior.

Resposta

Com ArcGIS você pode usar a ferramenta de junção espacial (ou em um script) para encontrar quais polígonos de código postal se cruzam com mais de um polígonos de estado. Na classe de recurso de saída, haverá um campo Join_Count que indicará vários estados. Você poderia fazer algo semelhante com zips e cidades. Provavelmente haverá falsos positivos onde os zips se sobrepõem acidentalmente a mais de um devido a imprecisões / falta de fronteira ou resolução. Você poderia fazer um buffer negativo de -100m dos zips antes da junção espacial e veja o que isso faz.

import arcpy target_features = "C:/data/usa.gdb/states" join_features = "C:/data/usa.gdb/zips" out_feature_class = "C:/data/usa.gdb/states_zips" arcpy.SpatialJoin_analysis(target_features, join_features, out_feature_class, "JOIN_ONE_TO_MANY") 

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Spatial_Join/00080000000q000000/
“Dois novos campos, Join_Count e TARGET_FID, são sempre adicionados à classe de recurso de saída. Join_Count indica quantos recursos de junção correspondem a cada recurso de destino (TARGET_FID). Outro novo campo, JOIN_FID, é adicionado à saída quando JOIN_ONE_TO_MANY é especificado no parâmetro Join Operation.”

Resposta

Você pode fazer uma intersecção espacial no PostGIS e obter uma lista de cada estado ou cidade e os códigos postais que eles se cruzam, o que retornaria vários CEPs onde vários estados se cruzam, e para cada cidade que cruzasse o mesmo CEP, você veria esse resultado também.

Comentários

Resposta

Na Pensilvânia, os limites da agência dos correios não se alinham com os limites do município. Alguns distritos podem ter vários Correios entregando para eles. Quando estávamos fazendo o endereçamento para o 911, alguns distritos pediram ao PO para mudar de nae ao nome do município, o PO permitiu que eles fizessem isso com a condição de continuarem a usar o antigo código postal dos Correios. Muitos faziam isso. Você pode ver nestes links que o mesmo código postal está em uso para várias cidades. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Basicamente, usar “Anytown” com o código postal correto funcionará por causa de seus computadores de classificação lendo zip código primeiro.

Você também pode encontrar PO que só têm caixas postais e não fazem entrega local, portanto, nenhum polígono para o seu mapa. Esses PO geralmente são pequenos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *