Déterminer quels codes postaux américains sont associés à plus dun État ou à plus dune ville?

Jutilise une liste de codes postaux, et je suis curieux de savoir combien (ou quels) codes postaux correspondent à plus dun État américain ou américain ville?

Par exemple, je sais que le code postal 42223 est résolu par larmée américaine, Fort Campbell, qui chevauche la ligne détat KY-TN. Curieusement, lAPI Google uniquement renvoie TN pour cet état correspondant à ce zip.

Commentaires

  • Comment définissez-vous  » ville  » et  » code postal « ?

Réponse

Il existe 13 zones de tabulation des codes postaux (ZCTA) multi-state US Census « : 02861, 42223, 59221, 63673, 71749, 73949, 81137, 84536, 86044, 86515, 88063, 89439 & 97635.

Comme dautres lont mentionné, il sont quelques façons différentes de déterminer la zone couverte par un code postal, mais les ZCTA sont les plus faciles, et le o nly version officielle que je connaisse.

Donc, votre exemple de 42223 enjambe une frontière dÉtat, mais il semble que cest en fait entre le Maryland et la Virginie. celle entre le Kentucky et le Tennessee.

Voici la liste complète avec les états:

 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 

Voici comment je lai généré (avec Pandas en 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) 

Modifier : Il semble que le recensement ait deux codages à deux chiffres différents pour les états. Les deux sont des nombres attribués en fonction de lordre alphabétique de létat, mais on semble appliquer les nombres directement de 1 à 51 (50 états + DC), tandis que lautre ignore certains nombres . Jutilisais le premier, alors que jaurais dû utiliser le second, donc les noms détat que jai énumérés étaient erronés. Jai mis à jour le code et résultats avec la liste correcte.

Modifier : nouveau mappage détat confirmé par lAPI OpenCongress: https://gist.github.com/gabrielgrant/89f883d093e2abf129ad

Commentaires

  • Merci beaucoup davoir attrapé ce @JesseCrocker – Il semble que le recensement (déroutant) a deux codages à deux chiffres différents pour les états. Les deux sont des nombres attribués en fonction de lordre alphabétique de létat ‘, mais on semble appliquer les nombres directement de 1 à 51 (50 états + DC), tandis que lautre ignore certains nombres . Jutilisais le premier, mais jaurais dû utiliser le second, donc les noms détat que jai énumérés étaient faux (même si les ZCTA étaient bons). Jai ‘ corrigé le code et les résultats avec la liste correcte.
  • En ce qui concerne les lacunes dans les codes FIPS, les numéros ignorés ont été réservés dans les années 1970 pour les territoires périphériques (Samoa américaines, zone du canal, Guam, Porto Rico et les îles Vierges), mais nont pas été ‘ utilisés pour eux. en.wikipedia.org/wiki/…
  • Don ‘ t oublier le code postal 57717 qui couvre trois États six, des comtés et plusieurs villes: 57717 Aurora, SD 57717 Butte, SD 57717 Carter, MT 57717 Crook, WY 57717 Harding, SD 57717 Lawrence, SD
  • Cette liste nest pas ‘ presque terminée. Consultez ma réponse pour une meilleure approximation loin . gis.stackexchange.com/a/223445/6052
  • Cela ‘ est étrange. Google Maps montre 02861 comme faisant littéralement partie de la frontière entre MA et RI, et lintégralité du code postal fermement dans RI google.com/ maps / place / Pawtucket, + RI + 02861 / …

Réponse

Il ny a vraiment pas de moyen de le dire; car il ny a pas de forme de limite ZipCode définie par lUSPS. Les ZipCodes sont définis par une boîte englobante de Streets livrés à par les transporteurs à partir dun centre de distribution particulier.

Vous devez donc prendre les données USPS AIS et extraire par ZipCodes les rues qui sont livrées par un bureau de poste donné, puis Rejoignez-les dans une grille de rues. tous les fournisseurs commerciaux font (Nokia / TomTom) pour créer la forme Psuedo quils utilisent pour afficher les limites postales.

Ce processus inexact est la raison pour laquelle lUSPS ne fournit pas de données spatiales.

Commentaires

Réponse

Le US Census Bureau établit des limites approximatives pour les codes postaux en fonction des adresses quils contiennent, appelées ZIP Zones de tabulation de code (ZCTA).

Ils publient des fichiers de relations qui décrivent comment leurs ZCTA se mappent à diverses autres zones géographiques. Si vous examinez le fichier de relations ZCTA to Place , vous pouvez voir comment ils sont mappés aux villes et villages. Vous pouvez déduire comment ils sont mappés aux états à partir du fichier de relations ZCTA vers comtés .

Les fichiers de relations utilisent les identifiants géographiques du recensement, vous  » Je souhaite saisir un fichier de répertoire géographique pour vous aider à convertir les identifiants numériques en noms de lieux ou de comtés que vous attendez.

Comme autre les réponses ont indiqué, tout mappage de codes postaux avec des lieux est probablement approximatif, mais jai eu de la chance avec les fichiers de données du recensement.

Réponse

Données TIGER 2016 avec PostGIS

En guise de mise en garde spéciale, les données ZCTA ne sont pas des codes postaux USPS. Cest une approximation. Les codes postaux USPS sont vraiment horribles et ne sont utiles que pour approximer. Tout le monde, y compris toutes les entités gouvernementales autres que USPS, et (le recensement pour faire ZCTA) les ignore complètement. Si USPS voulait grandir un peu, ils « feraient simplement une conversion vers le dernier ZCTA et fourniraient des polygones SIG faisant autorité.

Alors … Ici, nous recherchons les intersections entre Ensembles de données TIGER State et TIGER ZCTA. Notez que nous qualifions les États de 1% de la superficie totale du ZCTA. Si 1% de la zone ZCTA nest pas dans létat, nous supposons que cest une erreur darrondi, ou quelquun de gros doigté quelque chose au recensement. Consultez 56168 ou même 83832 pour un code postal que nous « réélaguons avec cette sélectivité supplémentaire.

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; 

Voici le résultat

 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) 

Vous devriez pouvoir vérifier tous ces éléments dans Google Maps. Cependant, Google Maps nest également pas faisant autorité.

Réponse

Chevauchements détats mentionnés dans le recensement de 1994

En juin 1994, selon le site du US Census Bureau, 153 codes postaux traversent les frontières des États.

Comme mentionné précédemment, il existe quelques codes postaux qui traversent les frontières nationales, et il y a quelques ZIP / secteurs qui traversent les limites du comté. Il existe 153 codes postaux dans plus dun État. Il y a 9 000 codes postaux dans plus dun comté. Il y avait 11 331 (sur un total de 857 400) ZIP / secteurs qui étaient spl il par comté. Tous les États avaient des secteurs séparés, la Virginie, le Michigan et lOhio ayant un dosage particulièrement plus élevé. Les secteurs des routes rurales, comme prévu, contenaient (relativement) la part du lion des secteurs fractionnés. La plupart des autres cas se situent dans le secteur inférieur (réservé aux boîtes postales) et au secteur 99 (réservé au maître de poste et aux entreprises. retour par e-mail). Il doit y avoir une attribution de code de comté non standard pour ces cas sélectionnés. Nous devrons les étudier plus avant à une date ultérieure.

Réponse

Avec ArcGIS, vous pouvez utiliser loutil de jointure spatiale (ou dans un script) pour trouver les polygones de code postal qui se croisent avec plusieurs polygones détat. Dans la classe dentités en sortie, il y aura un champ Join_Count qui indiquera plusieurs états. Vous pouvez faire la même chose avec les zips et les villes. Il y aura probablement des faux positifs lorsque les zips se chevauchent involontairement plus dun en raison dinexactitudes / manque de bordure ou résolution. Vous pouvez éventuellement créer un tampon négatif de -100 m des zips avant la jointure spatiale et voyez ce que cela fait.

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/
« Deux nouveaux champs, Join_Count et TARGET_FID, sont toujours ajoutés à la classe dentités en sortie. Join_Count indique le nombre dentités de jointure correspondant à chaque entité cible (TARGET_FID). Un autre nouveau champ, JOIN_FID, est ajouté à la sortie lorsque JOIN_ONE_TO_MANY est spécifié dans le paramètre Join Operation. »

Réponse

Vous pouvez faire une intersection spatiale dans PostGIS et récupérer une liste de chaque État ou ville et les codes postaux quils se croisent, ce qui renverrait plusieurs codes postaux où plusieurs états se croisent, et pour chaque ville qui a intersecté le même zip, vous verriez également ce résultat.

Commentaires

Réponse

En Pennsylvanie, les limites des bureaux de poste ne sont pas alignées sur les limites municipales. Certains cantons peuvent avoir plusieurs bureaux de poste qui leur livrent. Lorsque nous faisions ladressage 911, certains cantons ont demandé au PO de modifier leur nae au nom du canton, le bon de commande leur a permis de le faire à condition de continuer à utiliser lancien code postal de la poste. Beaucoup lont fait. Vous pouvez voir à partir de ces liens que le même code postal est utilisé pour plusieurs villes. https://suburbanstats.org/zip-codes/pennsylvania/thornhurst https://suburbanstats.org/zip-codes/pennsylvania/scott-twp Fondamentalement, lutilisation de « Anytown » avec le bon code postal fonctionnera en raison du tri des ordinateurs lisant zip code dabord.

Vous pouvez également rencontrer des PO qui nont que des boîtes postales et ne font pas de livraison locale donc pas de polygone pour votre carte. Ces bons de commande sont généralement petits.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *