From db423ff8bed801a5fb72c7b25c74352182224c3c Mon Sep 17 00:00:00 2001 From: = <=> Date: Wed, 20 Mar 2024 10:12:43 -0400 Subject: [PATCH] Add validation logic for domain specific nad fields --- .gitignore | 3 + nad_ch/application/data_reader.py | 52 +- nad_ch/application/dtos.py | 9 +- nad_ch/application/validation.py | 177 +- .../domain/Domain_AddrClass.csv | 7 + .../validation_files/domain/Domain_County.csv | 1970 +++++++++++++ .../domain/Domain_DeliverTyp.csv | 4 + .../domain/Domain_Placement.csv | 11 + .../domain/Domain_St_PosDir.csv | 17 + .../domain/Domain_St_PosTyp.csv | 448 +++ .../domain/Domain_St_PreDir.csv | 17 + .../domain/Domain_St_PreSep.csv | 13 + .../domain/Domain_St_PreTyp.csv | 448 +++ .../validation_files/domain/Domain_State.csv | 60 + .../validation_files/mapper/Mapper_County.csv | 2483 +++++++++++++++++ .../mapper/Mapper_Placement.csv | 78 + .../mapper/Mapper_St_PosDir.csv | 55 + .../mapper/Mapper_St_PosTyp.csv | 1109 ++++++++ .../mapper/Mapper_St_PreDir.csv | 55 + .../mapper/Mapper_St_PreSep.csv | 16 + .../mapper/Mapper_St_PreTyp.csv | 1109 ++++++++ .../validation_files/mapper/Mapper_State.csv | 65 + .../validation_files/required_fields.yaml | 19 - nad_ch/domain/entities.py | 21 + nad_ch/infrastructure/task_queue.py | 20 +- tests/application/test_data_reader.py | 57 +- tests/application/test_dto.py | 7 +- tests/application/test_validation.py | 136 +- tests/infrastructure/test_task_queue.py | 40 +- tests/test_data/baselines.py | 288 +- .../test_data/column_maps/testproducer1.yaml | 97 +- .../test_data/column_maps/testproducer2.yaml | 21 +- .../test_data/column_maps/testproducer3.yaml | 77 + .../NM911_Address_202310.cpg | 1 + .../NM911_Address_202310.dbf | Bin 0 -> 1655770 bytes .../NM911_Address_202310.prj | 1 + .../NM911_Address_202310.shp | Bin 0 -> 28100 bytes .../NM911_Address_202310.shx | Bin 0 -> 8100 bytes .../baselines/NM911_Address_202310-gdf-0.pkl | Bin 0 -> 27986 bytes .../baselines/NM911_Address_202310-gdf-1.pkl | Bin 0 -> 27759 bytes .../baselines/NM911_Address_202310-gdf-2.pkl | Bin 0 -> 27747 bytes .../baselines/NM911_Address_202310-gdf-3.pkl | Bin 0 -> 27964 bytes 42 files changed, 8675 insertions(+), 316 deletions(-) create mode 100644 nad_ch/application/validation_files/domain/Domain_AddrClass.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_County.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_DeliverTyp.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_Placement.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_St_PosDir.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_St_PosTyp.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_St_PreDir.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_St_PreSep.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_St_PreTyp.csv create mode 100644 nad_ch/application/validation_files/domain/Domain_State.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_County.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_Placement.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_St_PosDir.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_St_PosTyp.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_St_PreDir.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_St_PreSep.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_St_PreTyp.csv create mode 100644 nad_ch/application/validation_files/mapper/Mapper_State.csv delete mode 100644 nad_ch/application/validation_files/required_fields.yaml create mode 100644 tests/test_data/column_maps/testproducer3.yaml create mode 100644 tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.cpg create mode 100644 tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.dbf create mode 100644 tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.prj create mode 100644 tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.shp create mode 100644 tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.shx create mode 100644 tests/test_data/shapefiles/baselines/NM911_Address_202310-gdf-0.pkl create mode 100644 tests/test_data/shapefiles/baselines/NM911_Address_202310-gdf-1.pkl create mode 100644 tests/test_data/shapefiles/baselines/NM911_Address_202310-gdf-2.pkl create mode 100644 tests/test_data/shapefiles/baselines/NM911_Address_202310-gdf-3.pkl diff --git a/.gitignore b/.gitignore index e7cc0d4..bd08b1a 100644 --- a/.gitignore +++ b/.gitignore @@ -159,6 +159,9 @@ cython_debug/ # option (not recommended) you can uncomment the following to ignore the entire idea folder. #.idea/ +# VScode +.vscode + # Development databases *.sqlite3 diff --git a/nad_ch/application/data_reader.py b/nad_ch/application/data_reader.py index fed7186..b4390e4 100644 --- a/nad_ch/application/data_reader.py +++ b/nad_ch/application/data_reader.py @@ -1,35 +1,28 @@ from geopandas import GeoDataFrame, read_file import fiona -from typing import Optional, Dict -import yaml -import os +from typing import Optional, Dict, Iterator class DataReader(object): - def __init__(self, column_map: Dict[str, str]) -> None: - self.required_fields_path = ( - "nad_ch/application/validation_files/required_fields.yaml" - ) - self.column_map = self.set_column_map(column_map) + def __init__( + self, column_map: Dict[str, str], validate_mapping: bool = True + ) -> None: + self.column_map = column_map self.valid_renames = {} - - def set_column_map(self, column_map: Dict[str, str]) -> Dict[str, str]: - with open(self.required_fields_path, "r") as file: - required_fields = yaml.safe_load(file) - column_map["data_required_fields"] = required_fields["data_required_fields"] - return column_map + if validate_mapping: + self.validate_column_map() def validate_column_map(self): - column_map = self.column_map["data_column_mapping"] column_map_reverse = {} - for key, values in column_map.items(): - for value in values: - value_lcase = value.lower() - if value_lcase in column_map_reverse: - column_map_reverse[value_lcase].append(key) - else: - column_map_reverse[value_lcase] = [key] + for key, values in self.column_map.items(): + if values: + for value in values: + value_lcase = value.lower() + if value_lcase in column_map_reverse: + column_map_reverse[value_lcase].append(key) + else: + column_map_reverse[value_lcase] = [key] duplicates = {k: v for k, v in column_map_reverse.items() if len(v) > 1} if duplicates: duplicate_nad_fields = ", ".join( @@ -40,24 +33,25 @@ def validate_column_map(self): ) def rename_columns(self, gdf: GeoDataFrame) -> GeoDataFrame: - column_map = self.column_map["data_column_mapping"] + column_map = self.column_map original_names = {col.lower(): col for col in gdf.columns} for nad_column, fields_to_check in column_map.items(): orig_matched_name = original_names.get(nad_column.lower()) if orig_matched_name: self.valid_renames[orig_matched_name] = nad_column continue - for field in fields_to_check: - orig_matched_name = original_names.get(field.lower()) - if orig_matched_name: - self.valid_renames[orig_matched_name] = nad_column - break + if fields_to_check: + for field in fields_to_check: + orig_matched_name = original_names.get(field.lower()) + if orig_matched_name: + self.valid_renames[orig_matched_name] = nad_column + break gdf = gdf.rename(columns=self.valid_renames) return gdf[[col for col in self.valid_renames.values()]] def read_file_in_batches( self, path: str, table_name: Optional[str] = None, batch_size: int = 100000 - ) -> GeoDataFrame: + ) -> Iterator[GeoDataFrame]: # TODO: Modify to return a joined table; for cases where 1 or more tables # are needed to get all fields from source file. layers = fiona.listlayers(path) diff --git a/nad_ch/application/dtos.py b/nad_ch/application/dtos.py index 4ce99dd..7defed8 100644 --- a/nad_ch/application/dtos.py +++ b/nad_ch/application/dtos.py @@ -1,5 +1,5 @@ from dataclasses import dataclass, asdict, field, is_dataclass -from typing import List +from typing import List, Dict import numpy as np @@ -17,6 +17,7 @@ class DataSubmissionReportOverview: records_flagged: int = 0 etl_update_required: bool = False data_update_required: bool = False + missing_required_fields: List[str] = field(default_factory=list) @dataclass @@ -28,6 +29,12 @@ class DataSubmissionReportFeature: invalid_domain_count: int = 0 valid_domain_count: int = 0 invalid_domains: List[str] = field(default_factory=list) + # TODO: Add frequency charts for each field and only take the top 10 if + # more than 10 values exist + # invalid_domain_frequencies: Dict[str, int] + # Set to True if invalid_domains & invalid_domain_frequencies doesn't contain + # a full list of unique domains found in source data + # invalid_domain_list_truncated: bool = False @dataclass diff --git a/nad_ch/application/validation.py b/nad_ch/application/validation.py index a4d9112..732bf32 100644 --- a/nad_ch/application/validation.py +++ b/nad_ch/application/validation.py @@ -1,68 +1,147 @@ -from typing import Dict, Tuple +from typing import Dict, Optional from geopandas import GeoDataFrame +import pandas as pd from nad_ch.application.dtos import ( DataSubmissionReportFeature, DataSubmissionReportOverview, ) +import glob +from pathlib import Path +from nad_ch.domain.entities import ColumnMap -def get_feature_count(gdf: GeoDataFrame) -> int: - return len(gdf.columns) +class DataValidator: + def __init__(self, valid_mappings: Dict[str, str]): + self.valid_mappings = valid_mappings + self.domains = {} + self.required_fields = ColumnMap.required_fields + self.load_domain_values() + self.missing_fields = set() + self.report_overview: Optional[DataSubmissionReportFeature] = None + self.report_features: Optional[Dict[str, DataSubmissionReportFeature]] = None + def load_domain_values(self): + for type in ("domain", "mapper"): + self.domains[type] = {} + path = f"nad_ch/application/validation_files/{type}/*.csv" + file_paths = glob.glob(path) + for file_path in file_paths: + field = "_".join(Path(file_path).stem.split("_")[1:]) + df = pd.read_csv(file_path, sep=",", encoding="utf-8") + df["Source"] = df["Source"].astype(str) + df["Destination"] = df["Destination"].astype(str) + self.domains[type][field] = dict(zip(df.Source, df.Destination)) -def get_record_count(gdf: GeoDataFrame, null_rows_only: bool = False) -> int: - if null_rows_only: - return len(gdf[gdf.isnull().any(axis=1)]) - return len(gdf) + @staticmethod + def get_feature_count(gdf: GeoDataFrame) -> int: + return len(gdf.columns) + @staticmethod + def get_record_count(gdf: GeoDataFrame, invalid_rows: bool = False) -> int: + if invalid_rows: + return len(gdf[gdf.isnull().any(axis=1)]) + return len(gdf) -def get_features_flagged(features: Dict[str, DataSubmissionReportFeature]) -> int: - return len( - [k for k, v in features.items() if v.null_count + v.invalid_domain_count > 0] - ) - - -def initialize_overview_details( - gdf: GeoDataFrame, column_map: Dict[str, str] -) -> Tuple[DataSubmissionReportOverview, Dict[str, DataSubmissionReportFeature]]: - report_overview = DataSubmissionReportOverview(feature_count=get_feature_count(gdf)) - report_features = { - nad_name: DataSubmissionReportFeature( - provided_feature_name=provided_name, nad_feature_name=nad_name + @staticmethod + def get_features_flagged(features: Dict[str, DataSubmissionReportFeature]) -> int: + return len( + [ + k + for k, v in features.items() + if v.null_count + v.invalid_domain_count > 0 + ] ) - for provided_name, nad_name in column_map.items() - } - return report_overview, report_features + def get_invalid_record_count(self, gdf: GeoDataFrame) -> int: + existing_required_fields = list(self.valid_mappings.values()) + filters = [ + f"(gdf['{field}'].isin({self.report_features[field].invalid_domains}))" + for field in existing_required_fields + if self.report_features[field].invalid_domains + ] + filters.append(f"(gdf[{existing_required_fields}].isna().any(axis=1))") + return len(gdf[eval("|".join(filters))]) -def update_feature_details( - gdf: GeoDataFrame, features: Dict[str, DataSubmissionReportFeature] -) -> Dict[str, DataSubmissionReportFeature]: - for column in gdf.columns: - populated_count = gdf[column].notna().sum() - null_count = gdf[column].isna().sum() + def initialize_overview_details( + self, gdf: GeoDataFrame, column_map: Dict[str, str] + ): + if not self.report_features and not self.report_overview: + self.report_overview = DataSubmissionReportOverview( + feature_count=self.get_feature_count(gdf) + ) + missing_fields = [ + column for column in self.required_fields if column not in gdf.columns + ] + self.report_overview.missing_required_fields = missing_fields + self.report_features = { + nad_name: DataSubmissionReportFeature( + provided_feature_name=provided_name, nad_feature_name=nad_name + ) + for provided_name, nad_name in column_map.items() + } - feature_submission = features.get(column) - if feature_submission: - feature_submission.populated_count += populated_count - feature_submission.null_count += null_count - # TODO: Add logic for domain specific features such as - # valid_domain_count, invalid_domain_count, & invalid_domains - return features + def update_feature_details(self, gdf: GeoDataFrame): + for column in gdf.columns: + feature_submission = self.report_features.get(column) + if feature_submission: + # Update null and populated counts + populated_count = gdf[column].notna().sum() + null_count = gdf[column].isna().sum() + feature_submission.populated_count += populated_count + feature_submission.null_count += null_count + # Update domain specific metrics + column_domain_dict = self.domains["domain"].get(column) + column_mapper_dict = self.domains["mapper"].get(column) + if column_domain_dict and column_mapper_dict: + filter = ~( + (gdf[column].isin(column_domain_dict.keys())) + | ( + (gdf[column].isin(column_mapper_dict.keys())) + | (gdf[column].str.lower().isin(column_mapper_dict.keys())) + ) + ) + elif column_domain_dict: + filter = ~(gdf[column].isin(column_domain_dict.keys())) + elif column_mapper_dict: + filter = ~( + (gdf[column].isin(column_mapper_dict.keys())) + | (gdf[column].str.lower().isin(column_mapper_dict.keys())) + ) + else: + filter = None + invalid_domain_count, invalid_domains = 0, [] + if filter is not None: + gdf_invalid_domains = gdf[filter & (gdf[column].notna())] + invalid_domain_count = gdf_invalid_domains.shape[0] + invalid_domains = [ + domain + for domain in list(gdf_invalid_domains[column].unique()) + if domain not in feature_submission.invalid_domains + ] + valid_domain_count = ( + gdf.shape[0] - invalid_domain_count - null_count + ) + feature_submission.invalid_domain_count += invalid_domain_count + feature_submission.valid_domain_count += valid_domain_count + # Can only store up to 10 invalid domains per nad field + invalid_domain_unique_count = len(invalid_domains) + remaining_slots = 10 - len(feature_submission.invalid_domains) + if invalid_domain_unique_count and remaining_slots > 0: + invalid_domains = invalid_domains[:remaining_slots] + feature_submission.invalid_domains.extend(invalid_domains) -def update_overview_details( - gdf: GeoDataFrame, overview: DataSubmissionReportOverview -) -> DataSubmissionReportOverview: - overview.records_count += get_record_count(gdf) - overview.records_flagged += get_record_count(gdf, True) - return overview + def update_overview_details(self, gdf: GeoDataFrame): + self.report_overview.records_count += self.get_record_count(gdf) + self.report_overview.records_flagged += self.get_invalid_record_count(gdf) + def finalize_overview_details(self): + self.report_overview.features_flagged += self.get_features_flagged( + self.report_features + ) + # TODO: Add logic for etl_update_required & data_update_required -def finalize_overview_details( - overview: DataSubmissionReportOverview, - features: Dict[str, DataSubmissionReportFeature], -) -> DataSubmissionReportOverview: - overview.features_flagged += get_features_flagged(features) - # TODO: Add logic for etl_update_required & data_update_required - return overview + def run(self, gdf_batch: GeoDataFrame): + self.initialize_overview_details(gdf_batch, self.valid_mappings) + self.update_feature_details(gdf_batch) + self.update_overview_details(gdf_batch) diff --git a/nad_ch/application/validation_files/domain/Domain_AddrClass.csv b/nad_ch/application/validation_files/domain/Domain_AddrClass.csv new file mode 100644 index 0000000..d338851 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_AddrClass.csv @@ -0,0 +1,7 @@ +Source,Destination +Numbered Thoroughfare Address ,Numbered Thoroughfare Address +Intersection Address,Intersection Address +Two Number Address Range,Two Number Address Range +Unnumbered Thoroughfare Address,Unnumbered Thoroughfare Address +Landmark Address,Landmark Address +Community Address,Community Address diff --git a/nad_ch/application/validation_files/domain/Domain_County.csv b/nad_ch/application/validation_files/domain/Domain_County.csv new file mode 100644 index 0000000..cec231a --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_County.csv @@ -0,0 +1,1970 @@ +Source,Destination +Abbeville,Abbeville +Acadia Parish,Acadia Parish +Accomack,Accomack +Ada,Ada +Adair,Adair +Adams,Adams +Addison,Addison +Adjuntas Municipio,Adjuntas Municipio +Aguada Municipio,Aguada Municipio +Aguadilla Municipio,Aguadilla Municipio +Aguas Buenas Municipio,Aguas Buenas Municipio +Aibonito Municipio,Aibonito Municipio +Aiken,Aiken +Aitkin,Aitkin +Alachua,Alachua +Alamance,Alamance +Alameda,Alameda +Alamosa,Alamosa +Albany,Albany +Albemarle,Albemarle +Alcona,Alcona +Alcorn,Alcorn +Aleutians East Borough,Aleutians East Borough +Aleutians West Census Area,Aleutians West Census Area +Alexander,Alexander +Alexandria city,Alexandria city +Alfalfa,Alfalfa +Alger,Alger +Allamakee,Allamakee +Allegan,Allegan +Allegany,Allegany +Alleghany,Alleghany +Allegheny,Allegheny +Allen,Allen +Allen Parish,Allen Parish +Allendale,Allendale +Alpena,Alpena +Alpine,Alpine +Amador,Amador +Amelia,Amelia +Amherst,Amherst +Amite,Amite +Anasco Municipio,Anasco Municipio +Anchorage Municipality,Anchorage Municipality +Anderson,Anderson +Andrew,Andrew +Andrews,Andrews +Androscoggin,Androscoggin +Angelina,Angelina +Anne Arundel,Anne Arundel +Anoka,Anoka +Anson,Anson +Antelope,Antelope +Antrim,Antrim +Apache,Apache +Appanoose,Appanoose +Appling,Appling +Appomattox,Appomattox +Aransas,Aransas +Arapahoe,Arapahoe +Archer,Archer +Archuleta,Archuleta +Arecibo Municipio,Arecibo Municipio +Arenac,Arenac +Arkansas,Arkansas +Arlington,Arlington +Armstrong,Armstrong +Aroostook,Aroostook +Arroyo Municipio,Arroyo Municipio +Arthur,Arthur +Ascension Parish,Ascension Parish +Ashe,Ashe +Ashland,Ashland +Ashley,Ashley +Ashtabula,Ashtabula +Asotin,Asotin +Assumption Parish,Assumption Parish +Atascosa,Atascosa +Atchison,Atchison +Athens,Athens +Atkinson,Atkinson +Atlantic,Atlantic +Atoka,Atoka +Attala,Attala +Audrain,Audrain +Audubon,Audubon +Auglaize,Auglaize +Augusta,Augusta +Aurora,Aurora +Austin,Austin +Autauga,Autauga +Avery,Avery +Avoyelles Parish,Avoyelles Parish +Baca,Baca +Bacon,Bacon +Bailey,Bailey +Baker,Baker +Baldwin,Baldwin +Ballard,Ballard +Baltimore,Baltimore +Baltimore city,Baltimore city +Bamberg,Bamberg +Bandera,Bandera +Banks,Banks +Banner,Banner +Bannock,Bannock +Baraga,Baraga +Barber,Barber +Barbour,Barbour +Barceloneta Municipio,Barceloneta Municipio +Barnes,Barnes +Barnstable,Barnstable +Barnwell,Barnwell +Barranquitas Municipio,Barranquitas Municipio +Barren,Barren +Barron,Barron +Barrow,Barrow +Barry,Barry +Bartholomew,Bartholomew +Barton,Barton +Bartow,Bartow +Bastrop,Bastrop +Bates,Bates +Bath,Bath +Baxter,Baxter +Bay,Bay +Bayamon Municipio,Bayamon Municipio +Bayfield,Bayfield +Baylor,Baylor +Beadle,Beadle +Bear Lake,Bear Lake +Beaufort,Beaufort +Beauregard Parish,Beauregard Parish +Beaver,Beaver +Beaverhead,Beaverhead +Becker,Becker +Beckham,Beckham +Bedford,Bedford +Bedford city,Bedford city +Bee,Bee +Belknap,Belknap +Bell,Bell +Belmont,Belmont +Beltrami,Beltrami +Ben Hill,Ben Hill +Benewah,Benewah +Bennett,Bennett +Bennington,Bennington +Benson,Benson +Bent,Bent +Benton,Benton +Benzie,Benzie +Bergen,Bergen +Berkeley,Berkeley +Berks,Berks +Berkshire,Berkshire +Bernalillo,Bernalillo +Berrien,Berrien +Bertie,Bertie +Bethel Census Area,Bethel Census Area +Bexar,Bexar +Bibb,Bibb +Bienville Parish,Bienville Parish +Big Horn,Big Horn +Big Stone,Big Stone +Billings,Billings +Bingham,Bingham +Black Hawk,Black Hawk +Blackford,Blackford +Bladen,Bladen +Blaine,Blaine +Blair,Blair +Blanco,Blanco +Bland,Bland +Bleckley,Bleckley +Bledsoe,Bledsoe +Blount,Blount +Blue Earth,Blue Earth +Boise,Boise +Bolivar,Bolivar +Bollinger,Bollinger +Bon Homme,Bon Homme +Bond,Bond +Bonner,Bonner +Bonneville,Bonneville +Boone,Boone +Borden,Borden +Bosque,Bosque +Bossier Parish,Bossier Parish +Botetourt,Botetourt +Bottineau,Bottineau +Boulder,Boulder +Boundary,Boundary +Bourbon,Bourbon +Bowie,Bowie +Bowman,Bowman +Box Butte,Box Butte +Box Elder,Box Elder +Boyd,Boyd +Boyle,Boyle +Bracken,Bracken +Bradford,Bradford +Bradley,Bradley +Branch,Branch +Brantley,Brantley +Braxton,Braxton +Brazoria,Brazoria +Brazos,Brazos +Breathitt,Breathitt +Breckinridge,Breckinridge +Bremer,Bremer +Brevard,Brevard +Brewster,Brewster +Briscoe,Briscoe +Bristol,Bristol +Bristol Bay Borough,Bristol Bay Borough +Bristol city,Bristol city +Broadwater,Broadwater +Bronx,Bronx +Brooke,Brooke +Brookings,Brookings +Brooks,Brooks +Broome,Broome +Broomfield,Broomfield +Broward,Broward +Brown,Brown +Brule,Brule +Brunswick,Brunswick +Bryan,Bryan +Buchanan,Buchanan +Buckingham,Buckingham +Bucks,Bucks +Buena Vista,Buena Vista +Buena Vista city,Buena Vista city +Buffalo,Buffalo +Bullitt,Bullitt +Bulloch,Bulloch +Bullock,Bullock +Buncombe,Buncombe +Bureau,Bureau +Burke,Burke +Burleigh,Burleigh +Burleson,Burleson +Burlington,Burlington +Burnet,Burnet +Burnett,Burnett +Burt,Burt +Butler,Butler +Butte,Butte +Butts,Butts +Cabarrus,Cabarrus +Cabell,Cabell +Cabo Rojo Municipio,Cabo Rojo Municipio +Cache,Cache +Caddo,Caddo +Caddo Parish,Caddo Parish +Caguas Municipio,Caguas Municipio +Calaveras,Calaveras +Calcasieu Parish,Calcasieu Parish +Caldwell,Caldwell +Caldwell Parish,Caldwell Parish +Caledonia,Caledonia +Calhoun,Calhoun +Callahan,Callahan +Callaway,Callaway +Calloway,Calloway +Calumet,Calumet +Calvert,Calvert +Camas,Camas +Cambria,Cambria +Camden,Camden +Cameron,Cameron +Cameron Parish,Cameron Parish +Camp,Camp +Campbell,Campbell +Camuy Municipio,Camuy Municipio +Canadian,Canadian +Candler,Candler +Cannon,Cannon +Canovanas Municipio,Canovanas Municipio +Canyon,Canyon +Cape Girardeau,Cape Girardeau +Cape May,Cape May +Carbon,Carbon +Caribou,Caribou +Carlisle,Carlisle +Carlton,Carlton +Carolina Municipio,Carolina Municipio +Caroline,Caroline +Carroll,Carroll +Carson,Carson +Carson City,Carson City +Carter,Carter +Carteret,Carteret +Carver,Carver +Cascade,Cascade +Casey,Casey +Cass,Cass +Cassia,Cassia +Castro,Castro +Caswell,Caswell +Catahoula Parish,Catahoula Parish +Catano Municipio,Catano Municipio +Catawba,Catawba +Catoosa,Catoosa +Catron,Catron +Cattaraugus,Cattaraugus +Cavalier,Cavalier +Cayey Municipio,Cayey Municipio +Cayuga,Cayuga +Cecil,Cecil +Cedar,Cedar +Ceiba Municipio,Ceiba Municipio +Centre,Centre +Cerro Gordo,Cerro Gordo +Chaffee,Chaffee +Chambers,Chambers +Champaign,Champaign +Chariton,Chariton +Charles,Charles +Charles City,Charles City +Charles Mix,Charles Mix +Charleston,Charleston +Charlevoix,Charlevoix +Charlotte,Charlotte +Charlottesville city,Charlottesville city +Charlton,Charlton +Chase,Chase +Chatham,Chatham +Chattahoochee,Chattahoochee +Chattooga,Chattooga +Chautauqua,Chautauqua +Chaves,Chaves +Cheatham,Cheatham +Cheboygan,Cheboygan +Chelan,Chelan +Chemung,Chemung +Chenango,Chenango +Cherokee,Cherokee +Cherry,Cherry +Chesapeake city,Chesapeake city +Cheshire,Cheshire +Chester,Chester +Chesterfield,Chesterfield +Cheyenne,Cheyenne +Chickasaw,Chickasaw +Chicot,Chicot +Childress,Childress +Chilton,Chilton +Chippewa,Chippewa +Chisago,Chisago +Chittenden,Chittenden +Choctaw,Choctaw +Chouteau,Chouteau +Chowan,Chowan +Christian,Christian +Churchill,Churchill +Ciales Municipio,Ciales Municipio +Cibola,Cibola +Cidra Municipio,Cidra Municipio +Cimarron,Cimarron +Citrus,Citrus +Clackamas,Clackamas +Claiborne,Claiborne +Claiborne Parish,Claiborne Parish +Clallam,Clallam +Clare,Clare +Clarendon,Clarendon +Clarion,Clarion +Clark,Clark +Clarke,Clarke +Clatsop,Clatsop +Clay,Clay +Clayton,Clayton +Clear Creek,Clear Creek +Clearfield,Clearfield +Clearwater,Clearwater +Cleburne,Cleburne +Clermont,Clermont +Cleveland,Cleveland +Clinch,Clinch +Clinton,Clinton +Cloud,Cloud +Coahoma,Coahoma +Coal,Coal +Coamo Municipio,Coamo Municipio +Cobb,Cobb +Cochise,Cochise +Cochran,Cochran +Cocke,Cocke +Coconino,Coconino +Codington,Codington +Coffee,Coffee +Coffey,Coffey +Coke,Coke +Colbert,Colbert +Cole,Cole +Coleman,Coleman +Coles,Coles +Colfax,Colfax +Colleton,Colleton +Collier,Collier +Collin,Collin +Collingsworth,Collingsworth +Colonial Heights city,Colonial Heights city +Colorado,Colorado +Colquitt,Colquitt +Columbia,Columbia +Columbiana,Columbiana +Columbus,Columbus +Colusa,Colusa +Comal,Comal +Comanche,Comanche +Comerio Municipio,Comerio Municipio +Concho,Concho +Concordia Parish,Concordia Parish +Conecuh,Conecuh +Conejos,Conejos +Contra Costa,Contra Costa +Converse,Converse +Conway,Conway +Cook,Cook +Cooke,Cooke +Cooper,Cooper +Coos,Coos +Coosa,Coosa +Copiah,Copiah +Corozal Municipio,Corozal Municipio +Corson,Corson +Cortland,Cortland +Coryell,Coryell +Coshocton,Coshocton +Costilla,Costilla +Cottle,Cottle +Cotton,Cotton +Cottonwood,Cottonwood +Covington,Covington +Covington city,Covington city +Coweta,Coweta +Cowley,Cowley +Cowlitz,Cowlitz +Craig,Craig +Craighead,Craighead +Crane,Crane +Craven,Craven +Crawford,Crawford +Creek,Creek +Crenshaw,Crenshaw +Crisp,Crisp +Crittenden,Crittenden +Crockett,Crockett +Crook,Crook +Crosby,Crosby +Cross,Cross +Crow Wing,Crow Wing +Crowley,Crowley +Culberson,Culberson +Culebra Municipio,Culebra Municipio +Cullman,Cullman +Culpeper,Culpeper +Cumberland,Cumberland +Cuming,Cuming +Currituck,Currituck +Curry,Curry +Custer,Custer +Cuyahoga,Cuyahoga +Dade,Dade +Daggett,Daggett +Dakota,Dakota +Dale,Dale +Dallam,Dallam +Dallas,Dallas +Dane,Dane +Daniels,Daniels +Danville city,Danville city +Dare,Dare +Darke,Darke +Darlington,Darlington +Dauphin,Dauphin +Davidson,Davidson +Davie,Davie +Daviess,Daviess +Davis,Davis +Davison,Davison +Dawes,Dawes +Dawson,Dawson +Day,Day +De Baca,De Baca +De Soto Parish,De Soto Parish +De Witt,De Witt +Deaf Smith,Deaf Smith +Dearborn,Dearborn +Decatur,Decatur +Deer Lodge,Deer Lodge +Defiance,Defiance +DeKalb,DeKalb +Del Norte,Del Norte +Delaware,Delaware +Delta,Delta +Denali Borough,Denali Borough +Dent,Dent +Denton,Denton +Denver,Denver +Des Moines,Des Moines +Deschutes,Deschutes +Desha,Desha +DeSoto,DeSoto +Deuel,Deuel +Dewey,Dewey +DeWitt,DeWitt +Dickens,Dickens +Dickenson,Dickenson +Dickey,Dickey +Dickinson,Dickinson +Dickson,Dickson +Dillingham Census Area,Dillingham Census Area +Dillon,Dillon +Dimmit,Dimmit +Dinwiddie,Dinwiddie +District of Columbia,District of Columbia +Divide,Divide +Dixie,Dixie +Dixon,Dixon +Doddridge,Doddridge +Dodge,Dodge +Dolores,Dolores +Dona Ana,Dona Ana +Doniphan,Doniphan +Donley,Donley +Dooly,Dooly +Door,Door +Dorado Municipio,Dorado Municipio +Dorchester,Dorchester +Dougherty,Dougherty +Douglas,Douglas +Drew,Drew +Dubois,Dubois +Dubuque,Dubuque +Duchesne,Duchesne +Dukes,Dukes +Dundy,Dundy +Dunklin,Dunklin +Dunn,Dunn +DuPage,DuPage +Duplin,Duplin +Durham,Durham +Dutchess,Dutchess +Duval,Duval +Dyer,Dyer +Eagle,Eagle +Early,Early +East Baton Rouge Parish,East Baton Rouge Parish +East Carroll Parish,East Carroll Parish +East Feliciana Parish,East Feliciana Parish +Eastern District,Eastern District +Eastland,Eastland +Eaton,Eaton +Eau Claire,Eau Claire +Echols,Echols +Ector,Ector +Eddy,Eddy +Edgar,Edgar +Edgecombe,Edgecombe +Edgefield,Edgefield +Edmonson,Edmonson +Edmunds,Edmunds +Edwards,Edwards +Effingham,Effingham +El Dorado,El Dorado +El Paso,El Paso +Elbert,Elbert +Elk,Elk +Elkhart,Elkhart +Elko,Elko +Elliott,Elliott +Ellis,Ellis +Ellsworth,Ellsworth +Elmore,Elmore +Emanuel,Emanuel +Emery,Emery +Emmet,Emmet +Emmons,Emmons +Emporia city,Emporia city +Erath,Erath +Erie,Erie +Escambia,Escambia +Esmeralda,Esmeralda +Essex,Essex +Estill,Estill +Etowah,Etowah +Eureka,Eureka +Evangeline Parish,Evangeline Parish +Evans,Evans +Fairbanks North Star Borough,Fairbanks North Star Borough +Fairfax,Fairfax +Fairfax city,Fairfax city +Fairfield,Fairfield +Fajardo Municipio,Fajardo Municipio +Fall River,Fall River +Fallon,Fallon +Falls,Falls +Falls Church city,Falls Church city +Fannin,Fannin +Faribault,Faribault +Faulk,Faulk +Faulkner,Faulkner +Fauquier,Fauquier +Fayette,Fayette +Fentress,Fentress +Fergus,Fergus +Ferry,Ferry +Fillmore,Fillmore +Finney,Finney +Fisher,Fisher +Flagler,Flagler +Flathead,Flathead +Fleming,Fleming +Florence,Florence +Florida Municipio,Florida Municipio +Floyd,Floyd +Fluvanna,Fluvanna +Foard,Foard +Fond du Lac,Fond du Lac +Ford,Ford +Forest,Forest +Forrest,Forrest +Forsyth,Forsyth +Fort Bend,Fort Bend +Foster,Foster +Fountain,Fountain +Franklin,Franklin +Franklin city,Franklin city +Franklin Parish,Franklin Parish +Frederick,Frederick +Fredericksburg city,Fredericksburg city +Freeborn,Freeborn +Freestone,Freestone +Fremont,Fremont +Fresno,Fresno +Frio,Frio +Frontier,Frontier +Fulton,Fulton +Furnas,Furnas +Gadsden,Gadsden +Gage,Gage +Gaines,Gaines +Galax city,Galax city +Gallatin,Gallatin +Gallia,Gallia +Galveston,Galveston +Garden,Garden +Garfield,Garfield +Garland,Garland +Garrard,Garrard +Garrett,Garrett +Garvin,Garvin +Garza,Garza +Gasconade,Gasconade +Gaston,Gaston +Gates,Gates +Geary,Geary +Geauga,Geauga +Gem,Gem +Genesee,Genesee +Geneva,Geneva +Gentry,Gentry +George,George +Georgetown,Georgetown +Gibson,Gibson +Gila,Gila +Gilchrist,Gilchrist +Giles,Giles +Gillespie,Gillespie +Gilliam,Gilliam +Gilmer,Gilmer +Gilpin,Gilpin +Glacier,Glacier +Glades,Glades +Gladwin,Gladwin +Glascock,Glascock +Glasscock,Glasscock +Glenn,Glenn +Gloucester,Gloucester +Glynn,Glynn +Gogebic,Gogebic +Golden Valley,Golden Valley +Goliad,Goliad +Gonzales,Gonzales +Goochland,Goochland +Goodhue,Goodhue +Gooding,Gooding +Gordon,Gordon +Goshen,Goshen +Gosper,Gosper +Gove,Gove +Grady,Grady +Grafton,Grafton +Graham,Graham +Grainger,Grainger +Grand,Grand +Grand Forks,Grand Forks +Grand Isle,Grand Isle +Grand Traverse,Grand Traverse +Granite,Granite +Grant,Grant +Grant Parish,Grant Parish +Granville,Granville +Gratiot,Gratiot +Graves,Graves +Gray,Gray +Grays Harbor,Grays Harbor +Grayson,Grayson +Greeley,Greeley +Green,Green +Green Lake,Green Lake +Greenbrier,Greenbrier +Greene,Greene +Greenlee,Greenlee +Greensville,Greensville +Greenup,Greenup +Greenville,Greenville +Greenwood,Greenwood +Greer,Greer +Gregg,Gregg +Gregory,Gregory +Grenada,Grenada +Griggs,Griggs +Grimes,Grimes +Grundy,Grundy +Guadalupe,Guadalupe +Guam,Guam +Guanica Municipio,Guanica Municipio +Guayama Municipio,Guayama Municipio +Guayanilla Municipio,Guayanilla Municipio +Guaynabo Municipio,Guaynabo Municipio +Guernsey,Guernsey +Guilford,Guilford +Gulf,Gulf +Gunnison,Gunnison +Gurabo Municipio,Gurabo Municipio +Guthrie,Guthrie +Gwinnett,Gwinnett +Haakon,Haakon +Habersham,Habersham +Haines Borough,Haines Borough +Hale,Hale +Halifax,Halifax +Hall,Hall +Hamblen,Hamblen +Hamilton,Hamilton +Hamlin,Hamlin +Hampden,Hampden +Hampshire,Hampshire +Hampton,Hampton +Hampton city,Hampton city +Hancock,Hancock +Hand,Hand +Hanover,Hanover +Hansford,Hansford +Hanson,Hanson +Haralson,Haralson +Hardee,Hardee +Hardeman,Hardeman +Hardin,Hardin +Harding,Harding +Hardy,Hardy +Harford,Harford +Harlan,Harlan +Harmon,Harmon +Harnett,Harnett +Harney,Harney +Harper,Harper +Harris,Harris +Harrison,Harrison +Harrisonburg city,Harrisonburg city +Hart,Hart +Hartford,Hartford +Hartley,Hartley +Harvey,Harvey +Haskell,Haskell +Hatillo Municipio,Hatillo Municipio +Hawaii,Hawaii +Hawkins,Hawkins +Hayes,Hayes +Hays,Hays +Haywood,Haywood +Heard,Heard +Hemphill,Hemphill +Hempstead,Hempstead +Henderson,Henderson +Hendricks,Hendricks +Hendry,Hendry +Hennepin,Hennepin +Henrico,Henrico +Henry,Henry +Herkimer,Herkimer +Hernando,Hernando +Hertford,Hertford +Hettinger,Hettinger +Hickman,Hickman +Hickory,Hickory +Hidalgo,Hidalgo +Highland,Highland +Highlands,Highlands +Hill,Hill +Hillsborough,Hillsborough +Hillsdale,Hillsdale +Hinds,Hinds +Hinsdale,Hinsdale +Hitchcock,Hitchcock +Hocking,Hocking +Hockley,Hockley +Hodgeman,Hodgeman +Hoke,Hoke +Holmes,Holmes +Holt,Holt +Honolulu,Honolulu +Hood,Hood +Hood River,Hood River +Hooker,Hooker +Hoonah-Angoon Census Area,Hoonah-Angoon Census Area +Hopewell city,Hopewell city +Hopkins,Hopkins +Hormigueros Municipio,Hormigueros Municipio +Horry,Horry +Hot Spring,Hot Spring +Hot Springs,Hot Springs +Houghton,Houghton +Houston,Houston +Howard,Howard +Howell,Howell +Hubbard,Hubbard +Hudson,Hudson +Hudspeth,Hudspeth +Huerfano,Huerfano +Hughes,Hughes +Humacao Municipio,Humacao Municipio +Humboldt,Humboldt +Humphreys,Humphreys +Hunt,Hunt +Hunterdon,Hunterdon +Huntingdon,Huntingdon +Huntington,Huntington +Huron,Huron +Hutchinson,Hutchinson +Hyde,Hyde +Iberia Parish,Iberia Parish +Iberville Parish,Iberville Parish +Ida,Ida +Idaho,Idaho +Imperial,Imperial +Independence,Independence +Indian River,Indian River +Indiana,Indiana +Ingham,Ingham +Inyo,Inyo +Ionia,Ionia +Iosco,Iosco +Iowa,Iowa +Iredell,Iredell +Irion,Irion +Iron,Iron +Iroquois,Iroquois +Irwin,Irwin +Isabela Municipio,Isabela Municipio +Isabella,Isabella +Isanti,Isanti +Island,Island +Isle of Wight,Isle of Wight +Issaquena,Issaquena +Itasca,Itasca +Itawamba,Itawamba +Izard,Izard +Jack,Jack +Jackson,Jackson +Jackson Parish,Jackson Parish +James City,James City +Jasper,Jasper +Jay,Jay +Jayuya Municipio,Jayuya Municipio +Jeff Davis,Jeff Davis +Jefferson,Jefferson +Jefferson Davis,Jefferson Davis +Jefferson Davis Parish,Jefferson Davis Parish +Jefferson Parish,Jefferson Parish +Jenkins,Jenkins +Jennings,Jennings +Jerauld,Jerauld +Jerome,Jerome +Jersey,Jersey +Jessamine,Jessamine +Jewell,Jewell +Jim Hogg,Jim Hogg +Jim Wells,Jim Wells +Jo Daviess,Jo Daviess +Johnson,Johnson +Johnston,Johnston +Jones,Jones +Josephine,Josephine +Juab,Juab +Juana Diaz Municipio,Juana Diaz Municipio +Judith Basin,Judith Basin +Juncos Municipio,Juncos Municipio +Juneau,Juneau +Juneau City and Borough,Juneau City and Borough +Juniata,Juniata +Kalamazoo,Kalamazoo +Kalawao,Kalawao +Kalkaska,Kalkaska +Kanabec,Kanabec +Kanawha,Kanawha +Kandiyohi,Kandiyohi +Kane,Kane +Kankakee,Kankakee +Karnes,Karnes +Kauai,Kauai +Kaufman,Kaufman +Kay,Kay +Kearney,Kearney +Kearny,Kearny +Keith,Keith +Kemper,Kemper +Kenai Peninsula Borough,Kenai Peninsula Borough +Kendall,Kendall +Kenedy,Kenedy +Kennebec,Kennebec +Kenosha,Kenosha +Kent,Kent +Kenton,Kenton +Keokuk,Keokuk +Kern,Kern +Kerr,Kerr +Kershaw,Kershaw +Ketchikan Gateway Borough,Ketchikan Gateway Borough +Kewaunee,Kewaunee +Keweenaw,Keweenaw +Keya Paha,Keya Paha +Kidder,Kidder +Kimball,Kimball +Kimble,Kimble +King,King +King and Queen,King and Queen +King George,King George +King William,King William +Kingfisher,Kingfisher +Kingman,Kingman +Kings,Kings +Kingsbury,Kingsbury +Kinney,Kinney +Kiowa,Kiowa +Kit Carson,Kit Carson +Kitsap,Kitsap +Kittitas,Kittitas +Kittson,Kittson +Klamath,Klamath +Kleberg,Kleberg +Klickitat,Klickitat +Knott,Knott +Knox,Knox +Kodiak Island Borough,Kodiak Island Borough +Koochiching,Koochiching +Kootenai,Kootenai +Kosciusko,Kosciusko +Kossuth,Kossuth +La Crosse,La Crosse +La Paz,La Paz +La Plata,La Plata +La Salle,La Salle +La Salle Parish,La Salle Parish +Labette,Labette +Lac qui Parle,Lac qui Parle +Lackawanna,Lackawanna +Laclede,Laclede +Lafayette,Lafayette +Lafayette Parish,Lafayette Parish +Lafourche Parish,Lafourche Parish +LaGrange,LaGrange +Lajas Municipio,Lajas Municipio +Lake,Lake +Lake and Peninsula Borough,Lake and Peninsula Borough +Lake of the Woods,Lake of the Woods +Lamar,Lamar +Lamb,Lamb +Lamoille,Lamoille +LaMoure,LaMoure +Lampasas,Lampasas +Lancaster,Lancaster +Lander,Lander +Lane,Lane +Langlade,Langlade +Lanier,Lanier +Lapeer,Lapeer +LaPorte,LaPorte +Laramie,Laramie +Lares Municipio,Lares Municipio +Larimer,Larimer +Larue,Larue +Las Animas,Las Animas +Las Marias Municipio,Las Marias Municipio +Las Piedras Municipio,Las Piedras Municipio +LaSalle,LaSalle +Lassen,Lassen +Latah,Latah +Latimer,Latimer +Lauderdale,Lauderdale +Laurel,Laurel +Laurens,Laurens +Lavaca,Lavaca +Lawrence,Lawrence +Le Flore,Le Flore +Le Sueur,Le Sueur +Lea,Lea +Leake,Leake +Leavenworth,Leavenworth +Lebanon,Lebanon +Lee,Lee +Leelanau,Leelanau +Leflore,Leflore +Lehigh,Lehigh +Lemhi,Lemhi +Lenawee,Lenawee +Lenoir,Lenoir +Leon,Leon +Leslie,Leslie +Letcher,Letcher +Levy,Levy +Lewis,Lewis +Lewis and Clark,Lewis and Clark +Lexington,Lexington +Lexington city,Lexington city +Liberty,Liberty +Licking,Licking +Limestone,Limestone +Lincoln,Lincoln +Lincoln Parish,Lincoln Parish +Linn,Linn +Lipscomb,Lipscomb +Litchfield,Litchfield +Little River,Little River +Live Oak,Live Oak +Livingston,Livingston +Livingston Parish,Livingston Parish +Llano,Llano +Logan,Logan +Loiza Municipio,Loiza Municipio +Long,Long +Lonoke,Lonoke +Lorain,Lorain +Los Alamos,Los Alamos +Los Angeles,Los Angeles +Loudon,Loudon +Loudoun,Loudoun +Louisa,Louisa +Loup,Loup +Love,Love +Loving,Loving +Lowndes,Lowndes +Lubbock,Lubbock +Lucas,Lucas +Luce,Luce +Lumpkin,Lumpkin +Luna,Luna +Lunenburg,Lunenburg +Luquillo Municipio,Luquillo Municipio +Luzerne,Luzerne +Lycoming,Lycoming +Lyman,Lyman +Lynchburg city,Lynchburg city +Lynn,Lynn +Lyon,Lyon +Mackinac,Mackinac +Macomb,Macomb +Macon,Macon +Macoupin,Macoupin +Madera,Madera +Madison,Madison +Madison Parish,Madison Parish +Magoffin,Magoffin +Mahaska,Mahaska +Mahnomen,Mahnomen +Mahoning,Mahoning +Major,Major +Malheur,Malheur +Manassas city,Manassas city +Manassas Park city,Manassas Park city +Manatee,Manatee +Manati Municipio,Manati Municipio +Manistee,Manistee +Manitowoc,Manitowoc +Manu'a District,Manu'a District +Marathon,Marathon +Marengo,Marengo +Maricao Municipio,Maricao Municipio +Maricopa,Maricopa +Maries,Maries +Marin,Marin +Marinette,Marinette +Marion,Marion +Mariposa,Mariposa +Marlboro,Marlboro +Marquette,Marquette +Marshall,Marshall +Martin,Martin +Martinsville city,Martinsville city +Mason,Mason +Massac,Massac +Matagorda,Matagorda +Matanuska-Susitna Borough,Matanuska-Susitna Borough +Mathews,Mathews +Maui,Maui +Maunabo Municipio,Maunabo Municipio +Maury,Maury +Maverick,Maverick +Mayaguez Municipio,Mayaguez Municipio +Mayes,Mayes +McClain,McClain +McCone,McCone +McCook,McCook +McCormick,McCormick +McCracken,McCracken +McCreary,McCreary +McCulloch,McCulloch +McCurtain,McCurtain +McDonald,McDonald +McDonough,McDonough +McDowell,McDowell +McDuffie,McDuffie +McHenry,McHenry +McIntosh,McIntosh +McKean,McKean +McKenzie,McKenzie +McKinley,McKinley +McLean,McLean +McLennan,McLennan +McLeod,McLeod +McMinn,McMinn +McMullen,McMullen +McNairy,McNairy +McPherson,McPherson +Meade,Meade +Meagher,Meagher +Mecklenburg,Mecklenburg +Mecosta,Mecosta +Medina,Medina +Meeker,Meeker +Meigs,Meigs +Mellette,Mellette +Menard,Menard +Mendocino,Mendocino +Menifee,Menifee +Menominee,Menominee +Merced,Merced +Mercer,Mercer +Meriwether,Meriwether +Merrick,Merrick +Merrimack,Merrimack +Mesa,Mesa +Metcalfe,Metcalfe +Miami,Miami +Miami-Dade,Miami-Dade +Middlesex,Middlesex +Midland,Midland +Midway Islands,Midway Islands +Mifflin,Mifflin +Milam,Milam +Millard,Millard +Mille Lacs,Mille Lacs +Miller,Miller +Mills,Mills +Milwaukee,Milwaukee +Miner,Miner +Mineral,Mineral +Mingo,Mingo +Minidoka,Minidoka +Minnehaha,Minnehaha +Missaukee,Missaukee +Mississippi,Mississippi +Missoula,Missoula +Mitchell,Mitchell +Mobile,Mobile +Moca Municipio,Moca Municipio +Modoc,Modoc +Moffat,Moffat +Mohave,Mohave +Moniteau,Moniteau +Monmouth,Monmouth +Mono,Mono +Monona,Monona +Monongalia,Monongalia +Monroe,Monroe +Montague,Montague +Montcalm,Montcalm +Monterey,Monterey +Montezuma,Montezuma +Montgomery,Montgomery +Montmorency,Montmorency +Montour,Montour +Montrose,Montrose +Moody,Moody +Moore,Moore +Mora,Mora +Morehouse Parish,Morehouse Parish +Morgan,Morgan +Morovis Municipio,Morovis Municipio +Morrill,Morrill +Morris,Morris +Morrison,Morrison +Morrow,Morrow +Morton,Morton +Motley,Motley +Moultrie,Moultrie +Mountrail,Mountrail +Mower,Mower +Muhlenberg,Muhlenberg +Multnomah,Multnomah +Murray,Murray +Muscatine,Muscatine +Muscogee,Muscogee +Muskegon,Muskegon +Muskingum,Muskingum +Muskogee,Muskogee +Musselshell,Musselshell +Nacogdoches,Nacogdoches +Naguabo Municipio,Naguabo Municipio +Nance,Nance +Nantucket,Nantucket +Napa,Napa +Naranjito Municipio,Naranjito Municipio +Nash,Nash +Nassau,Nassau +Natchitoches Parish,Natchitoches Parish +Natrona,Natrona +Navajo,Navajo +Navarro,Navarro +Nelson,Nelson +Nemaha,Nemaha +Neosho,Neosho +Neshoba,Neshoba +Ness,Ness +Nevada,Nevada +New Castle,New Castle +New Hanover,New Hanover +New Haven,New Haven +New Kent,New Kent +New London,New London +New Madrid,New Madrid +New York,New York +Newaygo,Newaygo +Newberry,Newberry +Newport,Newport +Newport News city,Newport News city +Newton,Newton +Nez Perce,Nez Perce +Niagara,Niagara +Nicholas,Nicholas +Nicollet,Nicollet +Niobrara,Niobrara +Noble,Noble +Nobles,Nobles +Nodaway,Nodaway +Nolan,Nolan +Nome Census Area,Nome Census Area +Norfolk,Norfolk +Norfolk city,Norfolk city +Norman,Norman +North Slope Borough,North Slope Borough +Northampton,Northampton +Northern Islands Municipality,Northern Islands Municipality +Northumberland,Northumberland +Northwest Arctic Borough,Northwest Arctic Borough +Norton,Norton +Norton city,Norton city +Nottoway,Nottoway +Nowata,Nowata +Noxubee,Noxubee +Nuckolls,Nuckolls +Nueces,Nueces +Nye,Nye +Oakland,Oakland +Obion,Obion +O'Brien,O'Brien +Ocean,Ocean +Oceana,Oceana +Ochiltree,Ochiltree +Oconee,Oconee +Oconto,Oconto +Ogemaw,Ogemaw +Ogle,Ogle +Oglethorpe,Oglethorpe +Ohio,Ohio +Okaloosa,Okaloosa +Okanogan,Okanogan +Okeechobee,Okeechobee +Okfuskee,Okfuskee +Oklahoma,Oklahoma +Okmulgee,Okmulgee +Oktibbeha,Oktibbeha +Oldham,Oldham +Oliver,Oliver +Olmsted,Olmsted +Oneida,Oneida +Onondaga,Onondaga +Onslow,Onslow +Ontario,Ontario +Ontonagon,Ontonagon +Orange,Orange +Orangeburg,Orangeburg +Oregon,Oregon +Orleans,Orleans +Orleans Parish,Orleans Parish +Orocovis Municipio,Orocovis Municipio +Osage,Osage +Osborne,Osborne +Osceola,Osceola +Oscoda,Oscoda +Oswego,Oswego +Otero,Otero +Otoe,Otoe +Otsego,Otsego +Ottawa,Ottawa +Otter Tail,Otter Tail +Ouachita,Ouachita +Ouachita Parish,Ouachita Parish +Ouray,Ouray +Outagamie,Outagamie +Overton,Overton +Owen,Owen +Owsley,Owsley +Owyhee,Owyhee +Oxford,Oxford +Ozark,Ozark +Ozaukee,Ozaukee +Pacific,Pacific +Page,Page +Palm Beach,Palm Beach +Palo Alto,Palo Alto +Palo Pinto,Palo Pinto +Pamlico,Pamlico +Panola,Panola +Park,Park +Parke,Parke +Parker,Parker +Parmer,Parmer +Pasco,Pasco +Pasquotank,Pasquotank +Passaic,Passaic +Patillas Municipio,Patillas Municipio +Patrick,Patrick +Paulding,Paulding +Pawnee,Pawnee +Payette,Payette +Payne,Payne +Peach,Peach +Pearl River,Pearl River +Pecos,Pecos +Pembina,Pembina +Pemiscot,Pemiscot +Pend Oreille,Pend Oreille +Pender,Pender +Pendleton,Pendleton +Pennington,Pennington +Penobscot,Penobscot +Penuelas Municipio,Penuelas Municipio +Peoria,Peoria +Pepin,Pepin +Perkins,Perkins +Perquimans,Perquimans +Perry,Perry +Pershing,Pershing +Person,Person +Petersburg Census Area,Petersburg Census Area +Petersburg city,Petersburg city +Petroleum,Petroleum +Pettis,Pettis +Phelps,Phelps +Philadelphia,Philadelphia +Phillips,Phillips +Piatt,Piatt +Pickaway,Pickaway +Pickens,Pickens +Pickett,Pickett +Pierce,Pierce +Pike,Pike +Pima,Pima +Pinal,Pinal +Pine,Pine +Pinellas,Pinellas +Pipestone,Pipestone +Piscataquis,Piscataquis +Pitkin,Pitkin +Pitt,Pitt +Pittsburg,Pittsburg +Pittsylvania,Pittsylvania +Piute,Piute +Placer,Placer +Plaquemines Parish,Plaquemines Parish +Platte,Platte +Pleasants,Pleasants +Plumas,Plumas +Plymouth,Plymouth +Pocahontas,Pocahontas +Poinsett,Poinsett +Pointe Coupee Parish,Pointe Coupee Parish +Polk,Polk +Ponce Municipio,Ponce Municipio +Pondera,Pondera +Pontotoc,Pontotoc +Pope,Pope +Poquoson city,Poquoson city +Portage,Portage +Porter,Porter +Portsmouth city,Portsmouth city +Posey,Posey +Pottawatomie,Pottawatomie +Pottawattamie,Pottawattamie +Potter,Potter +Powder River,Powder River +Powell,Powell +Power,Power +Poweshiek,Poweshiek +Powhatan,Powhatan +Prairie,Prairie +Pratt,Pratt +Preble,Preble +Prentiss,Prentiss +Presidio,Presidio +Presque Isle,Presque Isle +Preston,Preston +Price,Price +Prince Edward,Prince Edward +Prince George,Prince George +Prince George's,Prince George's +Prince of Wales-Hyder Census Area,Prince of Wales-Hyder Census Area +Prince William,Prince William +Providence,Providence +Prowers,Prowers +Pueblo,Pueblo +Pulaski,Pulaski +Pushmataha,Pushmataha +Putnam,Putnam +Quay,Quay +Quebradillas Municipio,Quebradillas Municipio +Queen Anne's,Queen Anne's +Queens,Queens +Quitman,Quitman +Rabun,Rabun +Racine,Racine +Radford city,Radford city +Rains,Rains +Raleigh,Raleigh +Ralls,Ralls +Ramsey,Ramsey +Randall,Randall +Randolph,Randolph +Rankin,Rankin +Ransom,Ransom +Rapides Parish,Rapides Parish +Rappahannock,Rappahannock +Ravalli,Ravalli +Rawlins,Rawlins +Ray,Ray +Reagan,Reagan +Real,Real +Red Lake,Red Lake +Red River,Red River +Red River Parish,Red River Parish +Red Willow,Red Willow +Redwood,Redwood +Reeves,Reeves +Refugio,Refugio +Reno,Reno +Rensselaer,Rensselaer +Renville,Renville +Republic,Republic +Reynolds,Reynolds +Rhea,Rhea +Rice,Rice +Rich,Rich +Richardson,Richardson +Richland,Richland +Richland Parish,Richland Parish +Richmond,Richmond +Richmond city,Richmond city +Riley,Riley +Rincon Municipio,Rincon Municipio +Ringgold,Ringgold +Rio Arriba,Rio Arriba +Rio Blanco,Rio Blanco +Rio Grande,Rio Grande +Rio Grande Municipio,Rio Grande Municipio +Ripley,Ripley +Ritchie,Ritchie +Riverside,Riverside +Roane,Roane +Roanoke,Roanoke +Roanoke city,Roanoke city +Roberts,Roberts +Robertson,Robertson +Robeson,Robeson +Rock,Rock +Rock Island,Rock Island +Rockbridge,Rockbridge +Rockcastle,Rockcastle +Rockdale,Rockdale +Rockingham,Rockingham +Rockland,Rockland +Rockwall,Rockwall +Roger Mills,Roger Mills +Rogers,Rogers +Rolette,Rolette +Rooks,Rooks +Roosevelt,Roosevelt +Roscommon,Roscommon +Rose Island,Rose Island +Roseau,Roseau +Rosebud,Rosebud +Ross,Ross +Rota Municipality,Rota Municipality +Routt,Routt +Rowan,Rowan +Runnels,Runnels +Rush,Rush +Rusk,Rusk +Russell,Russell +Rutherford,Rutherford +Rutland,Rutland +Sabana Grande Municipio,Sabana Grande Municipio +Sabine,Sabine +Sabine Parish,Sabine Parish +Sac,Sac +Sacramento,Sacramento +Sagadahoc,Sagadahoc +Saginaw,Saginaw +Saguache,Saguache +Saipan Municipality,Saipan Municipality +Salem,Salem +Salem city,Salem city +Salinas Municipio,Salinas Municipio +Saline,Saline +Salt Lake,Salt Lake +Saluda,Saluda +Sampson,Sampson +San Augustine,San Augustine +San Benito,San Benito +San Bernardino,San Bernardino +San Diego,San Diego +San Francisco,San Francisco +San German Municipio,San German Municipio +San Jacinto,San Jacinto +San Joaquin,San Joaquin +San Juan,San Juan +San Juan Municipio,San Juan Municipio +San Lorenzo Municipio,San Lorenzo Municipio +San Luis Obispo,San Luis Obispo +San Mateo,San Mateo +San Miguel,San Miguel +San Patricio,San Patricio +San Saba,San Saba +San Sebastian Municipio,San Sebastian Municipio +Sanborn,Sanborn +Sanders,Sanders +Sandoval,Sandoval +Sandusky,Sandusky +Sangamon,Sangamon +Sanilac,Sanilac +Sanpete,Sanpete +Santa Barbara,Santa Barbara +Santa Clara,Santa Clara +Santa Cruz,Santa Cruz +Santa Fe,Santa Fe +Santa Isabel Municipio,Santa Isabel Municipio +Santa Rosa,Santa Rosa +Sarasota,Sarasota +Saratoga,Saratoga +Sargent,Sargent +Sarpy,Sarpy +Sauk,Sauk +Saunders,Saunders +Sawyer,Sawyer +Schenectady,Schenectady +Schleicher,Schleicher +Schley,Schley +Schoharie,Schoharie +Schoolcraft,Schoolcraft +Schuyler,Schuyler +Schuylkill,Schuylkill +Scioto,Scioto +Scotland,Scotland +Scott,Scott +Scotts Bluff,Scotts Bluff +Screven,Screven +Scurry,Scurry +Searcy,Searcy +Sebastian,Sebastian +Sedgwick,Sedgwick +Seminole,Seminole +Seneca,Seneca +Sequatchie,Sequatchie +Sequoyah,Sequoyah +Sevier,Sevier +Seward,Seward +Shackelford,Shackelford +Shannon,Shannon +Sharkey,Sharkey +Sharp,Sharp +Shasta,Shasta +Shawano,Shawano +Shawnee,Shawnee +Sheboygan,Sheboygan +Shelby,Shelby +Shenandoah,Shenandoah +Sherburne,Sherburne +Sheridan,Sheridan +Sherman,Sherman +Shiawassee,Shiawassee +Shoshone,Shoshone +Sibley,Sibley +Sierra,Sierra +Silver Bow,Silver Bow +Simpson,Simpson +Sioux,Sioux +Siskiyou,Siskiyou +Sitka City and Borough,Sitka City and Borough +Skagit,Skagit +Skagway Municipality,Skagway Municipality +Skamania,Skamania +Slope,Slope +Smith,Smith +Smyth,Smyth +Snohomish,Snohomish +Snyder,Snyder +Socorro,Socorro +Solano,Solano +Somerset,Somerset +Somervell,Somervell +Sonoma,Sonoma +Southampton,Southampton +Southeast Fairbanks Census Area,Southeast Fairbanks Census Area +Spalding,Spalding +Spartanburg,Spartanburg +Spencer,Spencer +Spink,Spink +Spokane,Spokane +Spotsylvania,Spotsylvania +St. Bernard Parish,St. Bernard Parish +St. Charles,St. Charles +St. Charles Parish,St. Charles Parish +St. Clair,St. Clair +St. Croix,St. Croix +St. Croix Island,St. Croix Island +St. Francis,St. Francis +St. Francois,St. Francois +St. Helena Parish,St. Helena Parish +St. James Parish,St. James Parish +St. John Island,St. John Island +St. John the Baptist Parish,St. John the Baptist Parish +St. Johns,St. Johns +St. Joseph,St. Joseph +St. Landry Parish,St. Landry Parish +St. Lawrence,St. Lawrence +St. Louis,St. Louis +St. Louis city,St. Louis city +St. Lucie,St. Lucie +St. Martin Parish,St. Martin Parish +St. Mary Parish,St. Mary Parish +St. Mary's,St. Mary's +St. Tammany Parish,St. Tammany Parish +St. Thomas Island,St. Thomas Island +Stafford,Stafford +Stanislaus,Stanislaus +Stanley,Stanley +Stanly,Stanly +Stanton,Stanton +Stark,Stark +Starke,Starke +Starr,Starr +Staunton city,Staunton city +Ste. Genevieve,Ste. Genevieve +Stearns,Stearns +Steele,Steele +Stephens,Stephens +Stephenson,Stephenson +Sterling,Sterling +Steuben,Steuben +Stevens,Stevens +Stewart,Stewart +Stillwater,Stillwater +Stoddard,Stoddard +Stokes,Stokes +Stone,Stone +Stonewall,Stonewall +Storey,Storey +Story,Story +Strafford,Strafford +Stutsman,Stutsman +Sublette,Sublette +Suffolk,Suffolk +Suffolk city,Suffolk city +Sullivan,Sullivan +Sully,Sully +Summers,Summers +Summit,Summit +Sumner,Sumner +Sumter,Sumter +Sunflower,Sunflower +Surry,Surry +Susquehanna,Susquehanna +Sussex,Sussex +Sutter,Sutter +Sutton,Sutton +Suwannee,Suwannee +Swain,Swain +Swains Island,Swains Island +Sweet Grass,Sweet Grass +Sweetwater,Sweetwater +Swift,Swift +Swisher,Swisher +Switzerland,Switzerland +Talbot,Talbot +Taliaferro,Taliaferro +Talladega,Talladega +Tallahatchie,Tallahatchie +Tallapoosa,Tallapoosa +Tama,Tama +Taney,Taney +Tangipahoa Parish,Tangipahoa Parish +Taos,Taos +Tarrant,Tarrant +Tate,Tate +Tattnall,Tattnall +Taylor,Taylor +Tazewell,Tazewell +Tehama,Tehama +Telfair,Telfair +Teller,Teller +Tensas Parish,Tensas Parish +Terrebonne Parish,Terrebonne Parish +Terrell,Terrell +Terry,Terry +Teton,Teton +Texas,Texas +Thayer,Thayer +Thomas,Thomas +Throckmorton,Throckmorton +Thurston,Thurston +Tift,Tift +Tillamook,Tillamook +Tillman,Tillman +Tinian Municipality,Tinian Municipality +Tioga,Tioga +Tippah,Tippah +Tippecanoe,Tippecanoe +Tipton,Tipton +Tishomingo,Tishomingo +Titus,Titus +Toa Alta Municipio,Toa Alta Municipio +Toa Baja Municipio,Toa Baja Municipio +Todd,Todd +Tolland,Tolland +Tom Green,Tom Green +Tompkins,Tompkins +Tooele,Tooele +Toole,Toole +Toombs,Toombs +Torrance,Torrance +Towner,Towner +Towns,Towns +Traill,Traill +Transylvania,Transylvania +Traverse,Traverse +Travis,Travis +Treasure,Treasure +Trego,Trego +Trempealeau,Trempealeau +Treutlen,Treutlen +Trigg,Trigg +Trimble,Trimble +Trinity,Trinity +Tripp,Tripp +Troup,Troup +Trousdale,Trousdale +Trujillo Alto Municipio,Trujillo Alto Municipio +Trumbull,Trumbull +Tucker,Tucker +Tulare,Tulare +Tulsa,Tulsa +Tunica,Tunica +Tuolumne,Tuolumne +Turner,Turner +Tuscaloosa,Tuscaloosa +Tuscarawas,Tuscarawas +Tuscola,Tuscola +Twiggs,Twiggs +Twin Falls,Twin Falls +Tyler,Tyler +Tyrrell,Tyrrell +Uinta,Uinta +Uintah,Uintah +Ulster,Ulster +Umatilla,Umatilla +Unicoi,Unicoi +Union,Union +Union Parish,Union Parish +Upshur,Upshur +Upson,Upson +Upton,Upton +Utah,Utah +Utuado Municipio,Utuado Municipio +Uvalde,Uvalde +Val Verde,Val Verde +Valdez-Cordova Census Area,Valdez-Cordova Census Area +Valencia,Valencia +Valley,Valley +Van Buren,Van Buren +Van Wert,Van Wert +Van Zandt,Van Zandt +Vance,Vance +Vanderburgh,Vanderburgh +Vega Alta Municipio,Vega Alta Municipio +Vega Baja Municipio,Vega Baja Municipio +Venango,Venango +Ventura,Ventura +Vermilion,Vermilion +Vermilion Parish,Vermilion Parish +Vermillion,Vermillion +Vernon,Vernon +Vernon Parish,Vernon Parish +Victoria,Victoria +Vieques Municipio,Vieques Municipio +Vigo,Vigo +Vilas,Vilas +Villalba Municipio,Villalba Municipio +Vinton,Vinton +Virginia Beach city,Virginia Beach city +Volusia,Volusia +Wabash,Wabash +Wabasha,Wabasha +Wabaunsee,Wabaunsee +Wade Hampton Census Area,Wade Hampton Census Area +Wadena,Wadena +Wagoner,Wagoner +Wahkiakum,Wahkiakum +Wake,Wake +Wakulla,Wakulla +Waldo,Waldo +Walker,Walker +Walla Walla,Walla Walla +Wallace,Wallace +Waller,Waller +Wallowa,Wallowa +Walsh,Walsh +Walthall,Walthall +Walton,Walton +Walworth,Walworth +Wapello,Wapello +Ward,Ward +Ware,Ware +Warren,Warren +Warrick,Warrick +Wasatch,Wasatch +Wasco,Wasco +Waseca,Waseca +Washakie,Washakie +Washburn,Washburn +Washington,Washington +Washington Parish,Washington Parish +Washita,Washita +Washoe,Washoe +Washtenaw,Washtenaw +Watauga,Watauga +Watonwan,Watonwan +Waukesha,Waukesha +Waupaca,Waupaca +Waushara,Waushara +Wayne,Wayne +Waynesboro city,Waynesboro city +Weakley,Weakley +Webb,Webb +Weber,Weber +Webster,Webster +Webster Parish,Webster Parish +Weld,Weld +Wells,Wells +West Baton Rouge Parish,West Baton Rouge Parish +West Carroll Parish,West Carroll Parish +West Feliciana Parish,West Feliciana Parish +Westchester,Westchester +Western District,Western District +Westmoreland,Westmoreland +Weston,Weston +Wetzel,Wetzel +Wexford,Wexford +Wharton,Wharton +Whatcom,Whatcom +Wheatland,Wheatland +Wheeler,Wheeler +White,White +White Pine,White Pine +Whiteside,Whiteside +Whitfield,Whitfield +Whitley,Whitley +Whitman,Whitman +Wibaux,Wibaux +Wichita,Wichita +Wicomico,Wicomico +Wilbarger,Wilbarger +Wilcox,Wilcox +Wilkes,Wilkes +Wilkin,Wilkin +Wilkinson,Wilkinson +Will,Will +Willacy,Willacy +Williams,Williams +Williamsburg,Williamsburg +Williamsburg city,Williamsburg city +Williamson,Williamson +Wilson,Wilson +Winchester city,Winchester city +Windham,Windham +Windsor,Windsor +Winkler,Winkler +Winn Parish,Winn Parish +Winnebago,Winnebago +Winneshiek,Winneshiek +Winona,Winona +Winston,Winston +Wirt,Wirt +Wise,Wise +Wolfe,Wolfe +Wood,Wood +Woodbury,Woodbury +Woodford,Woodford +Woodruff,Woodruff +Woods,Woods +Woodson,Woodson +Woodward,Woodward +Worcester,Worcester +Worth,Worth +Wrangell City and Borough,Wrangell City and Borough +Wright,Wright +Wyandot,Wyandot +Wyandotte,Wyandotte +Wyoming,Wyoming +Wythe,Wythe +Yabucoa Municipio,Yabucoa Municipio +Yadkin,Yadkin +Yakima,Yakima +Yakutat City and Borough,Yakutat City and Borough +Yalobusha,Yalobusha +Yamhill,Yamhill +Yancey,Yancey +Yankton,Yankton +Yates,Yates +Yauco Municipio,Yauco Municipio +Yavapai,Yavapai +Yazoo,Yazoo +Yell,Yell +Yellow Medicine,Yellow Medicine +Yellowstone,Yellowstone +Yoakum,Yoakum +Yolo,Yolo +York,York +Young,Young +Yuba,Yuba +Yukon-Koyukuk Census Area,Yukon-Koyukuk Census Area +Yuma,Yuma +Zapata,Zapata +Zavala,Zavala +Ziebach,Ziebach diff --git a/nad_ch/application/validation_files/domain/Domain_DeliverTyp.csv b/nad_ch/application/validation_files/domain/Domain_DeliverTyp.csv new file mode 100644 index 0000000..6cae6d1 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_DeliverTyp.csv @@ -0,0 +1,4 @@ +Source,Destination +Subaddress Included,Subaddress Included +Subaddress Excluded,Subaddress Excluded +Unstated,Unstated diff --git a/nad_ch/application/validation_files/domain/Domain_Placement.csv b/nad_ch/application/validation_files/domain/Domain_Placement.csv new file mode 100644 index 0000000..0a32cb2 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_Placement.csv @@ -0,0 +1,11 @@ +Source,Destination +Linear Geocode,Linear Geocode +Other,Other +Parcel - Centroid,Parcel - Centroid +Parcel - Other,Parcel - Other/Manual Placement +Property Access,Property Access Point +Site,Site Placement +Structure - Entrance,Structure - Entrance +Structure - Interior,Structure - Interior Unit Location +Structure - Rooftop,Structure - Rooftop +Unknown,Unknown diff --git a/nad_ch/application/validation_files/domain/Domain_St_PosDir.csv b/nad_ch/application/validation_files/domain/Domain_St_PosDir.csv new file mode 100644 index 0000000..f3a7b09 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_St_PosDir.csv @@ -0,0 +1,17 @@ +Source,Destination +East,East +Est,Est +Nord,Nord +Nord-Est,Nord-Est +Nord-Ouest,Nord-Ouest +North,North +Northeast,Northeast +Northwest,Northwest +Ouest,Ouest +South,South +Southeast,Southeast +Southwest,Southwest +Sud,Sud +Sud-Est,Sud-Est +Sud-Ouest,Sud-Ouest +West,West diff --git a/nad_ch/application/validation_files/domain/Domain_St_PosTyp.csv b/nad_ch/application/validation_files/domain/Domain_St_PosTyp.csv new file mode 100644 index 0000000..932cda7 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_St_PosTyp.csv @@ -0,0 +1,448 @@ +Source,Destination,DateAdded +Abbey,Abbey,NENA MN 1/30/21 +Access,Access, +Access Road,Access Road,4/8/2020 +Acres,Acres, +Airport,Airport,NENA NY 12/7/21 +Alcove,Alcove, +Alle,Alle,NENA MN 9/30/20 +Alley,Alley,Pub28 +Annex,Annex, +Approach,Approach, +Arc,Arc,NENA CA 12/7/21 +Arcade,Arcade,Pub28 +Arch,Arch,8/5/2020 +Arroyo,Arroyo, +Avenida,Avenida, +Avenue,Avenue,Pub28 +Avenue Circle,Avenue Circle,8/5/2020 +Avenue Court,Avenue Court,4/8/2020 +Avenue Drive,Avenue Drive,CO 8/10/20 +Avenue Footway,Avenue Footway,MA 8/6/20 +Avenue Lane,Avenue Lane,CO 8/10/20 +Avenue Loop,Avenue Loop,8/5/2020 +Avenue Path,Avenue Path,NENA MN 9/30/20 +Avenue Place,Avenue Place,8/5/2020 +Avenue Terrace,Avenue Terrace,MA 8/6/20 +Avenue Way,Avenue Way,CO 8/10/20 +Bahia,Bahia, +Bank,Bank, +Bay,Bay, +Bayou,Bayou,Pub28 +Bayway,Bayway,4/8/2020 +Beach,Beach,Pub28 +Bend,Bend,Pub28 +Bluff,Bluff,Pub28 +Bluffs,Bluffs,Pub28 +Boardwalk,Boardwalk,4/8/2020 +Bottom,Bottom,Pub28 +Boulevard,Boulevard,Pub28 +Branch,Branch,Pub28 +Bridge,Bridge,Pub28 +Brook,Brook,Pub28 +Brooks,Brooks,Pub28 +Bureau of Indian Affairs Highway,Bureau of Indian Affairs Highway,5/21/2020 +Bureau of Indian Affairs Route,Bureau of Indian Affairs Route, +Burg,Burg,Pub28 +Burgs,Burgs,Pub28 +Bypass,Bypass,Pub28 +Byway,Byway,MA 8/6/20 +Calle,Calle, +Caminito,Caminito, +Camino,Camino, +Camp,Camp,Pub28 +Canyon,Canyon,Pub28 +Cape,Cape,Pub28 +Cartway,Cartway,8/5/2020 +Causeway,Causeway,Pub28 +Center,Center,Pub28 +Centers,Centers,Pub28 +Centre,Centre,NENA NJ 6/16/22 +Cerrada,Cerrada, +Channel,Channel,NENA MN 1/30/21 +Chase,Chase, +Chemin,Chemin,8/5/2020 +Circle,Circle,Pub28 +Circle Drive,Circle Drive,MA 8/6/20 +Circles,Circles,Pub28 +Circuit,Circuit,MA 8/6/20 +Circulo,Circulo, +Circus,Circus,4/8/2020 +Cliff,Cliff,Pub28 +Cliffs,Cliffs,Pub28 +Close,Close, +Club,Club,Pub28 +Cluster,Cluster,4/8/2020 +Coast Highway,Coast Highway,8/5/2020 +Common,Common,Pub28 +Commons,Commons,Pub28 +Concession Road,Concession Road,NENA Dufferin County 1/31/23 +Concourse,Concourse, +Connect,Connect,4/8/2020 +Connector,Connector, +Corner,Corner,Pub28 +Corners,Corners,Pub28 +Corridor,Corridor,4/8/2020 +Corso,Corso,NENA NJ 12/7/21 +Corta,Corta, +Corte,Corte, +County Forest Road,County Forest Road, +County Highway,County Highway, +County Road,County Road, +County Route,County Route, +County State Aid Highway,County State Aid Highway,8/5/2020 +Cours,Cours,NENA NJ 12/7/21 +Course,Course,Pub28 +Court,Court,Pub28 +Court Circle,Court Circle,MA 8/6/20 +Court Place,Court Place,MA 8/6/20 +Court Street,Court Street,MA 8/6/20 +Court Terrace,Court Terrace,MA 8/6/20 +Court Way,Court Way,MA 8/6/20 +Courts,Courts,Pub28 +Cove,Cove,Pub28 +Coves,Coves,Pub28 +Creek,Creek,Pub28 +Crescent,Crescent,Pub28 +Crest,Crest,Pub28 +Cross,Cross,4/8/2020 +Crossing,Crossing,Pub28 +Crossings,Crossings,NENA MN 1/30/21 +Crossover,Crossover,NENA LA Baton Rouge 6/16/22 +Crossroad,Crossroad,Pub28 +Crossroads,Crossroads,Pub28 +Crossway,Crossway,4/8/2020 +Curve,Curve,Pub28 +Cutoff,Cutoff,4/8/2020 +Cutoff Road,Cutoff Road,MA 8/6/20 +Cutting,Cutting,4/8/2020 +Dale,Dale,Pub28 +Dam,Dam,Pub28 +Dell,Dell,4/8/2020 +Divide,Divide,Pub28 +Dock,Dock,NENA NY 12/7/21 +Down,Down,4/8/2020 +Downs,Downs, +Draw,Draw, +Drift,Drift,4/8/2020 +Drive,Drive,Pub28 +Drive Circle,Drive Circle,MA 8/6/20 +Drive Lane,Drive Lane,MA 8/6/20 +Drive Road,Drive Road,CO 8/10/20 +Drives,Drives,Pub28 +Driveway,Driveway,4/8/2020 +Echo,Echo,NENA MN 1/30/21 +Edge,Edge,NENA MN 1/30/21 +End,End, +Entrada,Entrada, +Entrance,Entrance,NENA MN 1/30/21 +Entry,Entry,NENA MN 1/30/21 +Esplanade,Esplanade, +Estate,Estate,Pub28 +Estates,Estates,Pub28 +Exchange,Exchange, +Exit,Exit,4/8/2020 +Expressway,Expressway,Pub28 +Extension,Extension,Pub28 +Extensions,Extensions,Pub28 +Fairway,Fairway, +Fall,Fall,Pub28 +Falls,Falls,Pub28 +Fare,Fare,4/8/2020 +Farm,Farm,4/8/2020 +Farm to Market,Farm to Market, +Federal-Aid Secondary Highway,Federal-Aid Secondary Highway, +Ferry,Ferry,Pub28 +Field,Field,Pub28 +Fields,Fields,Pub28 +Fire Road,Fire Road,MA 8/6/20 +Flat,Flat,Pub28 +Flats,Flats,Pub28 +Flowage,Flowage,NENA MN 1/30/21 +Flyway,Flyway,4/8/2020 +Ford,Ford,Pub28 +Fords,Fords,Pub28 +Fordway,Fordway,MA 8/6/20 +Forest,Forest,Pub28 +Forest Highway,Forest Highway,NENA MN 1/30/21 +Forest Road,Forest Road,8/5/2020 +Forge,Forge,Pub28 +Forges,Forges,Pub28 +Fork,Fork,Pub28 +Forks,Forks,Pub28 +Fort,Fort,Pub28 +Freeway,Freeway,Pub28 +Front,Front, +Furlong,Furlong,MA 8/6/20 +Gables,Gables,NENA MN 1/30/21 +Garden,Garden,Pub28 +Gardens,Gardens,Pub28 +Garth,Garth,4/8/2020 +Gate,Gate, +Gates,Gates,4/8/2020 +Gateway,Gateway,Pub28 +Glade,Glade,4/8/2020 +Glen,Glen,Pub28 +Glens,Glens,Pub28 +Gorge,Gorge,4/8/2020 +Grade,Grade,8/5/2020 +Green,Green,Pub28 +Greens,Greens,Pub28 +Greenway,Greenway,NENA MN 12/7/21 +Grove,Grove,Pub28 +Groves,Groves,Pub28 +Harbor,Harbor,Pub28 +Harbors,Harbors,Pub28 +Harbour,Harbour,4/8/2020 +Haul Road,Haul Road,NENA MN 1/30/21 +Haven,Haven,Pub28 +Hayway,Hayway,MA 8/6/20 +Heath,Heath,NENA IN 12/7/21 +Heights,Heights,Pub28 +Hideaway,Hideaway,NENA Itasca County 1/31/23 +Highlands,Highlands,MA 8/6/20 +Highway,Highway,Pub28 +Hill,Hill,Pub28 +Hills,Hills,Pub28 +Hillway,Hillway,MA 8/6/20 +Hollow,Hollow,Pub28 +Horn,Horn,NENA MN 1/30/21 +Horseshoe,Horseshoe,4/8/2020 +Indian Service Road,Indian Service Road,8/5/2020 +Inlet,Inlet,Pub28 +Interstate,Interstate, +Interval,Interval, +Island,Island,Pub28 +Islands,Islands,Pub28 +Isle,Isle,Pub28 +Isles,Isles,NENA MN 1/30/21 +J-Turn,J-Turn,NENA MD 12/1/21 +Junction,Junction,Pub28 +Junctions,Junctions,Pub28 +Keep,Keep,4/8/2020 +Key,Key,Pub28 +Keys,Keys,Pub28 +Knob,Knob,MA 8/6/20 +Knoll,Knoll,Pub28 +Knolls,Knolls,Pub28 +Lair,Lair,4/8/2020 +Lake,Lake,Pub28 +Lakes,Lakes,Pub28 +Land,Land,Pub28 +Landing,Landing,Pub28 +Lane,Lane,Pub28 +Lane Avenue,Lane Avenue,MA 8/6/20 +Lane Circle,Lane Circle,8/5/2020 +Lane Court,Lane Court,8/5/2020 +Lane Drive,Lane Drive,MA 8/6/20 +Lane Road,Lane Road,8/5/2020 +Lane Way,Lane Way,MA 8/6/20 +Lateral,Lateral,4/8/2020 +Ledge,Ledge,4/8/2020 +Light,Light,Pub28 +Lights,Lights,Pub28 +Line,Line,NENA MN 1/30/21 +Loaf,Loaf,Pub28 +Lock,Lock,Pub28 +Locks,Locks,Pub28 +Lodge,Lodge,Pub28 +Lookout,Lookout,4/8/2020 +Loop,Loop,Pub28 +Loop Road,Loop Road,8/5/2020 +Mall,Mall,Pub28 +Manor,Manor,Pub28 +Manors,Manors,Pub28 +Market,Market,4/8/2020 +Meadow,Meadow,Pub28 +Meadows,Meadows,Pub28 +Mews,Mews,Pub28 +Mill,Mill,Pub28 +Mills,Mills,Pub28 +Mission,Mission,Pub28 +Motorway,Motorway,Pub28 +Mount,Mount,Pub28 +Mountain,Mountain,Pub28 +Mountains,Mountains,Pub28 +Narrows,Narrows,8/5/2020 +National Forest Development Road,National Forest Development Road, +Neck,Neck,Pub28 +Nook,Nook, +Old County Road,Old County Road,NENA WI 8/3/20 +Orchard,Orchard,Pub28 +Oval,Oval,Pub28 +Overlook,Overlook, +Overpass,Overpass,Pub28 +Park,Park,Pub28 +Park Drive,Park Drive,MA 8/6/20 +Parke,Parke,4/8/2020 +Parks,Parks,Pub28 +Parkway,Parkway,Pub28 +Parkways,Parkways,Pub28 +Paseo,Paseo, +Pass,Pass,Pub28 +Passage,Passage,Pub28 +Passway,Passway,MA 9/22/22 +Path,Path,Pub28 +Pathway,Pathway, +Peninsula,Peninsula, +Piazza,Piazza,NENA NJ 12/7/21 +Pike,Pike,Pub28 +Pine,Pine,Pub28 +Pines,Pines,Pub28 +Place,Place,Pub28 +Placita,Placita, +Plain,Plain,Pub28 +Plains,Plains,Pub28 +Platz,Platz,NENA NJ 12/7/21 +Plaza,Plaza,Pub28 +Point,Point,Pub28 +Pointe,Pointe,4/8/2020 +Points,Points,Pub28 +Port,Port,Pub28 +Ports,Ports,Pub28 +Prairie,Prairie,Pub28 +Private Road,Private Road,NENA TX 12/7/21 +Promenade,Promenade, +Public Access,Public Access,NENA Itasca County 1/31/23 +Quarter,Quarter,4/8/2020 +Quay,Quay,4/8/2020 +Radial,Radial,Pub28 +Ramp,Ramp,Pub28 +Ranch,Ranch,Pub28 +Ranch Road,Ranch Road,TX 8/4/22 +Ranch to Market,Ranch to Market, +Rancho,Rancho, +Rapid,Rapid,Pub28 +Rapids,Rapids,Pub28 +Reach,Reach,4/8/2020 +Recreational Road,Recreational Road,NENA TX 12/7/21 +Rest,Rest,Pub28 +Retreat,Retreat,NENA MN 9/30/20 +Ridge,Ridge,Pub28 +Ridges,Ridges,Pub28 +Rise,Rise,4/8/2020 +River,River,Pub28 +River Road,River Road, +Road,Road,Pub28 +Road Avenue,Road Avenue,MA 8/6/20 +Road Branch,Road Branch,MA 8/6/20 +Road Bypass,Road Bypass,MA 8/6/20 +Road Circle,Road Circle,MA 8/6/20 +Road Court,Road Court,MA 8/6/20 +Road Cutoff,Road Cutoff,MA 8/6/20 +Road Drive,Road Drive,MA 8/6/20 +Road Estates,Road Estates,MA 8/6/20 +Road Landing,Road Landing,MA 8/6/20 +Road Lane,Road Lane,MA 8/6/20 +Road Place,Road Place,MA 8/6/20 +Road Terrace,Road Terrace,MA 8/6/20 +Road Way,Road Way,MA 8/6/20 +Roads,Roads,Pub28 +Roadway,Roadway,9/8/23 SanJuan WA +Round,Round,8/5/2020 +Route,Route,Pub28 +Row,Row,Pub28 +Rue,Rue,Pub28 +Run,Run,Pub28 +Runne,Runne,NENA NJ 8/13/19 +Runway,Runway, +Rural Route,Rural Route, +Shoal,Shoal,Pub28 +Shoals,Shoals,Pub28 +Shore,Shore,Pub28 +Shores,Shores,Pub28 +Sideroad,Sideroad,NENA Dufferin County 1/31/23 +Skies,Skies,NENA MN 1/30/21 +Skyway,Skyway,Pub28 +Slip,Slip, +Spring,Spring,Pub28 +Springs,Springs,Pub28 +Spur,Spur,Pub28 +Spurs,Spurs,Pub28 +Square,Square,Pub28 +Squares,Squares,Pub28 +State Highway,State Highway, +State Park Road,State Park Road,NENA TX 12/7/21 +State Parkway,State Parkway, +State Road,State Road, +State Route,State Route, +State Secondary,State Secondary,4/8/2020 +State Spur,State Spur,NENA TX 12/7/21 +Station,Station,Pub28 +Strand,Strand,4/8/2020 +Strasse,Strasse,4/8/2020 +Stravenue,Stravenue,Pub28 +Stream,Stream,Pub28 +Street,Street,Pub28 +Street Annex,Street Annex,MA 8/6/20 +Street Avenue,Street Avenue,MA 8/6/20 +Street Bypass,Street Bypass,MA 8/6/20 +Street Circle,Street Circle,8/5/2020 +Street Court,Street Court,4/8/2020 +Street Crossing,Street Crossing,MA 8/6/20 +Street Drive,Street Drive,CO 8/10/20 +Street Lane,Street Lane,MA 8/6/20 +Street Loop,Street Loop,8/5/2020 +Street Park,Street Park,MA 8/6/20 +Street Parkway,Street Parkway,CO 8/10/20 +Street Passway,Street Passway,MA 8/6/20 +Street Path,Street Path,NENA MN 1/30/21 +Street Place,Street Place,8/5/2020 +Street Road,Street Road,CO 8/10/20 +Street Terrace,Street Terrace,MA 8/6/20 +Street Way,Street Way,MA 8/6/20 +Streets,Streets,Pub28 +Strip,Strip, +Summit,Summit,Pub28 +Taxiway,Taxiway, +Terminal,Terminal,NENA NY 12/7/21 +Tern,Tern, +Terrace,Terrace,Pub28 +Throughway,Throughway,Pub28 +Thruway,Thruway, +Timber Road,Timber Road,NENA TX 12/7/21 +Townline,Townline,NENA Dufferin County 1/31/23 +Township Road,Township Road,8/5/2020 +Trace,Trace,Pub28 +Track,Track,Pub28 +Trafficway,Trafficway,Pub28 +Trail,Trail,Pub28 +Trailer,Trailer,Pub28 +Triangle,Triangle,4/8/2020 +Truck Trail,Truck Trail,NENA MN 1/30/21 +Tunnel,Tunnel,Pub28 +Turn,Turn, +Turnpike,Turnpike,Pub28 +Underpass,Underpass,Pub28 +Union,Union,Pub28 +Unions,Unions,Pub28 +United States Forest Service Road,United States Forest Service Road, +United States Highway,United States Highway, +United States Route,United States Route, +Valley,Valley,Pub28 +Valleys,Valleys,Pub28 +Vereda,Vereda, +Via,Via,4/8/2020 +Viaduct,Viaduct,Pub28 +View,View,Pub28 +Views,Views,Pub28 +Villa,Villa, +Village,Village,Pub28 +Villages,Villages,Pub28 +Ville,Ville,Pub28 +Vista,Vista,Pub28 +Waddy,Waddy,NENA NJ 1/30/21 +Walk,Walk,Pub28 +Walks,Walks,Pub28 +Wall,Wall,Pub28 +Way,Way,Pub28 +Way Loop,Way Loop,MA 8/6/20 +Way Terrace,Way Terrace,MA 8/6/20 +Ways,Ways,Pub28 +Weeg,Weeg, +Well,Well,Pub28 +Wells,Wells,Pub28 +Wharf,Wharf,MA 8/6/20 +Woods,Woods,4/8/2020 +Wye,Wye,4/8/2020 +Wynd,Wynd,8/5/2020 diff --git a/nad_ch/application/validation_files/domain/Domain_St_PreDir.csv b/nad_ch/application/validation_files/domain/Domain_St_PreDir.csv new file mode 100644 index 0000000..f3a7b09 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_St_PreDir.csv @@ -0,0 +1,17 @@ +Source,Destination +East,East +Est,Est +Nord,Nord +Nord-Est,Nord-Est +Nord-Ouest,Nord-Ouest +North,North +Northeast,Northeast +Northwest,Northwest +Ouest,Ouest +South,South +Southeast,Southeast +Southwest,Southwest +Sud,Sud +Sud-Est,Sud-Est +Sud-Ouest,Sud-Ouest +West,West diff --git a/nad_ch/application/validation_files/domain/Domain_St_PreSep.csv b/nad_ch/application/validation_files/domain/Domain_St_PreSep.csv new file mode 100644 index 0000000..34ada86 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_St_PreSep.csv @@ -0,0 +1,13 @@ +Source,Destination +at,at +de,de +de la,de la +de las,de las +del,del +des,des +in the,in the +of,of +of the,of the +on the,on the +to,to +to the,to the diff --git a/nad_ch/application/validation_files/domain/Domain_St_PreTyp.csv b/nad_ch/application/validation_files/domain/Domain_St_PreTyp.csv new file mode 100644 index 0000000..932cda7 --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_St_PreTyp.csv @@ -0,0 +1,448 @@ +Source,Destination,DateAdded +Abbey,Abbey,NENA MN 1/30/21 +Access,Access, +Access Road,Access Road,4/8/2020 +Acres,Acres, +Airport,Airport,NENA NY 12/7/21 +Alcove,Alcove, +Alle,Alle,NENA MN 9/30/20 +Alley,Alley,Pub28 +Annex,Annex, +Approach,Approach, +Arc,Arc,NENA CA 12/7/21 +Arcade,Arcade,Pub28 +Arch,Arch,8/5/2020 +Arroyo,Arroyo, +Avenida,Avenida, +Avenue,Avenue,Pub28 +Avenue Circle,Avenue Circle,8/5/2020 +Avenue Court,Avenue Court,4/8/2020 +Avenue Drive,Avenue Drive,CO 8/10/20 +Avenue Footway,Avenue Footway,MA 8/6/20 +Avenue Lane,Avenue Lane,CO 8/10/20 +Avenue Loop,Avenue Loop,8/5/2020 +Avenue Path,Avenue Path,NENA MN 9/30/20 +Avenue Place,Avenue Place,8/5/2020 +Avenue Terrace,Avenue Terrace,MA 8/6/20 +Avenue Way,Avenue Way,CO 8/10/20 +Bahia,Bahia, +Bank,Bank, +Bay,Bay, +Bayou,Bayou,Pub28 +Bayway,Bayway,4/8/2020 +Beach,Beach,Pub28 +Bend,Bend,Pub28 +Bluff,Bluff,Pub28 +Bluffs,Bluffs,Pub28 +Boardwalk,Boardwalk,4/8/2020 +Bottom,Bottom,Pub28 +Boulevard,Boulevard,Pub28 +Branch,Branch,Pub28 +Bridge,Bridge,Pub28 +Brook,Brook,Pub28 +Brooks,Brooks,Pub28 +Bureau of Indian Affairs Highway,Bureau of Indian Affairs Highway,5/21/2020 +Bureau of Indian Affairs Route,Bureau of Indian Affairs Route, +Burg,Burg,Pub28 +Burgs,Burgs,Pub28 +Bypass,Bypass,Pub28 +Byway,Byway,MA 8/6/20 +Calle,Calle, +Caminito,Caminito, +Camino,Camino, +Camp,Camp,Pub28 +Canyon,Canyon,Pub28 +Cape,Cape,Pub28 +Cartway,Cartway,8/5/2020 +Causeway,Causeway,Pub28 +Center,Center,Pub28 +Centers,Centers,Pub28 +Centre,Centre,NENA NJ 6/16/22 +Cerrada,Cerrada, +Channel,Channel,NENA MN 1/30/21 +Chase,Chase, +Chemin,Chemin,8/5/2020 +Circle,Circle,Pub28 +Circle Drive,Circle Drive,MA 8/6/20 +Circles,Circles,Pub28 +Circuit,Circuit,MA 8/6/20 +Circulo,Circulo, +Circus,Circus,4/8/2020 +Cliff,Cliff,Pub28 +Cliffs,Cliffs,Pub28 +Close,Close, +Club,Club,Pub28 +Cluster,Cluster,4/8/2020 +Coast Highway,Coast Highway,8/5/2020 +Common,Common,Pub28 +Commons,Commons,Pub28 +Concession Road,Concession Road,NENA Dufferin County 1/31/23 +Concourse,Concourse, +Connect,Connect,4/8/2020 +Connector,Connector, +Corner,Corner,Pub28 +Corners,Corners,Pub28 +Corridor,Corridor,4/8/2020 +Corso,Corso,NENA NJ 12/7/21 +Corta,Corta, +Corte,Corte, +County Forest Road,County Forest Road, +County Highway,County Highway, +County Road,County Road, +County Route,County Route, +County State Aid Highway,County State Aid Highway,8/5/2020 +Cours,Cours,NENA NJ 12/7/21 +Course,Course,Pub28 +Court,Court,Pub28 +Court Circle,Court Circle,MA 8/6/20 +Court Place,Court Place,MA 8/6/20 +Court Street,Court Street,MA 8/6/20 +Court Terrace,Court Terrace,MA 8/6/20 +Court Way,Court Way,MA 8/6/20 +Courts,Courts,Pub28 +Cove,Cove,Pub28 +Coves,Coves,Pub28 +Creek,Creek,Pub28 +Crescent,Crescent,Pub28 +Crest,Crest,Pub28 +Cross,Cross,4/8/2020 +Crossing,Crossing,Pub28 +Crossings,Crossings,NENA MN 1/30/21 +Crossover,Crossover,NENA LA Baton Rouge 6/16/22 +Crossroad,Crossroad,Pub28 +Crossroads,Crossroads,Pub28 +Crossway,Crossway,4/8/2020 +Curve,Curve,Pub28 +Cutoff,Cutoff,4/8/2020 +Cutoff Road,Cutoff Road,MA 8/6/20 +Cutting,Cutting,4/8/2020 +Dale,Dale,Pub28 +Dam,Dam,Pub28 +Dell,Dell,4/8/2020 +Divide,Divide,Pub28 +Dock,Dock,NENA NY 12/7/21 +Down,Down,4/8/2020 +Downs,Downs, +Draw,Draw, +Drift,Drift,4/8/2020 +Drive,Drive,Pub28 +Drive Circle,Drive Circle,MA 8/6/20 +Drive Lane,Drive Lane,MA 8/6/20 +Drive Road,Drive Road,CO 8/10/20 +Drives,Drives,Pub28 +Driveway,Driveway,4/8/2020 +Echo,Echo,NENA MN 1/30/21 +Edge,Edge,NENA MN 1/30/21 +End,End, +Entrada,Entrada, +Entrance,Entrance,NENA MN 1/30/21 +Entry,Entry,NENA MN 1/30/21 +Esplanade,Esplanade, +Estate,Estate,Pub28 +Estates,Estates,Pub28 +Exchange,Exchange, +Exit,Exit,4/8/2020 +Expressway,Expressway,Pub28 +Extension,Extension,Pub28 +Extensions,Extensions,Pub28 +Fairway,Fairway, +Fall,Fall,Pub28 +Falls,Falls,Pub28 +Fare,Fare,4/8/2020 +Farm,Farm,4/8/2020 +Farm to Market,Farm to Market, +Federal-Aid Secondary Highway,Federal-Aid Secondary Highway, +Ferry,Ferry,Pub28 +Field,Field,Pub28 +Fields,Fields,Pub28 +Fire Road,Fire Road,MA 8/6/20 +Flat,Flat,Pub28 +Flats,Flats,Pub28 +Flowage,Flowage,NENA MN 1/30/21 +Flyway,Flyway,4/8/2020 +Ford,Ford,Pub28 +Fords,Fords,Pub28 +Fordway,Fordway,MA 8/6/20 +Forest,Forest,Pub28 +Forest Highway,Forest Highway,NENA MN 1/30/21 +Forest Road,Forest Road,8/5/2020 +Forge,Forge,Pub28 +Forges,Forges,Pub28 +Fork,Fork,Pub28 +Forks,Forks,Pub28 +Fort,Fort,Pub28 +Freeway,Freeway,Pub28 +Front,Front, +Furlong,Furlong,MA 8/6/20 +Gables,Gables,NENA MN 1/30/21 +Garden,Garden,Pub28 +Gardens,Gardens,Pub28 +Garth,Garth,4/8/2020 +Gate,Gate, +Gates,Gates,4/8/2020 +Gateway,Gateway,Pub28 +Glade,Glade,4/8/2020 +Glen,Glen,Pub28 +Glens,Glens,Pub28 +Gorge,Gorge,4/8/2020 +Grade,Grade,8/5/2020 +Green,Green,Pub28 +Greens,Greens,Pub28 +Greenway,Greenway,NENA MN 12/7/21 +Grove,Grove,Pub28 +Groves,Groves,Pub28 +Harbor,Harbor,Pub28 +Harbors,Harbors,Pub28 +Harbour,Harbour,4/8/2020 +Haul Road,Haul Road,NENA MN 1/30/21 +Haven,Haven,Pub28 +Hayway,Hayway,MA 8/6/20 +Heath,Heath,NENA IN 12/7/21 +Heights,Heights,Pub28 +Hideaway,Hideaway,NENA Itasca County 1/31/23 +Highlands,Highlands,MA 8/6/20 +Highway,Highway,Pub28 +Hill,Hill,Pub28 +Hills,Hills,Pub28 +Hillway,Hillway,MA 8/6/20 +Hollow,Hollow,Pub28 +Horn,Horn,NENA MN 1/30/21 +Horseshoe,Horseshoe,4/8/2020 +Indian Service Road,Indian Service Road,8/5/2020 +Inlet,Inlet,Pub28 +Interstate,Interstate, +Interval,Interval, +Island,Island,Pub28 +Islands,Islands,Pub28 +Isle,Isle,Pub28 +Isles,Isles,NENA MN 1/30/21 +J-Turn,J-Turn,NENA MD 12/1/21 +Junction,Junction,Pub28 +Junctions,Junctions,Pub28 +Keep,Keep,4/8/2020 +Key,Key,Pub28 +Keys,Keys,Pub28 +Knob,Knob,MA 8/6/20 +Knoll,Knoll,Pub28 +Knolls,Knolls,Pub28 +Lair,Lair,4/8/2020 +Lake,Lake,Pub28 +Lakes,Lakes,Pub28 +Land,Land,Pub28 +Landing,Landing,Pub28 +Lane,Lane,Pub28 +Lane Avenue,Lane Avenue,MA 8/6/20 +Lane Circle,Lane Circle,8/5/2020 +Lane Court,Lane Court,8/5/2020 +Lane Drive,Lane Drive,MA 8/6/20 +Lane Road,Lane Road,8/5/2020 +Lane Way,Lane Way,MA 8/6/20 +Lateral,Lateral,4/8/2020 +Ledge,Ledge,4/8/2020 +Light,Light,Pub28 +Lights,Lights,Pub28 +Line,Line,NENA MN 1/30/21 +Loaf,Loaf,Pub28 +Lock,Lock,Pub28 +Locks,Locks,Pub28 +Lodge,Lodge,Pub28 +Lookout,Lookout,4/8/2020 +Loop,Loop,Pub28 +Loop Road,Loop Road,8/5/2020 +Mall,Mall,Pub28 +Manor,Manor,Pub28 +Manors,Manors,Pub28 +Market,Market,4/8/2020 +Meadow,Meadow,Pub28 +Meadows,Meadows,Pub28 +Mews,Mews,Pub28 +Mill,Mill,Pub28 +Mills,Mills,Pub28 +Mission,Mission,Pub28 +Motorway,Motorway,Pub28 +Mount,Mount,Pub28 +Mountain,Mountain,Pub28 +Mountains,Mountains,Pub28 +Narrows,Narrows,8/5/2020 +National Forest Development Road,National Forest Development Road, +Neck,Neck,Pub28 +Nook,Nook, +Old County Road,Old County Road,NENA WI 8/3/20 +Orchard,Orchard,Pub28 +Oval,Oval,Pub28 +Overlook,Overlook, +Overpass,Overpass,Pub28 +Park,Park,Pub28 +Park Drive,Park Drive,MA 8/6/20 +Parke,Parke,4/8/2020 +Parks,Parks,Pub28 +Parkway,Parkway,Pub28 +Parkways,Parkways,Pub28 +Paseo,Paseo, +Pass,Pass,Pub28 +Passage,Passage,Pub28 +Passway,Passway,MA 9/22/22 +Path,Path,Pub28 +Pathway,Pathway, +Peninsula,Peninsula, +Piazza,Piazza,NENA NJ 12/7/21 +Pike,Pike,Pub28 +Pine,Pine,Pub28 +Pines,Pines,Pub28 +Place,Place,Pub28 +Placita,Placita, +Plain,Plain,Pub28 +Plains,Plains,Pub28 +Platz,Platz,NENA NJ 12/7/21 +Plaza,Plaza,Pub28 +Point,Point,Pub28 +Pointe,Pointe,4/8/2020 +Points,Points,Pub28 +Port,Port,Pub28 +Ports,Ports,Pub28 +Prairie,Prairie,Pub28 +Private Road,Private Road,NENA TX 12/7/21 +Promenade,Promenade, +Public Access,Public Access,NENA Itasca County 1/31/23 +Quarter,Quarter,4/8/2020 +Quay,Quay,4/8/2020 +Radial,Radial,Pub28 +Ramp,Ramp,Pub28 +Ranch,Ranch,Pub28 +Ranch Road,Ranch Road,TX 8/4/22 +Ranch to Market,Ranch to Market, +Rancho,Rancho, +Rapid,Rapid,Pub28 +Rapids,Rapids,Pub28 +Reach,Reach,4/8/2020 +Recreational Road,Recreational Road,NENA TX 12/7/21 +Rest,Rest,Pub28 +Retreat,Retreat,NENA MN 9/30/20 +Ridge,Ridge,Pub28 +Ridges,Ridges,Pub28 +Rise,Rise,4/8/2020 +River,River,Pub28 +River Road,River Road, +Road,Road,Pub28 +Road Avenue,Road Avenue,MA 8/6/20 +Road Branch,Road Branch,MA 8/6/20 +Road Bypass,Road Bypass,MA 8/6/20 +Road Circle,Road Circle,MA 8/6/20 +Road Court,Road Court,MA 8/6/20 +Road Cutoff,Road Cutoff,MA 8/6/20 +Road Drive,Road Drive,MA 8/6/20 +Road Estates,Road Estates,MA 8/6/20 +Road Landing,Road Landing,MA 8/6/20 +Road Lane,Road Lane,MA 8/6/20 +Road Place,Road Place,MA 8/6/20 +Road Terrace,Road Terrace,MA 8/6/20 +Road Way,Road Way,MA 8/6/20 +Roads,Roads,Pub28 +Roadway,Roadway,9/8/23 SanJuan WA +Round,Round,8/5/2020 +Route,Route,Pub28 +Row,Row,Pub28 +Rue,Rue,Pub28 +Run,Run,Pub28 +Runne,Runne,NENA NJ 8/13/19 +Runway,Runway, +Rural Route,Rural Route, +Shoal,Shoal,Pub28 +Shoals,Shoals,Pub28 +Shore,Shore,Pub28 +Shores,Shores,Pub28 +Sideroad,Sideroad,NENA Dufferin County 1/31/23 +Skies,Skies,NENA MN 1/30/21 +Skyway,Skyway,Pub28 +Slip,Slip, +Spring,Spring,Pub28 +Springs,Springs,Pub28 +Spur,Spur,Pub28 +Spurs,Spurs,Pub28 +Square,Square,Pub28 +Squares,Squares,Pub28 +State Highway,State Highway, +State Park Road,State Park Road,NENA TX 12/7/21 +State Parkway,State Parkway, +State Road,State Road, +State Route,State Route, +State Secondary,State Secondary,4/8/2020 +State Spur,State Spur,NENA TX 12/7/21 +Station,Station,Pub28 +Strand,Strand,4/8/2020 +Strasse,Strasse,4/8/2020 +Stravenue,Stravenue,Pub28 +Stream,Stream,Pub28 +Street,Street,Pub28 +Street Annex,Street Annex,MA 8/6/20 +Street Avenue,Street Avenue,MA 8/6/20 +Street Bypass,Street Bypass,MA 8/6/20 +Street Circle,Street Circle,8/5/2020 +Street Court,Street Court,4/8/2020 +Street Crossing,Street Crossing,MA 8/6/20 +Street Drive,Street Drive,CO 8/10/20 +Street Lane,Street Lane,MA 8/6/20 +Street Loop,Street Loop,8/5/2020 +Street Park,Street Park,MA 8/6/20 +Street Parkway,Street Parkway,CO 8/10/20 +Street Passway,Street Passway,MA 8/6/20 +Street Path,Street Path,NENA MN 1/30/21 +Street Place,Street Place,8/5/2020 +Street Road,Street Road,CO 8/10/20 +Street Terrace,Street Terrace,MA 8/6/20 +Street Way,Street Way,MA 8/6/20 +Streets,Streets,Pub28 +Strip,Strip, +Summit,Summit,Pub28 +Taxiway,Taxiway, +Terminal,Terminal,NENA NY 12/7/21 +Tern,Tern, +Terrace,Terrace,Pub28 +Throughway,Throughway,Pub28 +Thruway,Thruway, +Timber Road,Timber Road,NENA TX 12/7/21 +Townline,Townline,NENA Dufferin County 1/31/23 +Township Road,Township Road,8/5/2020 +Trace,Trace,Pub28 +Track,Track,Pub28 +Trafficway,Trafficway,Pub28 +Trail,Trail,Pub28 +Trailer,Trailer,Pub28 +Triangle,Triangle,4/8/2020 +Truck Trail,Truck Trail,NENA MN 1/30/21 +Tunnel,Tunnel,Pub28 +Turn,Turn, +Turnpike,Turnpike,Pub28 +Underpass,Underpass,Pub28 +Union,Union,Pub28 +Unions,Unions,Pub28 +United States Forest Service Road,United States Forest Service Road, +United States Highway,United States Highway, +United States Route,United States Route, +Valley,Valley,Pub28 +Valleys,Valleys,Pub28 +Vereda,Vereda, +Via,Via,4/8/2020 +Viaduct,Viaduct,Pub28 +View,View,Pub28 +Views,Views,Pub28 +Villa,Villa, +Village,Village,Pub28 +Villages,Villages,Pub28 +Ville,Ville,Pub28 +Vista,Vista,Pub28 +Waddy,Waddy,NENA NJ 1/30/21 +Walk,Walk,Pub28 +Walks,Walks,Pub28 +Wall,Wall,Pub28 +Way,Way,Pub28 +Way Loop,Way Loop,MA 8/6/20 +Way Terrace,Way Terrace,MA 8/6/20 +Ways,Ways,Pub28 +Weeg,Weeg, +Well,Well,Pub28 +Wells,Wells,Pub28 +Wharf,Wharf,MA 8/6/20 +Woods,Woods,4/8/2020 +Wye,Wye,4/8/2020 +Wynd,Wynd,8/5/2020 diff --git a/nad_ch/application/validation_files/domain/Domain_State.csv b/nad_ch/application/validation_files/domain/Domain_State.csv new file mode 100644 index 0000000..903c4ad --- /dev/null +++ b/nad_ch/application/validation_files/domain/Domain_State.csv @@ -0,0 +1,60 @@ +Source,Destination +AK,Alaska +AL,Alabama +AR,Arkansas +AS,American Samoa +AZ,Arizona +CA,California +CO,Colorado +CT,Connecticut +DC,District of Columbia +DE,Delaware +FL,Florida +FM,Federated States of Micronesia +GA,Georgia +GU,Guam +HI,Hawaii +IA,Iowa +ID,Idaho +IL,Illinois +IN,Indiana +KS,Kansas +KY,Kentucky +LA,Louisiana +MA,Massachusetts +MD,Maryland +ME,Maine +MH,Marshall Islands +MI,Michigan +MN,Minnesota +MO,Missouri +MP,Northern Mariana Islands +MS,Mississippi +MT,Montana +NC,North Carolina +ND,North Dakota +NE,Nebraska +NH,New Hampshire +NJ,New Jersey +NM,New Mexico +NV,Nevada +NY,New York +OH,Ohio +OK,Oklahoma +OR,Oregon +PA,Pennsylvania +PR,Puerto Rico +PW,Palau +RI,Rhode Island +SC,South Carolina +SD,South Dakota +TN,Tennessee +TX,Texas +UT,Utah +VA,Virginia +VI,Virgin Islands +VT,Vermont +WA,Washington +WI,Wisconsin +WV,West Virginia +WY,Wyoming diff --git a/nad_ch/application/validation_files/mapper/Mapper_County.csv b/nad_ch/application/validation_files/mapper/Mapper_County.csv new file mode 100644 index 0000000..5e9b061 --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_County.csv @@ -0,0 +1,2483 @@ +Source,Destination +,[Calculated Value] + ,[Calculated Value] + ,[Calculated Value] +abbeville,Abbeville +acadia parish,Acadia Parish +accomack,Accomack +ada,Ada +adair,Adair +adair county,Adair +adams,Adams +adams county,Adams +addison,Addison +adjuntas municipio,Adjuntas Municipio +aguada municipio,Aguada Municipio +aguadilla municipio,Aguadilla Municipio +aguas buenas municipio,Aguas Buenas Municipio +aibonito municipio,Aibonito Municipio +aiken,Aiken +aitkin,Aitkin +alachua,Alachua +alamance,Alamance +alameda,Alameda +alamosa,Alamosa +albany,Albany +albemarle,Albemarle +alcona,Alcona +alcorn,Alcorn +aleutians east borough,Aleutians East Borough +aleutians west census area,Aleutians West Census Area +alexander,Alexander +alexandria city,Alexandria city +alfalfa,Alfalfa +alfalfa county,Alfalfa +alger,Alger +allamakee,Allamakee +allamakee county,Allamakee +allegan,Allegan +allegany,Allegany +alleghany,Alleghany +allegheny,Allegheny +allegheny county,Allegheny +allen,Allen +allen county,Allen +allen parish,Allen Parish +allendale,Allendale +alpena,Alpena +alpine,Alpine +amador,Amador +amelia,Amelia +amherst,Amherst +amite,Amite +anasco municipio,Anasco Municipio +anchorage municipality,Anchorage Municipality +anderson,Anderson +andrew,Andrew +andrews,Andrews +androscoggin,Androscoggin +angelina,Angelina +angelina county,Angelina +anne arundel,Anne Arundel +anoka,Anoka +anson,Anson +antelope,Antelope +antrim,Antrim +apache,Apache +apache county,Apache +appanoose,Appanoose +appanoose county,Appanoose +appling,Appling +appomattox,Appomattox +aransas,Aransas +aransas county,Aransas +arapahoe,Arapahoe +archer,Archer +archer county,Archer +archuleta,Archuleta +arecibo municipio,Arecibo Municipio +arenac,Arenac +arkansas,Arkansas +arlington,Arlington +armstrong,Armstrong +armstrong county,Armstrong +arnasas county,Aransas +aroostook,Aroostook +arroyo municipio,Arroyo Municipio +arthur,Arthur +ascension parish,Ascension Parish +ashe,Ashe +ashland,Ashland +ashley,Ashley +ashtabula,Ashtabula +asotin,Asotin +assumption parish,Assumption Parish +atascosa,Atascosa +atascosa county,Atascosa +atchison,Atchison +athens,Athens +atkinson,Atkinson +atlantic,Atlantic +atlantic county,Atlantic +atoka,Atoka +attala,Attala +audrain,Audrain +audubon,Audubon +auglaize,Auglaize +augusta,Augusta +aurora,Aurora +austin,Austin +autauga,Autauga +avery,Avery +avoyelles parish,Avoyelles Parish +b00ne,Boone +baca,Baca +bacon,Bacon +bailey,Bailey +bailey county,Bailey +baker,Baker +baldwin,Baldwin +ballard,Ballard +ballard county,Ballard +baltimore,Baltimore +baltimore city,Baltimore city +bamberg,Bamberg +bandera,Bandera +bandera county,Bandera +banks,Banks +banner,Banner +bannock,Bannock +baraga,Baraga +barber,Barber +barbour,Barbour +barceloneta municipio,Barceloneta Municipio +barnes,Barnes +barnes county,Barnes +barnstable,Barnstable +barnstable county,Barnstable +barnwell,Barnwell +barranquitas municipio,Barranquitas Municipio +barren,Barren +barron,Barron +barrow,Barrow +barry,Barry +bartholomew,Bartholomew +barton,Barton +bartow,Bartow +bastrop,Bastrop +bates,Bates +bath,Bath +baxter,Baxter +bay,Bay +bayamon municipio,Bayamon Municipio +bayfield,Bayfield +baylor,Baylor +baylor county,Baylor +beadle,Beadle +bear lake,Bear Lake +beaufort,Beaufort +beauregard parish,Beauregard Parish +beaver,Beaver +beaver county,Beaver +beaverhead,Beaverhead +beaverhead county,Beaverhead +becker,Becker +beckham,Beckham +bedford,Bedford +bedford city,Bedford city +bee,Bee +bee county,Bee +belknap,Belknap +bell,Bell +belmont,Belmont +beltrami,Beltrami +ben hill,Ben Hill +benewah,Benewah +bennett,Bennett +bennington,Bennington +benson,Benson +benson county,Benson +bent,Bent +benton,Benton +benton county,Benton +benzie,Benzie +bergen,Bergen +bergen county,Bergen +berkeley,Berkeley +berks,Berks +berks county,Berks +berkshire,Berkshire +berkshire county,Berkshire +bernalillo,Bernalillo +berrien,Berrien +bertie,Bertie +bethel census area,Bethel Census Area +bexar,Bexar +bibb,Bibb +bienville parish,Bienville Parish +big horn,Big Horn +big horn county,Big Horn +big stone,Big Stone +billings,Billings +billings county,Billings +bingham,Bingham +black hawk,Black Hawk +blackford,Blackford +bladen,Bladen +blaine,Blaine +blaine county,Blaine +blair,Blair +blair county,Blair +blanco,Blanco +bland,Bland +bleckley,Bleckley +bledsoe,Bledsoe +blount,Blount +blue earth,Blue Earth +boise,Boise +bolivar,Bolivar +bollinger,Bollinger +bon homme,Bon Homme +bond,Bond +bonner,Bonner +bonneville,Bonneville +boone,Boone +boone county,Boone +borden,Borden +bosque,Bosque +bosque county,Bosque +bossier parish,Bossier Parish +botetourt,Botetourt +bottineau,Bottineau +bottineau county,Bottineau +boulder,Boulder +boundary,Boundary +bourbon,Bourbon +bourbon county,Bourbon +bowie,Bowie +bowie county,Bowie +bowman,Bowman +bowman county,Bowman +box butte,Box Butte +box elder,Box Elder +boyd,Boyd +boyd county,Boyd +boyle,Boyle +bracken,Bracken +bradford,Bradford +bradley,Bradley +branch,Branch +brantley,Brantley +braxton,Braxton +brazoria,Brazoria +brazos,Brazos +brazos county,Brazos +breathitt,Breathitt +breathitt county,Breathitt +breckenridge,Breckinridge +breckinridge,Breckinridge +bremer,Bremer +bremer county,Bremer +brevard,Brevard +brewster,Brewster +brewster coounty,Brewster +brewster county,Brewster +briscoe,Briscoe +bristol,Bristol +bristol bay borough,Bristol Bay Borough +bristol city,Bristol city +bristol county,Bristol +broadwater,Broadwater +broadwater county,Broadwater +bronx,Bronx +brooke,Brooke +brookings,Brookings +brooklyn,Kings +brooks,Brooks +broome,Broome +broomfield,Broomfield +broward,Broward +brown,Brown +brown county,Brown +brule,Brule +brunswick,Brunswick +bryan,Bryan +bryan county,Bryan +buchanan,Buchanan +buchanan county,Buchanan +buckingham,Buckingham +bucks,Bucks +bucks county,Bucks +buena vista,Buena Vista +buena vista city,Buena Vista city +buena vista county county,Buena Vista +buffalo,Buffalo +bullitt,Bullitt +bullitt county,Bullitt +bulloch,Bulloch +bullock,Bullock +buncombe,Buncombe +bureau,Bureau +burke,Burke +burke county,Burke +burleigh,Burleigh +burleson,Burleson +burleson county,Burleson +burlington,Burlington +burlington county,Burlington +burnet,Burnet +burnett,Burnett +burt,Burt +butler,Butler +butler county,Butler +butte,Butte +butts,Butts +cabarrus,Cabarrus +cabell,Cabell +cabo rojo municipio,Cabo Rojo Municipio +cache,Cache +caddo,Caddo +caddo county,Caddo +caddo parish,Caddo Parish +caguas municipio,Caguas Municipio +calaveras,Calaveras +calcasieu parish,Calcasieu Parish +caldwell,Caldwell +caldwell parish,Caldwell Parish +caledonia,Caledonia +calhoun,Calhoun +calhoun county,Calhoun +callahan,Callahan +callahan county,Callahan +callaway,Callaway +calloway,Calloway +calumet,Calumet +calvert,Calvert +camas,Camas +cambria,Cambria +camden,Camden +camden county,Camden +cameron,Cameron +cameron parish,Cameron Parish +camp,Camp +campbell,Campbell +camuy municipio,Camuy Municipio +canadian,Canadian +canadian county,Canadian +candler,Candler +cannon,Cannon +canovanas municipio,Canovanas Municipio +canyon,Canyon +cape girardeau,Cape Girardeau +cape may,Cape May +cape may county,Cape May +carbon,Carbon +carbon county,Carbon +caribou,Caribou +carlisle,Carlisle +carlisle county,Carlisle +carlton,Carlton +carolina municipio,Carolina Municipio +caroline,Caroline +carroll,Carroll +carroll county,Carroll +carson,Carson +carson city,Carson City +carter,Carter +carter county,Carter +carteret,Carteret +carver,Carver +cascade,Cascade +cascade county,Cascade +casey,Casey +casey county,Casey +cass,Cass +cass county,Cass +cass county,Cass +cassia,Cassia +castro,Castro +caswell,Caswell +catahoula parish,Catahoula Parish +catano municipio,Catano Municipio +catawba,Catawba +catoosa,Catoosa +catron,Catron +cattaraugus,Cattaraugus +cavalier,Cavalier +cavalier county,Cavalier +cayey municipio,Cayey Municipio +cayuga,Cayuga +cecil,Cecil +cedar,Cedar +cedar county,Cedar +ceiba municipio,Ceiba Municipio +centre,Centre +centre county,Centre +cerro gordo,Cerro Gordo +cerro gordo county,Cerro Gordo +chaffee,Chaffee +chambers,Chambers +champaign,Champaign +chariton,Chariton +charles,Charles +charles city,Charles City +charles mix,Charles Mix +charleston,Charleston +charlevoix,Charlevoix +charlotte,Charlotte +charlottesville city,Charlottesville city +charlton,Charlton +chase,Chase +chatham,Chatham +chattahoochee,Chattahoochee +chattooga,Chattooga +chautauqua,Chautauqua +chaves,Chaves +cheatham,Cheatham +cheboygan,Cheboygan +chelan,Chelan +chemung,Chemung +chenango,Chenango +cheokee county,Cherokee +cherokee,Cherokee +cherokee county,Cherokee +cherokee county,Cherokee +cherry,Cherry +chesapeake city,Chesapeake city +cheshire,Cheshire +chester,Chester +chester county,Chester +chesterfield,Chesterfield +cheyenne,Cheyenne +chickasaw,Chickasaw +chickasaw county,Chickasaw +chicot,Chicot +childress,Childress +chilton,Chilton +chippewa,Chippewa +chisago,Chisago +chittenden,Chittenden +choctaw,Choctaw +chouteau,Chouteau +chouteau county,Chouteau +chowan,Chowan +christian,Christian +churchill,Churchill +ciales municipio,Ciales Municipio +cibola,Cibola +cidra municipio,Cidra Municipio +cimarron,Cimarron +cimarron county,Cimarron +citrus,Citrus +clackamas,Clackamas +claiborne,Claiborne +claiborne parish,Claiborne Parish +clallam,Clallam +clare,Clare +clarendon,Clarendon +clarion,Clarion +clark,Clark +clarke,Clarke +clarke county,Clarke +clatsop,Clatsop +clay,Clay +clay county,Clay +clay county,Clay +clayton,Clayton +clayton county,Clayton +clear creek,Clear Creek +clearcreek,Clear Creek +clearfield,Clearfield +clearwater,Clearwater +cleburne,Cleburne +clermont,Clermont +cleveland,Cleveland +clinch,Clinch +clinton,Clinton +clinton county,Clinton +cloud,Cloud +coahoma,Coahoma +coal,Coal +coamo municipio,Coamo Municipio +cobb,Cobb +cochise,Cochise +cochise county,Cochise +cochran,Cochran +cochran county,Cochran +cocke,Cocke +coconino,Coconino +coconino county,Coconino +codington,Codington +coffee,Coffee +coffey,Coffey +coke,Coke +coke county,Coke +coke ocunty,Coke +colbert,Colbert +cole,Cole +coleman,Coleman +coleman county,Coleman +coles,Coles +colfax,Colfax +colleton,Colleton +collier,Collier +collin,Collin +collingsworth,Collingsworth +colonial heights city,Colonial Heights city +colorado,Colorado +colquitt,Colquitt +columbia,Columbia +columbiana,Columbiana +columbus,Columbus +colusa,Colusa +comal,Comal +comanche,Comanche +comanche county,Comanche +comerio municipio,Comerio Municipio +concho,Concho +concho county,Concho +concho coutny,Concho +concordia parish,Concordia Parish +conecuh,Conecuh +conejos,Conejos +contra costa,Contra Costa +converse,Converse +conway,Conway +cook,Cook +cooke,Cooke +cooke county,Cooke +cooper,Cooper +coos,Coos +coosa,Coosa +copiah,Copiah +corozal municipio,Corozal Municipio +corson,Corson +cortland,Cortland +coryell,Coryell +coshocton,Coshocton +costilla,Costilla +cottle,Cottle +cottle county,Cottle +cotton,Cotton +cottonwood,Cottonwood +covington,Covington +covington city,Covington city +coweta,Coweta +cowley,Cowley +cowlitz,Cowlitz +craig,Craig +craig county,Craig +craighead,Craighead +crane,Crane +craven,Craven +crawford,Crawford +crawford county,Crawford +creek,Creek +crenshaw,Crenshaw +crisp,Crisp +crittenden,Crittenden +crockett,Crockett +crockett county,Crockett +crook,Crook +crosby,Crosby +crosby county,Crosby +cross,Cross +crow wing,Crow Wing +crowley,Crowley +culberon county,Culberson +culberson,Culberson +culberson county,Culberson +culebra municipio,Culebra Municipio +cullman,Cullman +culpeper,Culpeper +cumberland,Cumberland +cumberland county,Cumberland +cuming,Cuming +currituck,Currituck +curry,Curry +custer,Custer +custer county,Custer +cuyahoga,Cuyahoga +dade,Dade +daggett,Daggett +dakota,Dakota +dalas,Dallas +dale,Dale +dallam,Dallam +dallas,Dallas +dallas county,Dallas +dane,Dane +daniels,Daniels +daniels county,Daniels +danville city,Danville city +dare,Dare +darke,Darke +darlington,Darlington +dauphin,Dauphin +davidson,Davidson +davie,Davie +daviess,Daviess +daviess county,Daviess +davis,Davis +davis county,Davis +davison,Davison +dawes,Dawes +dawson,Dawson +dawson county,Dawson +dawson county,Dawson +day,Day +de baca,De Baca +de soto parish,De Soto Parish +de witt,De Witt +deaf smith,Deaf Smith +dearborn,Dearborn +decatur,Decatur +decatur county,Decatur +deer lodge,Deer Lodge +deer lodge county,Deer Lodge +defiance,Defiance +dekalb,DeKalb +del norte,Del Norte +delaware,Delaware +delaware county,Delaware +delta,Delta +delta county,Delta +denali borough,Denali Borough +dent,Dent +denton,Denton +denver,Denver +des moines,Des Moines +des moines county,Des Moines +deschutes,Deschutes +desha,Desha +desoto,DeSoto +deuel,Deuel +dewey,Dewey +dewey county,Dewey +dewitt,DeWitt +dewitt county,Dewitt +dickens,Dickens +dickens county,Dickens +dickenson,Dickenson +dickey,Dickey +dickey county,Dickey +dickinson,Dickinson +dickinson county,Dickinson +dickson,Dickson +dillingham census area,Dillingham Census Area +dillon,Dillon +dimmit,Dimmit +dinwiddie,Dinwiddie +district of columbia,District of Columbia +divide,Divide +divide county,Divide +dixie,Dixie +dixon,Dixon +doddridge,Doddridge +dodge,Dodge +dolores,Dolores +dona ana,Dona Ana +doniphan,Doniphan +donley,Donley +dooly,Dooly +door,Door +dorado municipio,Dorado Municipio +dorchester,Dorchester +dougherty,Dougherty +douglas,Douglas +drew,Drew +dubois,Dubois +dubuque,Dubuque +dubuque county,Dubuque +duchesne,Duchesne +dukes,Dukes +dukes county,Dukes +dundy,Dundy +dunklin,Dunklin +dunn,Dunn +dupage,DuPage +duplin,Duplin +durham,Durham +dutchess,Dutchess +duval,Duval +duval county,Duval +dyer,Dyer +eagle,Eagle +early,Early +east baton rouge parish,East Baton Rouge Parish +east carroll parish,East Carroll Parish +east feliciana parish,East Feliciana Parish +eastern district,Eastern District +eastland,Eastland +eastland county,Eastland +eaton,Eaton +eau claire,Eau Claire +echols,Echols +ector,Ector +eddy,Eddy +eddy county,Eddy +edgar,Edgar +edgecombe,Edgecombe +edgefield,Edgefield +edmonson,Edmonson +edmonson county,Edmonson +edmunds,Edmunds +edwards,Edwards +effingham,Effingham +el dorado,El Dorado +el paso,El Paso +elbert,Elbert +elk,Elk +elkhart,Elkhart +elkhart county,Elkhart +elko,Elko +elliott,Elliott +elliott county,Elliott +ellis,Ellis +ellis county,Ellis +ellsworth,Ellsworth +elmore,Elmore +elpaso,El Paso +emanuel,Emanuel +emery,Emery +emmet,Emmet +emmet county,Emmet +emmons,Emmons +emmons county,Emmons +emporia city,Emporia city +erath,Erath +erie,Erie +escambia,Escambia +esmeralda,Esmeralda +essex,Essex +essex county,Essex +estill,Estill +etowah,Etowah +eureka,Eureka +evangeline parish,Evangeline Parish +evans,Evans +fairbanks north star borough,Fairbanks North Star Borough +fairbault county,Faribault +fairfax,Fairfax +fairfax city,Fairfax city +fairfield,Fairfield +fajardo municipio,Fajardo Municipio +fall river,Fall River +fallon,Fallon +fallon county,Fallon +falls,Falls +falls church city,Falls Church city +falls county,Falls +fannin,Fannin +fannin county,Fannin +faribault,Faribault +faulk,Faulk +faulkner,Faulkner +fauquier,Fauquier +fayette,Fayette +fayette county,Fayette +fayette county,Fayette +fentress,Fentress +fergus,Fergus +fergus county,Fergus +ferry,Ferry +fillmore,Fillmore +finney,Finney +fisher,Fisher +fisher county,Fisher +flagler,Flagler +flathead,Flathead +flathead county,Flathead +fleming,Fleming +fleming county,Fleming +florence,Florence +florida municipio,Florida Municipio +floyd,Floyd +floyd county,Floyd +floyd county,Floyd +fluvanna,Fluvanna +foard,Foard +foard county,Foard +fond du lac,Fond du Lac +ford,Ford +forest,Forest +forrest,Forrest +forsyth,Forsyth +fort bend,Fort Bend +foster,Foster +foster county,Foster +fountain,Fountain +franklin,Franklin +franklin city,Franklin city +franklin county,Franklin +"franklin county,ma",Franklin +franklin parish,Franklin Parish +frederick,Frederick +fredericksburg city,Fredericksburg city +freeborn,Freeborn +freeborn county,Freeborn +freestone,Freestone +freestone county,Freestone +fremont,Fremont +fremont county,Fremont +fresno,Fresno +frio,Frio +frio county,Frio +frontier,Frontier +fulton,Fulton +furnas,Furnas +gadsden,Gadsden +gage,Gage +gaines,Gaines +gaines county,Gaines +galax city,Galax city +gallatin,Gallatin +gallatin county,Gallatin +gallia,Gallia +galveston,Galveston +garden,Garden +garfield,Garfield +garfield county,Garfield +garland,Garland +garrard,Garrard +garrard county,Garrard +garrett,Garrett +garvin,Garvin +garza,Garza +garza county,Garza +gasconade,Gasconade +gaston,Gaston +gates,Gates +geary,Geary +geauga,Geauga +gem,Gem +genesee,Genesee +geneva,Geneva +gentry,Gentry +george,George +georgetown,Georgetown +gibson,Gibson +gila,Gila +gila county,Gila +gilchrist,Gilchrist +giles,Giles +gillespie,Gillespie +gillespie county,Gillespie +gilliam,Gilliam +gilmer,Gilmer +gilpin,Gilpin +glacier,Glacier +glacier county,Glacier +glades,Glades +gladwin,Gladwin +glascock,Glascock +glasscock,Glasscock +glenn,Glenn +gloucester,Gloucester +gloucester county,Gloucester +glynn,Glynn +gogebic,Gogebic +golden valley,Golden Valley +golden valley county,Golden Valley +goliad,Goliad +goliad county,Goliad +gonzales,Gonzales +gonzales county,Gonzales +goochland,Goochland +goodhue,Goodhue +gooding,Gooding +gordon,Gordon +goshen,Goshen +gosper,Gosper +gove,Gove +grady,Grady +grafton,Grafton +graham,Graham +graham county,Graham +grainger,Grainger +grand,Grand +grand forks,Grand Forks +grand isle,Grand Isle +grand traverse,Grand Traverse +granite,Granite +granite county,Granite +grant,Grant +grant county,Grant +grant parish,Grant Parish +granville,Granville +gratiot,Gratiot +graves,Graves +graves county,Graves +gray,Gray +grays harbor,Grays Harbor +grayson,Grayson +grayson county,Grayson +grayson county,Grayson +greeley,Greeley +green,Green +green county,Green +green lake,Green Lake +greenbrier,Greenbrier +greene,Greene +greenlee,Greenlee +greenlee county,Greenlee +greensville,Greensville +greenup,Greenup +greenville,Greenville +greenwood,Greenwood +greer,Greer +gregg,Gregg +gregory,Gregory +grenada,Grenada +grey,Gray +griggs,Griggs +griggs county,Griggs +grimes,Grimes +grimes county,Grimes +grundy,Grundy +grundy county,Grundy +guadalupe,Guadalupe +guam,Guam +guanica municipio,Guanica Municipio +guayama municipio,Guayama Municipio +guayanilla municipio,Guayanilla Municipio +guaynabo municipio,Guaynabo Municipio +guernsey,Guernsey +guilford,Guilford +gulf,Gulf +gunnison,Gunnison +gurabo municipio,Gurabo Municipio +guthrie,Guthrie +guthrie county,Guthrie +gwinnett,Gwinnett +haakon,Haakon +habersham,Habersham +haines borough,Haines Borough +hale,Hale +hale county,Hale +halifax,Halifax +hall,Hall +hamblen,Hamblen +hamilton,Hamilton +hamilton county,Hamilton +hamlin,Hamlin +hampden,Hampden +hampden county,Hampden +hampshire,Hampshire +hampshire county,Hampshire +hampton,Hampton +hampton city,Hampton city +hancock,Hancock +hancock county,Hancock +hancok county,Hancock +hand,Hand +hanover,Hanover +hansford,Hansford +hanson,Hanson +haralson,Haralson +hardee,Hardee +hardeman,Hardeman +hardeman county,Hardeman +hardin,Hardin +hardin county,Hardin +harding,Harding +hardy,Hardy +harford,Harford +harlan,Harlan +harlan county,Harlan +harmon,Harmon +harmon county,Harmon +harnett,Harnett +harney,Harney +harper,Harper +harper county,Harper +harris,Harris +harrison,Harrison +harrison county,Harrison +harrisonburg city,Harrisonburg city +hart,Hart +hart county,Hart +hartford,Hartford +hartley,Hartley +harvey,Harvey +haskell,Haskell +haskell county,Haskell +hatillo municipio,Hatillo Municipio +hawaii,Hawaii +hawkins,Hawkins +hayes,Hayes +hays,Hays +haywood,Haywood +heard,Heard +hemphill,Hemphill +hempstead,Hempstead +henderson,Henderson +hendricks,Hendricks +hendry,Hendry +hennepin,Hennepin +henrico,Henrico +henry,Henry +henry county,Henry +herkimer,Herkimer +hernando,Hernando +hertford,Hertford +hettinger,Hettinger +hettinger county,Hettinger +hickman,Hickman +hickman county,Hickman +hickory,Hickory +hidalgo,Hidalgo +highland,Highland +highlands,Highlands +hill,Hill +hill county,Hill +hill county,Hill +hillsborough,Hillsborough +hillsdale,Hillsdale +hinds,Hinds +hinsdale,Hinsdale +hitchcock,Hitchcock +hocking,Hocking +hockley,Hockley +hockley county,Hockley +hodgeman,Hodgeman +hoke,Hoke +holmes,Holmes +holmes county,Holmes +holt,Holt +honolulu,Honolulu +hood,Hood +hood river,Hood River +hooker,Hooker +hoonah-angoon census area,Hoonah-Angoon Census Area +hopewell city,Hopewell city +hopkins,Hopkins +hopkins county,Hopkins +hopkins county,Hopkins +hormigueros municipio,Hormigueros Municipio +horry,Horry +hot spring,Hot Spring +hot springs,Hot Springs +houghton,Houghton +houston,Houston +houston county,Houston +howard,Howard +howard county,Howard +howell,Howell +hubbard,Hubbard +hudson,Hudson +hudson county,Hudson +hudspeth,Hudspeth +hudspeth county,Hudspeth +hudspeth county,Hudspeth +hudspeth county=,Hudspeth +huerfano,Huerfano +hughes,Hughes +humacao municipio,Humacao Municipio +humboldt,Humboldt +humboldt county,Humboldt +humphreys,Humphreys +hunt,Hunt +hunterdon,Hunterdon +hunterdon county,Hunterdon +huntingdon,Huntingdon +huntington,Huntington +huron,Huron +hutchinson,Hutchinson +hyde,Hyde +iberia parish,Iberia Parish +iberville parish,Iberville Parish +ida,Ida +ida county,Ida +idaho,Idaho +imperial,Imperial +independence,Independence +indian river,Indian River +indiana,Indiana +indiana county,Indiana +ingham,Ingham +inyo,Inyo +ionia,Ionia +iosco,Iosco +iowa,Iowa +iredell,Iredell +irion,Irion +irion county,Irion +iron,Iron +iroquois,Iroquois +irwin,Irwin +isabela municipio,Isabela Municipio +isabella,Isabella +isanti,Isanti +island,Island +isle of wight,Isle of Wight +issaquena,Issaquena +itasca,Itasca +itawamba,Itawamba +izard,Izard +jack,Jack +jack county,Jack +jackson,Jackson +jackson county,Jackson +jackson county,Jackson +jackson parish,Jackson Parish +james city,James City +jasper,Jasper +jasper county,Jasper +jay,Jay +jayuya municipio,Jayuya Municipio +jeff davis,Jeff Davis +jeff davis county,Jeff Davis +jefferson,Jefferson +jefferson county,Jefferson +jefferson davis,Jefferson Davis +jefferson davis parish,Jefferson Davis Parish +jefferson parish,Jefferson Parish +jenkins,Jenkins +jennings,Jennings +jerauld,Jerauld +jerome,Jerome +jersey,Jersey +jessamine,Jessamine +jewell,Jewell +jim hogg,Jim Hogg +jim wells,Jim Wells +jim wells county,Jim Wells +jo daviess,Jo Daviess +johnson,Johnson +johnston,Johnston +johnston county,Johnston +jones,Jones +jones county,Jones +jones county,Jones +josephine,Josephine +juab,Juab +juana diaz municipio,Juana Diaz Municipio +judith basin,Judith Basin +judith basin county,Judith Basin +juncos municipio,Juncos Municipio +juneau,Juneau +juneau city and borough,Juneau City and Borough +juniata,Juniata +kalamazoo,Kalamazoo +kalawao,Kalawao +kalkaska,Kalkaska +kanabec,Kanabec +kanawha,Kanawha +kandiyohi,Kandiyohi +kane,Kane +kankakee,Kankakee +karnes,Karnes +karnes county,Karnes +kauai,Kauai +kaufman,Kaufman +kaufman county,Kaufman +kay,Kay +kay county,Kay +kearney,Kearney +kearny,Kearny +keith,Keith +kemper,Kemper +kenai peninsula borough,Kenai Peninsula Borough +kendall,Kendall +kendall county,Kendall +kenedy,Kenedy +kenedy county,Kenedy +kennebec,Kennebec +kenosha,Kenosha +kent,Kent +kent county,Kent +kenton,Kenton +keokuk,Keokuk +keokuk county,Keokuk +kern,Kern +kerr,Kerr +kershaw,Kershaw +ketchikan gateway borough,Ketchikan Gateway Borough +kewaunee,Kewaunee +keweenaw,Keweenaw +keya paha,Keya Paha +kidder,Kidder +kidder county,Kidder +kimball,Kimball +kimble,Kimble +kimble county,Kimble +kimble ocunty,Kimble +king,King +king and queen,King and Queen +king county,King +king george,King George +king william,King William +kingfisher,Kingfisher +kingfisher county,Kingfisher +kingman,Kingman +kings,Kings +kingsbury,Kingsbury +kinney,Kinney +kiowa,Kiowa +kit carson,Kit Carson +kitsap,Kitsap +kittitas,Kittitas +kittson,Kittson +klamath,Klamath +kleberg,Kleberg +kleberg county,Kleberg +klewberg county,Kleberg +klickitat,Klickitat +knott,Knott +knott county,Knott +knox,Knox +knox county,Knox +kodiak island borough,Kodiak Island Borough +koochiching,Koochiching +kootenai,Kootenai +kosciusko,Kosciusko +kossuth,Kossuth +kossuth county,Kossuth +la crosse,La Crosse +la paz,La Paz +la paz county,La Paz +la plata,La Plata +la salle,La Salle +la salle parish,La Salle Parish +labette,Labette +lac qui parle,Lac qui Parle +lackawanna,Lackawanna +laclede,Laclede +lafayette,Lafayette +lafayette parish,Lafayette Parish +lafourche parish,Lafourche Parish +lagrange,LaGrange +lajas municipio,Lajas Municipio +lake,Lake +lake and peninsula borough,Lake and Peninsula Borough +lake county,Lake +lake of the woods,Lake of the Woods +lamar,Lamar +lamar county,Lamar +lamb,Lamb +lamb county,Lamb +lamoille,Lamoille +lamoure,LaMoure +lamoure county,LaMoure +lampasas,Lampasas +lancaster,Lancaster +lander,Lander +lane,Lane +langlade,Langlade +lanier,Lanier +lapeer,Lapeer +laporte,LaPorte +laramie,Laramie +lares municipio,Lares Municipio +larimer,Larimer +larue,Larue +larue county,Larue +las animas,Las Animas +las marias municipio,Las Marias Municipio +las piedras municipio,Las Piedras Municipio +lasalle,LaSalle +lassen,Lassen +latah,Latah +latimer,Latimer +lauderdale,Lauderdale +laurel,Laurel +laurens,Laurens +lavaca,Lavaca +lavaca county,Lavaca +lawrence,Lawrence +le flore,Le Flore +le flore county,Le Flore +le sueur,Le Sueur +lea,Lea +leake,Leake +leavenworth,Leavenworth +lebanon,Lebanon +lee,Lee +lee county,Lee +leelanau,Leelanau +leflore,Leflore +lehigh,Lehigh +lemhi,Lemhi +lenawee,Lenawee +lenoir,Lenoir +leon,Leon +leon county,Leon +leslie,Leslie +letcher,Letcher +letcher county,Letcher +levy,Levy +lewis,Lewis +lewis and clark,Lewis and Clark +lewis and clark county,Lewis and Clark +lexington,Lexington +lexington city,Lexington city +liberty,Liberty +liberty county,Liberty +licking,Licking +limestone,Limestone +limestone county,Limestone +lincoln,Lincoln +lincoln county,Lincoln +lincoln parish,Lincoln Parish +linn,Linn +linn county,Linn +lipscomb,Lipscomb +litchfield,Litchfield +little river,Little River +live oak,Live Oak +live oak county,Live Oak +livingston,Livingston +livingston parish,Livingston Parish +llano,Llano +logan,Logan +logan county,Logan +loiza municipio,Loiza Municipio +long,Long +lonoke,Lonoke +lorain,Lorain +los alamos,Los Alamos +los angeles,Los Angeles +loudon,Loudon +loudoun,Loudoun +louisa,Louisa +louisa county,Louisa +loup,Loup +love,Love +love county,Love +loving,Loving +lowndes,Lowndes +lubbock,Lubbock +lucas,Lucas +lucas county,Lucas +luce,Luce +lumpkin,Lumpkin +luna,Luna +lunenburg,Lunenburg +luquillo municipio,Luquillo Municipio +luzerne,Luzerne +lycoming,Lycoming +lyman,Lyman +lynchburg city,Lynchburg city +lynn,Lynn +lynn county,Lynn +lyon,Lyon +lyon county,Lyon +mackinac,Mackinac +macomb,Macomb +macon,Macon +macoupin,Macoupin +madera,Madera +madison,Madison +madison county,Madison +madison county,Madison +madison parish,Madison Parish +magoffin,Magoffin +magoffin county,Magoffin +mahaska,Mahaska +mahaska county,Mahaska +mahnomen,Mahnomen +mahoning,Mahoning +major,Major +major county,Major +malheur,Malheur +manassas city,Manassas city +manassas park city,Manassas Park city +manatee,Manatee +manati municipio,Manati Municipio +manhattan,New York +manistee,Manistee +manitowoc,Manitowoc +manu'a district,Manu'a District +marathon,Marathon +marengo,Marengo +maricao municipio,Maricao Municipio +maricopa,Maricopa +maricopa county,Maricopa +maries,Maries +marin,Marin +marinette,Marinette +marion,Marion +marion county,Marion +marion county,Marion +mariposa,Mariposa +marlboro,Marlboro +marquette,Marquette +marsahll co,Marshall +marshall,Marshall +marshall co,Marshall +marshall co county,Marshall +marshall county,Marshall +marshallco county,Marshall +marshalltown county,Marshall +martin,Martin +martin county,Martin +martinsville city,Martinsville city +mason,Mason +massac,Massac +matagorda,Matagorda +matanuska-susitna borough,Matanuska-Susitna Borough +mathews,Mathews +maui,Maui +maunabo municipio,Maunabo Municipio +maury,Maury +maverick,Maverick +mayaguez municipio,Mayaguez Municipio +mayes,Mayes +mayes county,Mayes +mcclain,McClain +mccone,McCone +mccone county,McCone +mccook,McCook +mccormick,McCormick +mccracken,McCracken +mccreary,McCreary +mcculloch,McCulloch +mcculloch county,Mcculloch +mccurtain,McCurtain +mccurtain county,McCurtain +mcdonald,McDonald +mcdonough,McDonough +mcdowell,McDowell +mcduffie,McDuffie +mchenry,McHenry +mchenry county,McHenry +mcintosh,McIntosh +mcintosh county,McIntosh +mckean,McKean +mckenzie,McKenzie +mckinley,McKinley +mclean,McLean +mclean county,McLean +mclennan,McLennan +mclennan county,Mclennan +mcleod,McLeod +mcminn,McMinn +mcmullen,McMullen +mcmullen county,Mcmullen +mcnairy,McNairy +mcpherson,McPherson +meade,Meade +meade couinty,Meade +meade county,Meade +meade911ky.us,Meade +meagher,Meagher +meagher county,Meagher +mecklenburg,Mecklenburg +mecosta,Mecosta +medina,Medina +meeker,Meeker +meigs,Meigs +mellette,Mellette +menard,Menard +menard county,Menard +mendocino,Mendocino +menifee,Menifee +menominee,Menominee +merced,Merced +merced county,Merced +mercer,Mercer +mercer county,Mercer +meriwether,Meriwether +merrick,Merrick +merrimack,Merrimack +mesa,Mesa +metcalfe,Metcalfe +metcalfe county,Metcalfe +miami,Miami +miami-dade,Miami-Dade +middlesex,Middlesex +middlesex county,Middlesex +midland,Midland +midway islands,Midway Islands +mifflin,Mifflin +milam,Milam +milam county,Milam +millard,Millard +mille lacs,Mille Lacs +miller,Miller +miller county,Miller +mills,Mills +mills county,Mills +milwaukee,Milwaukee +miner,Miner +mineral,Mineral +mineral county,Mineral +mingo,Mingo +minidoka,Minidoka +minnehaha,Minnehaha +missaukee,Missaukee +mississippi,Mississippi +missoula,Missoula +missoula county,Missoula +mitchell,Mitchell +mitchell county,Mitchell +mobile,Mobile +moca municipio,Moca Municipio +modoc,Modoc +moffat,Moffat +mohave,Mohave +mohave county,Mohave +moniteau,Moniteau +monmouth,Monmouth +monmouth county,Monmouth +mono,Mono +monona,Monona +monona county,Monona +monongalia,Monongalia +monroe,Monroe +monroe county,Monroe +montague,Montague +montague county,Montague +montcalm,Montcalm +monterey,Monterey +montezuma,Montezuma +montgomery,Montgomery +montgomery county,Montgomery +montmorency,Montmorency +montour,Montour +montrose,Montrose +moody,Moody +moore,Moore +mora,Mora +morehouse parish,Morehouse Parish +morgan,Morgan +morgan county,Morgan +morovis municipio,Morovis Municipio +morrill,Morrill +morris,Morris +morris county,Morris +morris county,Morris +morrison,Morrison +morrow,Morrow +morton,Morton +morton county,Morton +motley,Motley +motley county,Motley +moultrie,Moultrie +mountrail,Mountrail +mower,Mower +muhlenberg,Muhlenberg +multnomah,Multnomah +murray,Murray +murray county,Murray +muscatine,Muscatine +muscatine county,Muscatine +muscogee,Muscogee +muskegon,Muskegon +muskingum,Muskingum +muskogee,Muskogee +muskogee county,Muskogee +musselshell,Musselshell +musselshell county,Musselshell +nacogdoches,Nacogdoches +nacogdoches county,Nacogdoches +naguabo municipio,Naguabo Municipio +nance,Nance +nantucket,Nantucket +nantucket county,Nantucket +napa,Napa +naranjito municipio,Naranjito Municipio +nash,Nash +nassau,Nassau +natchitoches parish,Natchitoches Parish +natrona,Natrona +navajo,Navajo +navajo county,Navajo +navarro,Navarro +nelson,Nelson +nelson county,Nelson +nemaha,Nemaha +neosho,Neosho +neshoba,Neshoba +ness,Ness +nevada,Nevada +new castle,New Castle +new hanover,New Hanover +new haven,New Haven +new kent,New Kent +new london,New London +new madrid,New Madrid +new york,New York +newaygo,Newaygo +newberry,Newberry +newport,Newport +newport news city,Newport News city +newton,Newton +newton county,Newton +nez perce,Nez Perce +niagara,Niagara +nicholas,Nicholas +nicollet,Nicollet +niobrara,Niobrara +noble,Noble +nobles,Nobles +nodaway,Nodaway +nolan,Nolan +nolan county,Nolan +nome census area,Nome Census Area +norfolk,Norfolk +norfolk city,Norfolk city +norfolk county,Norfolk +norman,Norman +north slope borough,North Slope Borough +northampton,Northampton +northern islands municipality,Northern Islands Municipality +northumberland,Northumberland +northwest arctic borough,Northwest Arctic Borough +norton,Norton +norton city,Norton city +nottoway,Nottoway +nowata,Nowata +nowata county,Nowata +noxubee,Noxubee +nuckolls,Nuckolls +nueces,Nueces +nueces county,Nueces +nye,Nye +oakland,Oakland +obion,Obion +o'brien,O'Brien +o'brien county,O'Brien +ocean,Ocean +ocean county,Ocean +oceana,Oceana +ochiltree,Ochiltree +oconee,Oconee +oconto,Oconto +ogemaw,Ogemaw +ogle,Ogle +oglethorpe,Oglethorpe +ohio,Ohio +okaloosa,Okaloosa +okanogan,Okanogan +okeechobee,Okeechobee +okfuskee,Okfuskee +oklahoma,Oklahoma +okmulgee,Okmulgee +okmulgee county,Okmulgee +oktibbeha,Oktibbeha +oldham,Oldham +oliver,Oliver +oliver county,Oliver +olmsted,Olmsted +oneida,Oneida +onondaga,Onondaga +onslow,Onslow +ontario,Ontario +ontonagon,Ontonagon +orange,Orange +orangeburg,Orangeburg +oregon,Oregon +orleans,Orleans +orleans parish,Orleans Parish +orocovis municipio,Orocovis Municipio +osage,Osage +osage county,Osage +osborne,Osborne +osceola,Osceola +osceola county,Osceola +oscoda,Oscoda +oswego,Oswego +otero,Otero +otoe,Otoe +otsego,Otsego +ottawa,Ottawa +ottawa county,Ottawa +otter tail,Otter Tail +ouachita,Ouachita +ouachita parish,Ouachita Parish +ouray,Ouray +outagamie,Outagamie +overton,Overton +owen,Owen +owen county,Owen +owsley,Owsley +owsley county,Owsley +owyhee,Owyhee +oxford,Oxford +ozark,Ozark +ozaukee,Ozaukee +pacific,Pacific +page,Page +page county,Page +palm beach,Palm Beach +palo alto,Palo Alto +palo alto county,Palo Alto +palo pinto,Palo Pinto +pamlico,Pamlico +panola,Panola +park,Park +park county,Park +parke,Parke +parker,Parker +parmer,Parmer +pasco,Pasco +pasquotank,Pasquotank +passaic,Passaic +passaic county,Passaic +patillas municipio,Patillas Municipio +patrick,Patrick +paulding,Paulding +pawnee,Pawnee +payette,Payette +payne,Payne +peach,Peach +pearl river,Pearl River +pecos,Pecos +pembina,Pembina +pembina county,Pembina +pemiscot,Pemiscot +pend oreille,Pend Oreille +pender,Pender +pendleton,Pendleton +pennington,Pennington +penobscot,Penobscot +penuelas municipio,Penuelas Municipio +peoria,Peoria +pepin,Pepin +perkins,Perkins +perquimans,Perquimans +perry,Perry +pershing,Pershing +person,Person +petersburg census area,Petersburg Census Area +petersburg city,Petersburg city +petroleum,Petroleum +petroleum county,Petroleum +pettis,Pettis +phelps,Phelps +philadelphia,Philadelphia +philadelphia county,Philadelphia +phillips,Phillips +phillips county,Phillips +piatt,Piatt +pickaway,Pickaway +pickens,Pickens +pickett,Pickett +pierce,Pierce +pierce county,Pierce +pike,Pike +pike county,Pike +pima,Pima +pima county,Pima +pinal,Pinal +pinal county,Pinal +pine,Pine +pinellas,Pinellas +pipestone,Pipestone +piscataquis,Piscataquis +pitkin,Pitkin +pitt,Pitt +pittsburg,Pittsburg +pittsburg county,Pittsburg +pittsylvania,Pittsylvania +piute,Piute +placer,Placer +plaquemines parish,Plaquemines Parish +platte,Platte +pleasants,Pleasants +plumas,Plumas +plymouth,Plymouth +plymouth county,Plymouth +pocahontas,Pocahontas +pocahontas county,Pocahontas +poinsett,Poinsett +pointe coupee parish,Pointe Coupee Parish +polk,Polk +polk county,Polk +polk county,Polk +polk county county,Polk +ponce municipio,Ponce Municipio +pondera,Pondera +pondera county,Pondera +pontotoc,Pontotoc +pope,Pope +poquoson city,Poquoson city +portage,Portage +porter,Porter +portsmouth city,Portsmouth city +posey,Posey +pottawatomie,Pottawatomie +pottawattamie,Pottawattamie +pottawattamie county,Pottawattamie +potter,Potter +powder river,Powder River +powder river county,Powder River +powell,Powell +powell county,Powell +power,Power +poweshiek,Poweshiek +poweshiek county,Poweshiek +powhatan,Powhatan +prairie,Prairie +prairie county,Prairie +pratt,Pratt +preble,Preble +prentiss,Prentiss +presidio,Presidio +presidio county,Presidio +presido,Presidio +presque isle,Presque Isle +preston,Preston +price,Price +prince edward,Prince Edward +prince george,Prince George +prince georges,Prince George's +prince george's,Prince George's +prince of wales-hyder census area,Prince of Wales-Hyder Census Area +prince william,Prince William +providence,Providence +prowers,Prowers +pueblo,Pueblo +pulaski,Pulaski +pulaski county,Pulaski +pushmataha,Pushmataha +pushmataha county,Pushmataha +putnam,Putnam +quay,Quay +quebradillas municipio,Quebradillas Municipio +queen annes,Queen Anne's +queen anne's,Queen Anne's +queens,Queens +quitman,Quitman +rabun,Rabun +racine,Racine +radford city,Radford city +rains,Rains +raleigh,Raleigh +ralls,Ralls +ramsey,Ramsey +ramsey county,Ramsey +randall,Randall +randolph,Randolph +rankin,Rankin +ransom,Ransom +ransom county,Ransom +rapides parish,Rapides Parish +rappahannock,Rappahannock +ravalli,Ravalli +ravalli county,Ravalli +rawlins,Rawlins +ray,Ray +reagan,Reagan +reagan county,Reagan +real,Real +red lake,Red Lake +red river,Red River +red river county,Red River +red river parish,Red River Parish +red willow,Red Willow +redwood,Redwood +reeves,Reeves +refugio,Refugio +refugio county,Refugio +reno,Reno +rensselaer,Rensselaer +renville,Renville +renville county,Renville +republic,Republic +reynolds,Reynolds +rhea,Rhea +rice,Rice +rich,Rich +richardson,Richardson +richland,Richland +richland county,Richland +richland parish,Richland Parish +richmond,Richmond +richmond city,Richmond city +riley,Riley +rincon municipio,Rincon Municipio +ringgold,Ringgold +ringgold county,Ringgold +rio arriba,Rio Arriba +rio blanco,Rio Blanco +rio grande,Rio Grande +rio grande municipio,Rio Grande Municipio +ripley,Ripley +ritchie,Ritchie +riverside,Riverside +roane,Roane +roanoke,Roanoke +roanoke city,Roanoke city +roberts,Roberts +robertson,Robertson +robertson county,Robertson +robertson county,Robertson +robeson,Robeson +rock,Rock +rock island,Rock Island +rockbridge,Rockbridge +rockcastle,Rockcastle +rockcastle county,Rockcastle +rockdale,Rockdale +rockingham,Rockingham +rockland,Rockland +rockwall,Rockwall +roger mills,Roger Mills +rogers,Rogers +rogers county,Rogers +rolette,Rolette +rolette county,Rolette +rooks,Rooks +roosevelt,Roosevelt +roosevelt county,Roosevelt +roscommon,Roscommon +rose island,Rose Island +roseau,Roseau +rosebud,Rosebud +rosebud county,Rosebud +ross,Ross +rota municipality,Rota Municipality +routt,Routt +rowan,Rowan +rowan county,Rowan +runnels,Runnels +runnels county,Runnels +rush,Rush +rusk,Rusk +russell,Russell +rutherford,Rutherford +rutland,Rutland +sabana grande municipio,Sabana Grande Municipio +sabine,Sabine +sabine county,Sabine +sabine parish,Sabine Parish +sac,Sac +sac county,Sac +sacramento,Sacramento +sagadahoc,Sagadahoc +saginaw,Saginaw +saguache,Saguache +saipan municipality,Saipan Municipality +salem,Salem +salem city,Salem city +salem county,Salem +salinas municipio,Salinas Municipio +saline,Saline +salt lake,Salt Lake +saluda,Saluda +sampson,Sampson +san augustine,San Augustine +san augustine county,San Augustine +san benito,San Benito +san bernardino,San Bernardino +san diego,San Diego +san francisco,San Francisco +san german municipio,San German Municipio +san jacinto,San Jacinto +san jacinto county,San Jacinto +san joaquin,San Joaquin +san juan,San Juan +san juan municipio,San Juan Municipio +san lorenzo municipio,San Lorenzo Municipio +san luis obispo,San Luis Obispo +san mateo,San Mateo +san miguel,San Miguel +san patricio,San Patricio +san patricio county,San Patricio +san saba,San Saba +san sebastian municipio,San Sebastian Municipio +sanborn,Sanborn +sanders,Sanders +sanders county,Sanders +sandoval,Sandoval +sandusky,Sandusky +sangamon,Sangamon +sanilac,Sanilac +sanpete,Sanpete +santa barbara,Santa Barbara +santa clara,Santa Clara +santa cruz,Santa Cruz +santa cruz county,Santa Cruz +santa fe,Santa Fe +santa isabel municipio,Santa Isabel Municipio +santa rosa,Santa Rosa +sarasota,Sarasota +saratoga,Saratoga +sargent,Sargent +sargent county,Sargent +sarpy,Sarpy +sauk,Sauk +saunders,Saunders +sawyer,Sawyer +schenectady,Schenectady +schleicher,Schleicher +schleicher county,Schleicher +schley,Schley +schoharie,Schoharie +schoolcraft,Schoolcraft +schuyler,Schuyler +schuylkill,Schuylkill +scioto,Scioto +scotland,Scotland +scott,Scott +scott county,Scott +scotts bluff,Scotts Bluff +screven,Screven +scurry,Scurry +scurry county,Scurry +searcy,Searcy +sebastian,Sebastian +sedgwick,Sedgwick +seminole,Seminole +seneca,Seneca +sequatchie,Sequatchie +sequoyah,Sequoyah +sequoyah county,Sequoyah +sevier,Sevier +seward,Seward +shackelford,Shackelford +shackelford county,Shackelford +shannon,Shannon +sharkey,Sharkey +sharp,Sharp +shasta,Shasta +shawano,Shawano +shawnee,Shawnee +sheboygan,Sheboygan +shelby,Shelby +shelby county,Shelby +shelby county,Shelby +shenandoah,Shenandoah +sherburne,Sherburne +sheridan,Sheridan +sheridan county,Sheridan +sherman,Sherman +shiawassee,Shiawassee +shoshone,Shoshone +sibley,Sibley +sierra,Sierra +silver bow,Silver Bow +silver bow county,Silver Bow +simpson,Simpson +simpson county,Simpson +sioux,Sioux +sioux county,Sioux +siskiyou,Siskiyou +sitka city and borough,Sitka City and Borough +skagit,Skagit +skagway municipality,Skagway Municipality +skamania,Skamania +slope,Slope +slope county,Slope +smith,Smith +smith county,Smith +smyth,Smyth +snohomish,Snohomish +snyder,Snyder +socorro,Socorro +solano,Solano +somerset,Somerset +somerset county,Somerset +somervell,Somervell +somervell county,Somervell +sonoma,Sonoma +southampton,Southampton +southeast fairbanks census area,Southeast Fairbanks Census Area +spalding,Spalding +spartanburg,Spartanburg +spencer,Spencer +spencer county,Spencer +spink,Spink +spokane,Spokane +spotsylvania,Spotsylvania +st bernard parish,St. Bernard Parish +st charles,St. Charles +st charles parish,St. Charles Parish +st clair,St. Clair +st clair county,St. Clair +st croix,St. Croix +st croix island,St. Croix Island +st francis,St. Francis +st francois,St. Francois +st helena parish,St. Helena Parish +st james parish,St. James Parish +st john island,St. John Island +st john the baptist parish,St. John the Baptist Parish +st johns,St. Johns +st joseph,St. Joseph +st landry parish,St. Landry Parish +st lawrence,St. Lawrence +st louis,St. Louis +st louis city,St. Louis city +st lucie,St. Lucie +st martin parish,St. Martin Parish +st mary parish,St. Mary Parish +st marys,St. Mary's +st mary's,St. Mary's +st tammany parish,St. Tammany Parish +st thomas island,St. Thomas Island +st. bernard parish,St. Bernard Parish +st. charles,St. Charles +st. charles parish,St. Charles Parish +st. clair,St. Clair +st. croix,St. Croix +st. croix island,St. Croix Island +st. francis,St. Francis +st. francois,St. Francois +st. helena parish,St. Helena Parish +st. james parish,St. James Parish +st. john island,St. John Island +st. john the baptist parish,St. John the Baptist Parish +st. johns,St. Johns +st. joseph,St. Joseph +st. landry parish,St. Landry Parish +st. lawrence,St. Lawrence +st. louis,St. Louis +st. louis city,St. Louis city +st. lucie,St. Lucie +st. martin parish,St. Martin Parish +st. mary parish,St. Mary Parish +st. marys,St. Mary's +st. mary's,St. Mary's +st. tammany parish,St. Tammany Parish +st. thomas island,St. Thomas Island +stafford,Stafford +stanislaus,Stanislaus +stanley,Stanley +stanly,Stanly +stanton,Stanton +stark,Stark +stark county,Stark +starke,Starke +starr,Starr +staunton city,Staunton city +ste genevieve,Ste. Genevieve +ste. genevieve,Ste. Genevieve +stearns,Stearns +steele,Steele +steele county,Steele +stephens,Stephens +stephens county,Stephens +stephenson,Stephenson +sterling,Sterling +sterling county,Sterling +steuben,Steuben +stevens,Stevens +stewart,Stewart +stillwater,Stillwater +stillwater county,Stillwater +stoddard,Stoddard +stokes,Stokes +stone,Stone +stonewall,Stonewall +stonewall county,Stonewall +storey,Storey +story,Story +story county,Story +strafford,Strafford +stutsman,Stutsman +stutsman county,Stutsman +sublette,Sublette +suffolk,Suffolk +suffolk city,Suffolk city +suffolk county,Suffolk +sullivan,Sullivan +sully,Sully +summers,Summers +summit,Summit +sumner,Sumner +sumter,Sumter +sunflower,Sunflower +surry,Surry +susquehanna,Susquehanna +sussex,Sussex +sussex county,Sussex +sutter,Sutter +sutton,Sutton +sutton county,Sutton +suwannee,Suwannee +swain,Swain +swains island,Swains Island +sweet grass,Sweet Grass +sweet grass county,Sweet Grass +sweetwater,Sweetwater +swift,Swift +swisher,Swisher +switzerland,Switzerland +talbot,Talbot +taliaferro,Taliaferro +talladega,Talladega +tallahatchie,Tallahatchie +tallapoosa,Tallapoosa +tama,Tama +tama county,Tama +taney,Taney +tangipahoa parish,Tangipahoa Parish +taos,Taos +tarrant,Tarrant +tate,Tate +tattnall,Tattnall +taylor,Taylor +taylor county,Taylor +tazewell,Tazewell +tehama,Tehama +telfair,Telfair +teller,Teller +tensas parish,Tensas Parish +terrebonne parish,Terrebonne Parish +terrell,Terrell +terry,Terry +terry county,Terry +teton,Teton +teton county,Teton +texas,Texas +thayer,Thayer +thomas,Thomas +throckmorton,Throckmorton +throckmorton county,Throckmorton +thurston,Thurston +tift,Tift +tillamook,Tillamook +tillman,Tillman +tinian municipality,Tinian Municipality +tioga,Tioga +tippah,Tippah +tippecanoe,Tippecanoe +tipton,Tipton +tishomingo,Tishomingo +titus,Titus +titus county,Titus +toa alta municipio,Toa Alta Municipio +toa baja municipio,Toa Baja Municipio +todd,Todd +tolland,Tolland +tom greeen county,Tom Green +tom green,Tom Green +tom green count,Tom Green +tom green county,Tom Green +tompkins,Tompkins +tooele,Tooele +toole,Toole +toole county,Toole +toombs,Toombs +torrance,Torrance +towner,Towner +towner county,Towner +towns,Towns +traill,Traill +traill county,Traill +transylvania,Transylvania +traverse,Traverse +travis,Travis +treasure,Treasure +treasure county,Treasure +trego,Trego +trempealeau,Trempealeau +treutlen,Treutlen +trigg,Trigg +trigg county,Trigg +trimble,Trimble +trimble county,Trimble +trinity,Trinity +trinity county,Trinity +tripp,Tripp +troup,Troup +trousdale,Trousdale +trujillo alto municipio,Trujillo Alto Municipio +trumbull,Trumbull +tucker,Tucker +tulare,Tulare +tulsa,Tulsa +tulsa county,Tulsa +tunica,Tunica +tuolumne,Tuolumne +turner,Turner +tuscaloosa,Tuscaloosa +tuscarawas,Tuscarawas +tuscola,Tuscola +twiggs,Twiggs +twin falls,Twin Falls +tyler,Tyler +tyler county,Tyler +tyrrell,Tyrrell +uinon,Union +uinta,Uinta +uintah,Uintah +ulster,Ulster +umatilla,Umatilla +unicoi,Unicoi +union,Union +union county,Union +union parish,Union Parish +upshur,Upshur +upson,Upson +upton,Upton +utah,Utah +utuado municipio,Utuado Municipio +uvalde,Uvalde +val verde,Val Verde +valdez-cordova census area,Valdez-Cordova Census Area +valencia,Valencia +valley,Valley +valley county,Valley +van buren,Van Buren +van buren county,Van Buren +van wert,Van Wert +van zandt,Van Zandt +vance,Vance +vanderburgh,Vanderburgh +vega alta municipio,Vega Alta Municipio +vega baja municipio,Vega Baja Municipio +venango,Venango +ventura,Ventura +vermilion,Vermilion +vermilion parish,Vermilion Parish +vermillion,Vermillion +vernon,Vernon +vernon parish,Vernon Parish +victoria,Victoria +victoria county,Victoria +vieques municipio,Vieques Municipio +vigo,Vigo +vilas,Vilas +villalba municipio,Villalba Municipio +vinton,Vinton +virginia beach city,Virginia Beach city +volusia,Volusia +wabash,Wabash +wabasha,Wabasha +wabaunsee,Wabaunsee +wade hampton census area,Wade Hampton Census Area +wadena,Wadena +wagoner,Wagoner +wagoner county,Wagoner +wahkiakum,Wahkiakum +wake,Wake +wakulla,Wakulla +waldo,Waldo +walker,Walker +walker county,Walker +walla walla,Walla Walla +wallace,Wallace +waller,Waller +waller county,Waller +wallowa,Wallowa +walsh,Walsh +walsh county,Walsh +walthall,Walthall +walton,Walton +walworth,Walworth +wapello,Wapello +wapello county,Wapello +ward,Ward +ward county,Ward +ware,Ware +warren,Warren +warren county,Warren +warrick,Warrick +wasatch,Wasatch +wasco,Wasco +waseca,Waseca +washakie,Washakie +washburn,Washburn +washington,Washington +washington county,Washington +washington county,Washington +"washington county, ny",Washington +washington parish,Washington Parish +washita,Washita +washoe,Washoe +washtenaw,Washtenaw +watauga,Watauga +watonwan,Watonwan +waukesha,Waukesha +waupaca,Waupaca +waushara,Waushara +wayne,Wayne +wayne county,Wayne +waynesboro city,Waynesboro city +weakley,Weakley +webb,Webb +weber,Weber +webster,Webster +webster county,Webster +webster parish,Webster Parish +weld,Weld +wells,Wells +wells county,Wells +west baton rouge parish,West Baton Rouge Parish +west carroll parish,West Carroll Parish +west feliciana parish,West Feliciana Parish +westchester,Westchester +western district,Western District +westmoreland,Westmoreland +westmoreland county,Westmoreland +weston,Weston +wetzel,Wetzel +wexford,Wexford +wharton,Wharton +whatcom,Whatcom +wheatland,Wheatland +wheatland county,Wheatland +wheeler,Wheeler +white,White +white pine,White Pine +whiteside,Whiteside +whitfield,Whitfield +whitley,Whitley +whitman,Whitman +wibaux,Wibaux +wibaux county,Wibaux +wichita,Wichita +wicomico,Wicomico +wilbarger,Wilbarger +wilcox,Wilcox +wilkes,Wilkes +wilkin,Wilkin +wilkinson,Wilkinson +will,Will +willacy,Willacy +williams,Williams +williamsburg,Williamsburg +williamsburg city,Williamsburg city +williamson,Williamson +wilson,Wilson +wilson county,Wilson +winchester city,Winchester city +windham,Windham +windsor,Windsor +winkler,Winkler +winn parish,Winn Parish +winnebago,Winnebago +winnebago county,Winnebago +winneshiek,Winneshiek +winneshiek county,Winneshiek +winona,Winona +winston,Winston +wirt,Wirt +wise,Wise +wolfe,Wolfe +wood,Wood +woodbury,Woodbury +woodbury county,Woodbury +woodford,Woodford +woodruff,Woodruff +woods,Woods +woods county,Woods +woodson,Woodson +woodward,Woodward +woodward county,Woodward +worcester,Worcester +worcester county,Worcester +worth,Worth +worth county,Worth +wrangell city and borough,Wrangell City and Borough +wright,Wright +wright county,Wright +wyandot,Wyandot +wyandotte,Wyandotte +wyoming,Wyoming +wythe,Wythe +yabucoa municipio,Yabucoa Municipio +yadkin,Yadkin +yakima,Yakima +yakutat city and borough,Yakutat City and Borough +yalobusha,Yalobusha +yamhill,Yamhill +yancey,Yancey +yankton,Yankton +yates,Yates +yauco municipio,Yauco Municipio +yavapai,Yavapai +yavapai county,Yavapai +yazoo,Yazoo +yell,Yell +yellow medicine,Yellow Medicine +yellowstone,Yellowstone +yellowstone county,Yellowstone +yoakum,Yoakum +yoakum county,Yoakum +yolo,Yolo +york,York +young,Young +young county,Young +yuba,Yuba +yukon-koyukuk census area,Yukon-Koyukuk Census Area +yuma,Yuma +yuma county,Yuma +zapata,Zapata +zavala,Zavala +ziebach,Ziebach diff --git a/nad_ch/application/validation_files/mapper/Mapper_Placement.csv b/nad_ch/application/validation_files/mapper/Mapper_Placement.csv new file mode 100644 index 0000000..38bab13 --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_Placement.csv @@ -0,0 +1,78 @@ +Source,Destination +,Unknown + ,Unknown + ,Unknown +a,Property Access +acc,Property Access +access,Property Access +addbld,Structure - Rooftop +added,Site +aerial imagery,Other +bldrelate,Structure - Entrance +building,Structure - Rooftop +building entrance,Structure - Entrance +cell tower,Other +center of area,Other +center of foundation,Other +center of lot,Other +center of parcel,Parcel - Centroid +center of structure,Structure - Rooftop +center of tanks,Other +center of unit,Structure - Interior +county map,Site +driveway,Property Access +dup,Unknown +geocode,Linear Geocode +geocoded,Linear Geocode +geocoding,Linear Geocode +gps,Other +issue,Unknown +lat/long,Unknown +linear geocode,Linear Geocode +linear geocoding,Linear Geocode +manual,Parcel - Other +manually.,Parcel - Other +o,Other +original placement,Unknown +other,Other +par,Parcel - Other +parcel,Parcel - Other +parcel - centroid,Parcel - Centroid +parcel - centroids,Parcel - Centroid +parcel - manual placement,Parcel - Other +parcel - other,Parcel - Other +parcel - other/manual pla,Parcel - Other +parcel centroid,Parcel - Centroid +parcel other,Parcel - Other +parcel-centroid,Parcel - Centroid +parcel-other/manual,Parcel - Other +parcels,Parcel - Other +placed on map,Parcel - Other +property access,Property Access +property access point,Property Access +propertyaccess,Property Access +road centerline,Linear Geocode +s,Structure - Rooftop +service entrance,Property Access +site,Site +site placement,Site +site visit,Other +str,Structure - Rooftop +structure,Structure - Rooftop +structure - entrance,Structure - Entrance +structure - interior,Structure - Interior +structure - interior unit,Structure - Interior +structure - rooftop,Structure - Rooftop +structure entrance,Structure - Entrance +structure interior,Structure - Interior +structure rooftop,Structure - Rooftop +structure-entrance,Structure - Entrance +structure-rooftop,Structure - Rooftop +subaddress,Structure - Interior +"unit, condo, office or suite",Structure - Rooftop +unknown,Unknown +utility asset,Site +vacac,Site +vacpa,Parcel - Other +web resource,Other +x,Unknown diff --git a/nad_ch/application/validation_files/mapper/Mapper_St_PosDir.csv b/nad_ch/application/validation_files/mapper/Mapper_St_PosDir.csv new file mode 100644 index 0000000..16c52f9 --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_St_PosDir.csv @@ -0,0 +1,55 @@ +Source,Destination +, + , + , +, +e,East +e.,East +ea,East +east,East +eastbound,[PosMod: eastbound] +eb,[PosMod: eastbound] +est,Est +n,North +n.,North +n.e.,Northeast +n.w.,Northwest +na, +nb,[PosMod: northbound] +ne,Northeast +no,North +nord,Nord +nord-est,Nord-Est +nord-ouest,Nord-Ouest +north,North +north east,Northeast +north west,Northwest +northbound,[PosMod: northbound] +northeast,Northeast +northwest,Northwest +null, +nw,Northwest +ouest,Ouest +s,South +s.,South +s.e.,Southeast +s.w.,Southwest +sb,[PosMod: southbound] +se,Southeast +so,South +south,South +south east,Southeast +south west,Southwest +southbound,[PosMod: southbound] +southeast,Southeast +southwest,Southwest +sud,Sud +sud-est,Sud-Est +sud-ouest,Sud-Ouest +sw,Southwest +w,West +w.,West +wb,[PosMod: westbound] +we,West +west,West +westbound,[PosMod: westbound] diff --git a/nad_ch/application/validation_files/mapper/Mapper_St_PosTyp.csv b/nad_ch/application/validation_files/mapper/Mapper_St_PosTyp.csv new file mode 100644 index 0000000..aef151c --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_St_PosTyp.csv @@ -0,0 +1,1109 @@ +Source,Destination +0, +, + , + , +, +1/2 st,Street +abbey,Abbey +ac,Access +acc,Access +access,Access +access rd,Access Road +access road,[PosMod: Access Road] +accs,Access +acre,Acres +acres,Acres +acrs,Acres +al,Alley +alabama highway,State Highway +alc,Alcove +alcove,Alcove +alcv,Alcove +allee,Alley +alley,Alley +ally,Alley +aly,Alley +an county road,County Road +anex,Annex +annex,Annex +annx,Annex +anx,Annex +app,Approach +appr,Approach +apprch,Approach +approach,Approach +apr,Approach +arc,Arcade +arcade,Arcade +arch,Arch +arizona highway,State Highway +arizona state route,State Route +arroyo,Arroyo +ary,Arroyo +av,Avenue +avct,Avenue Court +avdr,Avenue Drive +ave,Avenue +ave (cob),Avenue +ave (cs),Avenue +ave cir,Avenue Circle +ave ln,Avenue Lane +ave s,Avenue +ave*,Avenue +ave.,Avenue +avea,Avenue +aven,Avenue +avenida,Avenida +avenu,Avenue +avenua,Avenue +avenue,Avenue +avenue circle,Avenue Circle +avenue court,Avenue Court +avenue drive,Avenue Drive +avenue extension,"[PreTyp: Avenue], [PosMod: Extension]" +avenue footway,Avenue Footway +avenue lane,Avenue Lane +avenue loop,Avenue Loop +avenue place,Avenue Place +avenue terrace,Avenue Terrace +avenue way,Avenue Way +avenune,Avenue +avienda,Avenida +avln,Avenue Lane +avn,Avenue +avnue,Avenue +avpl,Avenue Place +avwy,Avenue Way +bah,Bahia +bahia,Bahia +bank,Bank +bay,Bay +bayo,Bayou +bayoo,Bayou +bayou,Bayou +bayway,Bayway +bch,Beach +beach,Beach +bend,Bend +bg,Burg +bgs,Burgs +bia,Bureau Of Indian Affairs Route +bia road,Bureau Of Indian Affairs Route +bia route,Bureau Of Indian Affairs Route +biar,Bureau Of Indian Affairs Route +bl,Boulevard +bldv,Boulevard +blf,Bluff +blfs,Bluffs +bluf,Bluff +bluff,Bluff +bluffs,Bluffs +blvd,Boulevard +blvd n,Boulevard +blvd.,Boulevard +bnd,Bend +boardwalk,Boardwalk +bot,Bottom +bottm,Bottom +bottom,Bottom +boul,Boulevard +boulevard,Boulevard +boulevard extension,"[PreTyp: Boulevard], [PosMod: Extension]" +boulv,Boulevard +br,Branch +branch,Branch +brdge,Bridge +brg,Bridge +bridge,Bridge +brk,Brook +brks,Brooks +brnch,Branch +brook,Brook +brooks,Brooks +brown county road,County Road +btm,Bottom +bureau of indian affairs,Bureau of Indian Affairs Route +bureau of indian affairs road,Bureau Of Indian Affairs Route +bureau of indian affairs route,Bureau Of Indian Affairs Route +burg,Burg +burgs,Burgs +bus,[PosMod: Business] +business,[PosMod: Business] +business highway,Highway +business interstate,"[PosMod: Business], [PreTyp: Interstate]" +business loop,"[PosMod: Business], [PosType: Loop]" +business spur,"[PosMod: Business], [PreTyp: Spur]" +business united states highway,"[PosMod: Business], [PreTyp: United States Highway]" +busn hwy,Highway +by,Bay +byp,Bypass +bypa,Bypass +bypas,Bypass +bypass,Bypass +byps,Bypass +byu,Bayou +byway,Byway +c r,County Road +calle,Calle +cam,Camino +caminito,Caminito +camino,Camino +camp,Camp +canyn,Canyon +canyon,Canyon +cape,Cape +carbon co rd,County Road +cartway,Cartway +causeway,Causeway +causwa,Causeway +cen,Center +cent,Center +center,Center +centers,Centers +centr,Center +centre,Centre +cer,Cerrada +cerrada,Cerrada +cfr,County Forest Road +chas,Chase +chase,Chase +chemin,Chemin +chse,Chase +ci,Circle +cir,Circle +cir (bz),Circle +cir (cob),Circle +cir n,Circle +cir s,Circle +cir.,Circle +circ,Circle +circl,Circle +circle,Circle +circle drive,Circle Drive +circles,Circles +circuit,Circuit +circulo,Circulo +circus,Circus +cire,"[PosTyp: Circle], [PosDir: East]" +cirn,"[PosTyp: Circle], [PosDir: North]" +cirs,Circles +cirw,"[PosTyp: Circle], [PosDir: West]" +clb,Club +clf,Cliff +clfs,Cliffs +cliff,Cliff +cliffs,Cliffs +cll,Calle +clle,Calle +clos,Close +close,Close +club,Club +cluster,Cluster +cmn,Common +cmns,Commons +cmp,Camp +cmt,Caminito +cnctr,Connector +cnrd,County Road +cnrt,County Route +cnter,Center +cntr,Center +cnyn,Canyon +co hwy,County Highway +co rd,County Road +coast highway,Coast Highway +comanche county road,County Road +common,Common +commons,Commons +con,Connector +conc,Concourse +concession road,Concession Road +concourse,Concourse +concrs,Concourse +conn,Connector +connect,Connect +connector,Connector +cor,Corner +cord,County Road +corner,Corner +corners,Corners +corridor,Corridor +cors,Corners +corso,Corso +corta,Corta +corte,Corte +county road,County Road +county forest road,County Forest Road +county highway,County Highway +county hwy,County Highway +county rd,County Road +county road,County Road +county route,County Route +county state aid highway,County State Aid Highway +countyroad,County Road +course,Course +court,Court +court circle,Court Circle +court place,Court Place +court street,Court Street +court terrace,Court Terrace +court way,Court Way +courts,Courts +cove,Cove +coves,Coves +cp,Camp +cpe,Cape +cr,County Road +cr 651,County Road +cr4,County Road +crcl,Circle +crcle,Circle +crdr,Circle Drive +creek,Creek +cres,Crescent +crescent,Crescent +crest,Crest +crk,Creek +cross,Cross +cross road,Crossroad +crossing,Crossing +crossings,Crossings +crossover,Crossover +crossroad,Crossroad +crossroads,Crossroads +crossway,Crossway +crse,Course +crsent,Crescent +crsg,Crossing +crsnt,Crescent +crssng,Crossing +crst,Crest +crt,Court +crte,Corte +cswy,Causeway +ct,Court +ct (pvt),Court +ct n,Court +ct s,Court +ct.,Court +cte,"[PosTyp: Court], [PosDir: East]" +ctf,Cutoff +ctr,Center +ctrs,Centers +cts,Courts +ctw,"[PosTyp: Court], [PosDir: West]" +cty hwy,County Highway +curv,Curve +curve,Curve +custer county road,County Road +cutoff,Cutoff +cutoff road,Cutoff Road +cutting,Cutting +cv,Cove +cve,Cove +cvs,Coves +cyn,Canyon +dale,Dale +dam,Dam +dawson county road,County Road +dell,Dell +div,Divide +divide,Divide +dl,Dale +dm,Dam +dns,Downs +down,Down +downs,Downs +dr,Drive +dr (bz),Drive +dr (cob),Drive +dr (cs),Drive +dr (tamu),Drive +dr e,Drive +dr n,Drive +dr s,Drive +dr w,Drive +dr.,Drive +draw,Draw +drc,Drive +drd,Drive +drift,Drift +driv,Drive +drive,Drive +drive circle,Drive Circle +drive extension,"[PreTyp: Drive], [PosMod: Extension]" +drive lane,Drive Lane +drive road,Drive Road +drives,Drives +driveway,Driveway +drn,"[PosTyp: Drive], [PosDir: North]" +drs,Drives +drv,Drive +drw,Draw +drwy,Driveway +dv,Divide +dvd,Divide +dvwy,Driveway +dwcr,County Road +dwns,Downs +echo,Echo +edge,Edge +end,End +ent,Entrada +entrada,Entrada +entrance,Entrance +entry,Entry +esp,Esplanade +espl,Esplanade +esplanade,Esplanade +esplnd,Esplanade +est,Estate +estate,Estate +estates,Estates +ests,Estates +exc,Exchange +exch,Exchange +exchange,Exchange +exchg,Exchange +exit,Exit +exp,Expressway +expr,Expressway +express,Expressway +expressway,Expressway +exprwy,Expressway +expw,Expressway +expwy,Expressway +expy,Expressway +ext,Extension +extension,Extension +extensions,Extensions +extn,Extension +extnsn,Extension +exts,Extensions +f m,Farm to Market +f.m.,Farm to Market +fairway,Fairway +fall,Fall +falls,Falls +fare,Fare +farm,Farm +farm to market,Farm to Market +farm to market highway,Farm to Market +farm to market rd,Farm to Market +farm to market road,Farm to Market +fash,Federal-Aid Secondary Highway +federal-aid secondary highway,Federal-Aid Secondary Highway +ferry,Ferry +field,Field +fields,Fields +fire road,Fire Road +flat,Flat +flats,Flats +fld,Field +flds,Fields +fll,Fall +fls,Falls +flt,Flat +flts,Flats +flyway,Flyway +fm,Farm to Market +ford,Ford +fords,Fords +fordway,Fordway +forest,Forest +forest road,Forest Road +forest service,United States Forest Service Road +forest service road,United States Forest Service Road +forests,Forest +forg,Forge +forge,Forge +forges,Forges +fork,Fork +forks,Forks +fort,Fort +frd,Ford +frds,Fords +freeway,Freeway +freewy,Freeway +frg,Forge +frgs,Forges +frk,Fork +frks,Forks +frnt,Front +front,Front +frontage,[PosMod: Frontage Road] +frontage road,[PosMod: Frontage Road] +frry,Ferry +frst,Forest +frt,Fort +frway,Freeway +frwy,Freeway +fry,Ferry +fs rd,United States Forest Service Road +fsr,United States Forest Service Road +ft,Fort +furlong,Furlong +fw,Fairway +fway,Fairway +fwy,Freeway +gables,Gables +gar,Garth +garden,Garden +gardens,Gardens +gardn,Garden +garth,Garth +gate,Gate +gates,Gates +gateway,Gateway +gatewy,Gateway +gatway,Gateway +gdn,Garden +gdns,Gardens +gl,Glen +glade,Glade +glen,Glen +glens,Glens +gln,Glen +glns,Glens +gorge,Gorge +gr,Green +grade,Grade +grden,Garden +grdn,Garden +grdns,Gardens +green,Green +greens,Greens +greenway,Greenway +grn,Green +grns,Greens +grov,Grove +grove,Grove +groves,Groves +grv,Grove +grvs,Groves +gtway,Gateway +gtwy,Gateway +h,Highway +harb,Harbor +harbor,Harbor +harbors,Harbors +harbour,Harbour +harbr,Harbor +haven,Haven +hayway,Hayway +hbr,Harbor +hbrs,Harbors +heath,Heath +heights,Heights +hghts,Heights +hgts,Heights +hideaway,Hideaway +highlands,Highlands +highway,Highway +highwy,Highway +hill,Hill +hills,Hills +hillway,Hillway +hiway,Highway +hiwy,Highway +hl,Hill +hllw,Hollow +hls,Hills +hlw,Hollow +ho county road,County Road +hollow,Hollow +hollows,Hollow +holw,Hollow +holws,Hollow +horn,Horn +horseshoe,Horseshoe +hrbor,Harbor +ht,Heights +hts,Heights +hvn,Haven +hw,Highway +hway,Highway +hwy,Highway +hwy 90,Highway +hy,Highway +hyw,Highway +i,Interstate +i h,Interstate +ih,Interstate +indian service road,Indian Service Road +inlet,Inlet +inlt,Inlet +inst,Interstate +int,Interstate +interstate,Interstate +interstate highway,Interstate +interval,Interval +intv,Interval +iowa,State Highway +iowa state highway,State Highway +iowa state highway w,State Highway +is,Island +isl,Isle +island,Island +islands,Islands +isle,Isle +isles,Isle +islnd,Island +islnds,Islands +iss,Islands +ist,Interstate +itvl,Interval +jct,Junction +jction,Junction +jctn,Junction +jctns,Junctions +jcts,Junctions +junction,Junction +junctions,Junctions +junctn,Junction +juncton,Junction +ka county road,County Road +keep,Keep +key,Key +keys,Keys +knl,Knoll +knls,Knolls +knob,Knob +knol,Knoll +knoll,Knoll +knolls,Knolls +ky,Key +kys,Keys +lair,Lair +lake,Lake +lake county road,County Road +lakes,Lakes +land,Land +landing,Landing +lane,Lane +lane avenue,Lane Avenue +lane circle,Lane Circle +lane court,Lane Court +lane drive,Lane Drive +lane road,Lane Road +lane way,Lane Way +lateral,Lateral +lck,Lock +lcks,Locks +ldg,Lodge +ldge,Lodge +ledge,Ledge +lf,Loaf +lgt,Light +lgts,Lights +light,Light +lights,Lights +line,Line +lk,Lake +lks,Lakes +ln,Lane +ln (bz),Lane +ln (cob),Lane +ln (cs),Lane +ln.,Lane +lnd,Land +lndg,Landing +lndng,Landing +loaf,Loaf +lock,Lock +locks,Locks +lodg,Lodge +lodge,Lodge +lookout,Lookout +loop,Loop +loop road,Loop Road +loops,Loop +lp,Loop +ma county road,County Road +mall,Mall +manor,Manor +manors,Manors +market,Market +md state rt,State Route +mdw,Meadow +mdws,Meadows +meadow,Meadow +meadows,Meadows +medows,Meadows +mews,Mews +mill,Mill +mills,Mills +mission,Mission +missn,Mission +mkt,Market +ml,Mill +mll,Mall +mls,Mills +mnhw,State Highway +mnr,Manor +mnrs,Manors +mnt,Mount +mntain,Mountain +mntn,Mountain +mntns,Mountains +moffat co rd,County Road +montana highway,State Highway +motorway,Motorway +mount,Mount +mountain,Mountain +mountains,Mountains +mountin,Mountain +msn,Mission +mssn,Mission +mt,Mount +mtin,Mountain +mtn,Mountain +mtns,Mountains +mtwy,Motorway +narrows,Narrows +national forest development road,National Forest Development Road +nck,Neck +neck,Neck +new mexico hwy,State Highway +new york city highway,Highway +new york state route,State Route +nm highway,State Highway +nook,Nook +north carolina highway,State Highway +null, +nys route,State Route +old,[PreMod: Old] +old county,"[PreMod: Old], [PreTyp: County Road]" +old county highway,"[PreMod: Old], [PreTyp: County Highway]" +old county rd,"[PreMod: Old], [PreTyp: County Road]" +old county road,"[PreMod: Old], [PreTyp: County Road]" +old highway,"[PreMod: Old], [PreTyp: Highway]" +old hwy,"[PreMod: Old], [PreTyp: Highway]" +old route,"[PreMod: Old], [PreTyp: Route]" +old state highway,"[PreMod: Old], [PreTyp: State Highway]" +old state hwy,"[PreMod: Old], [PreTyp: State Highway]" +old state road,"[PreMod: Old], [PreTyp: State Road]" +old state route,"[PreMod: Old], [PreTyp: State Route]" +old united state highway,"[PreMod: Old], [PreTyp: United States Highway]" +old united states highway,"[PreMod: Old], [PreTyp: United States Highway]" +old us,"[PreMod: Old], [PreTyp: United States Highway]" +old us highway,"[PreMod: Old], [PreTyp: United States Highway]" +opas,Overpass +orch,Orchard +orchard,Orchard +orchrd,Orchard +oval,Oval +overlook,Overlook +overpass,Overpass +ovi,Oval +ovl,Oval +ovlk,Overlook +park,Park +park drive,Park Drive +parke,Parke +parks,Parks +parkway,Parkway +parkways,Parkways +parkwy,Parkway +pas,Pass +paseo,Paseo +pass,Pass +passage,Passage +passway,Passway +path,Path +paths,Path +pathway,Pathway +pen,Peninsula +ph,Path +pike,Pike +pikes,Pike +pine,Pine +pines,Pines +pk,Park +pke,Pike +pkway,Parkway +pkwy,Parkway +pkwy n,"[PosTyp: Parkway], [PosDir: North]" +pkwyn,"[PosTyp: Parkway], [PosDir: North]" +pkwys,Parkways +pky,Parkway +pky e,Parkway +pky s,Parkway +pl,Place +pla,Placita +place,Place +placita,Placita +plain,Plain +plains,Plains +plaza,Plaza +pln,Plain +plns,Plains +plz,Plaza +plza,Plaza +pne,Pine +pnes,Pines +point,Point +pointe,Pointe +points,Points +port,Port +ports,Ports +pr,Prairie +pr rd,[PosMod: Private Road] +prairie,Prairie +private,[PosMod: Private Road] +private road,[PosMod: Private Road] +prk,Park +prkwy,Parkway +prky,Parkway +prm,Promenade +prom,Promenade +promenade,Promenade +prr,Prairie +prt,Port +prts,Ports +ps,Pass +psg,Passage +psge,Passage +pso,Paseo +pt,Point +pts,Points +ptwy,Pathway +public access,Public Access +pvt,[PosMod: Private Road] +pw,Parkway +pwky,Parkway +pwy,Parkway +py,Parkway +pz,Plaza +quarter,Quarter +quay,Quay +rad,Radial +radial,Radial +radiel,Radial +radl,Radial +ramp,Ramp +ranch,Ranch +ranch road,Ranch Road +ranches,Ranch +rancho,Rancho +raod,Road +rapid,Rapid +rapids,Rapids +rch,Rancho +rcho,Rancho +rd,Road +rd (bz),Road +rd (cob),Road +rd (cs),Road +rd w,Road +rd.,Road +rd,Road +rdf,Road +rdg,Ridge +rdge,Ridge +rdgs,Ridges +rds,Roads +reach,Reach +recreation road,Recreational Road +recreational rd,Recreational Road +recreational road,Recreational Road +rest,Rest +retreat,Retreat +rg,Ridge +ridge,Ridge +ridges,Ridges +rio blanco co rd,County Road +rird,River Road +rise,Rise +riv,River +river,River +river road,River Road +rivr,River +rm,Ramp +rmp,Ramp +rn,Run +rnch,Ranch +rnchs,Ranch +road,Road +road avenue,Road Avenue +road branch,Road Branch +road bypass,Road Bypass +road circle,Road Circle +road court,Road Court +road cutoff,Road Cutoff +road drive,Road Drive +road estates,Road Estates +road extension,"[PreTyp: Road], [PosMod: Extension]" +road landing,Road Landing +road lane,Road Lane +road place,Road Place +road terrace,Road Terrace +road way,Road Way +roads,Roads +roadway,Roadway +round,Round +route,Route +row,Row +rpd,Rapid +rpds,Rapids +rr,Rural Route +rs county road,County Road +rs county road,County Road +rst,Rest +rt,Route +rte,Route +rue,Rue +run,Run +runway,Runway +rvr,River +rw,Row +rway,Runway +sd highway,State Highway +sd hwy,State Highway +sh,State Highway +shl,Shoal +shls,Shoals +shoal,Shoal +shoals,Shoals +shoar,Shore +shoars,Shores +shore,Shore +shores,Shores +shr,Shore +shrs,Shores +shwy,State Highway +sideroad,Sideroad +skies,Skies +skwy,Skyway +skyway,Skyway +slip,Slip +smt,Summit +sp,Spur +spg,Spring +spgs,Springs +spng,Spring +spngs,Springs +spr,Spring +sprg,Springs +spring,Spring +springs,Springs +sprng,Spring +sprngs,Springs +spur,Spur +spurs,Spurs +sq,Square +sqr,Square +sqre,Square +sqrs,Squares +sqs,Squares +squ,Square +square,Square +squares,Squares +sr,State Route +srte,State Route +st,Street +st (bz),Street +st (cob),Street +st (cs),Street +st (tamu),Street +st extension,"[PreTyp: Street], [PosMod: Extension]" +st hwy,State Highway +st n,"[PosTyp: Street], [PosDir: North]" +st w,Street +st.,Street +st,Street +sta,Station +stat,Station +state highway,State Highway +state highway,State Highway +state hwy,State Highway +state parkway,State Parkway +state rd,State Road +state road,State Road +state route,State Route +state secondary,State Secondary +station,Station +statn,Station +stcr,Street Circle +stct,Street Court +stdr,Street Drive +sthy,State Highway +stln,Street Lane +stn,Station +stpkwy,State Parkway +stpl,Street Place +str,Street +stra,Stravenue +strand,Strand +strasse,Strasse +strav,Stravenue +straven,Stravenue +stravenue,Stravenue +stravn,Stravenue +strd,Street Road +stream,Stream +streeet,Street +street,Street +street annex,Street Annex +street avenue,Street Avenue +street bypass,Street Bypass +street circle,Street Circle +street court,Street Court +street crossing,Street Crossing +street drive,Street Drive +street lane,Street Lane +street loop,Street Loop +street park,Street Park +street parkway,Street Parkway +street passway,Street Passway +street pkwy,Street Parkway +street place,Street Place +street road,Street Road +street terrace,Street Terrace +street way,Street Way +streets,Streets +streme,Stream +strip,Strip +strm,Stream +strp,Strip +strt,Street +strvn,Stravenue +strvnue,Stravenue +sts,Streets +stwy,Street Way +sumit,Summit +sumitt,Summit +summit,Summit +sv,Stravenue +taxiway,Taxiway +te,Terrace +ter,Terrace +tern,Tern +terr,Terrace +terrace,Terrace +terrr,Terrace +texas highway,State Highway +throughway,Throughway +thruway,Thruway +thwy,Thruway +tl,Trail +tnpk,Turnpike +townline,Townline +township road,Township Road +tpke,Turnpike +tr,Trail +trace,Trace +traces,Trace +track,Track +tracks,Track +trafficway,Trafficway +trail,Trail +trailer,Trailer +traill,Trail +trails,Trail +trak,Track +trc,Trace +trce,Trace +trfy,Trafficway +triangle,Triangle +trk,Track +trks,Track +trl,Trail +trlr,Trailer +trlrs,Trailer +trls,Trail +trn,Turn +trnpk,Turnpike +trwy,Throughway +tunel,Tunnel +tunl,Tunnel +tunls,Tunnel +tunnel,Tunnel +tunnels,Tunnel +tunnl,Tunnel +turn,Turn +turnpike,Turnpike +turnpk,Turnpike +tway,Taxiway +un,Union +underpass,Underpass +union,Union +unions,Unions +united state highway,United States Highway +united states,United States Highway +united states forest service road,United States Forest Service Road +united states highway,United States Highway +united states hwy,United States Highway +united states route,United States Route +uns,Unions +upas,Underpass +us,United States Highway +us highway,United States Highway +us hwy,United States Highway +us hy,United States Highway +usfr,United States Forest Service Road +ushw,United States Highway +ushy,United States Highway +valley,Valley +valleys,Valleys +vally,Valley +vdct,Viaduct +ver,Vereda +vereda,Vereda +via,Via +viadct,Viaduct +viaduct,Viaduct +view,View +views,Views +vila,Villa +vill,Village +villa,Villa +villag,Village +village,Village +villages,Villages +ville,Ville +villg,Village +villiage,Village +vis,Vista +vist,Vista +vista,Vista +vl,Ville +vlg,Village +vlge,Village +vlgs,Villages +vlly,Valley +vly,Valley +vlys,Valleys +vr,Vereda +vst,Vista +vsta,Vista +vw,View +vws,Views +vz county road,County Road +waddy,Waddy +walk,Walk +walks,Walks +wall,Wall +way,Way +way loop,Way Loop +way terrace,Way Terrace +ways,Ways +weeg,Weeg +well,Well +wells,Wells +wharf,Wharf +whf,Wharf +whrf,Wharf +wk,Walk +wl,Well +wlk,Walk +wls,Wells +woods,Woods +wy,Way +wye,Wye +wynd,Wynd +xg,Crossing +xing,Crossing +xrd,Crossroad +xrds,Crossroads diff --git a/nad_ch/application/validation_files/mapper/Mapper_St_PreDir.csv b/nad_ch/application/validation_files/mapper/Mapper_St_PreDir.csv new file mode 100644 index 0000000..16c52f9 --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_St_PreDir.csv @@ -0,0 +1,55 @@ +Source,Destination +, + , + , +, +e,East +e.,East +ea,East +east,East +eastbound,[PosMod: eastbound] +eb,[PosMod: eastbound] +est,Est +n,North +n.,North +n.e.,Northeast +n.w.,Northwest +na, +nb,[PosMod: northbound] +ne,Northeast +no,North +nord,Nord +nord-est,Nord-Est +nord-ouest,Nord-Ouest +north,North +north east,Northeast +north west,Northwest +northbound,[PosMod: northbound] +northeast,Northeast +northwest,Northwest +null, +nw,Northwest +ouest,Ouest +s,South +s.,South +s.e.,Southeast +s.w.,Southwest +sb,[PosMod: southbound] +se,Southeast +so,South +south,South +south east,Southeast +south west,Southwest +southbound,[PosMod: southbound] +southeast,Southeast +southwest,Southwest +sud,Sud +sud-est,Sud-Est +sud-ouest,Sud-Ouest +sw,Southwest +w,West +w.,West +wb,[PosMod: westbound] +we,West +west,West +westbound,[PosMod: westbound] diff --git a/nad_ch/application/validation_files/mapper/Mapper_St_PreSep.csv b/nad_ch/application/validation_files/mapper/Mapper_St_PreSep.csv new file mode 100644 index 0000000..961ea05 --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_St_PreSep.csv @@ -0,0 +1,16 @@ +Source,Destination +, + , + , +at,at +de,de +de la,de la +de las,de las +del,del +des,des +in the,in the +of,of +of the,of the +on the,on the +to,to +to the,to the diff --git a/nad_ch/application/validation_files/mapper/Mapper_St_PreTyp.csv b/nad_ch/application/validation_files/mapper/Mapper_St_PreTyp.csv new file mode 100644 index 0000000..aef151c --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_St_PreTyp.csv @@ -0,0 +1,1109 @@ +Source,Destination +0, +, + , + , +, +1/2 st,Street +abbey,Abbey +ac,Access +acc,Access +access,Access +access rd,Access Road +access road,[PosMod: Access Road] +accs,Access +acre,Acres +acres,Acres +acrs,Acres +al,Alley +alabama highway,State Highway +alc,Alcove +alcove,Alcove +alcv,Alcove +allee,Alley +alley,Alley +ally,Alley +aly,Alley +an county road,County Road +anex,Annex +annex,Annex +annx,Annex +anx,Annex +app,Approach +appr,Approach +apprch,Approach +approach,Approach +apr,Approach +arc,Arcade +arcade,Arcade +arch,Arch +arizona highway,State Highway +arizona state route,State Route +arroyo,Arroyo +ary,Arroyo +av,Avenue +avct,Avenue Court +avdr,Avenue Drive +ave,Avenue +ave (cob),Avenue +ave (cs),Avenue +ave cir,Avenue Circle +ave ln,Avenue Lane +ave s,Avenue +ave*,Avenue +ave.,Avenue +avea,Avenue +aven,Avenue +avenida,Avenida +avenu,Avenue +avenua,Avenue +avenue,Avenue +avenue circle,Avenue Circle +avenue court,Avenue Court +avenue drive,Avenue Drive +avenue extension,"[PreTyp: Avenue], [PosMod: Extension]" +avenue footway,Avenue Footway +avenue lane,Avenue Lane +avenue loop,Avenue Loop +avenue place,Avenue Place +avenue terrace,Avenue Terrace +avenue way,Avenue Way +avenune,Avenue +avienda,Avenida +avln,Avenue Lane +avn,Avenue +avnue,Avenue +avpl,Avenue Place +avwy,Avenue Way +bah,Bahia +bahia,Bahia +bank,Bank +bay,Bay +bayo,Bayou +bayoo,Bayou +bayou,Bayou +bayway,Bayway +bch,Beach +beach,Beach +bend,Bend +bg,Burg +bgs,Burgs +bia,Bureau Of Indian Affairs Route +bia road,Bureau Of Indian Affairs Route +bia route,Bureau Of Indian Affairs Route +biar,Bureau Of Indian Affairs Route +bl,Boulevard +bldv,Boulevard +blf,Bluff +blfs,Bluffs +bluf,Bluff +bluff,Bluff +bluffs,Bluffs +blvd,Boulevard +blvd n,Boulevard +blvd.,Boulevard +bnd,Bend +boardwalk,Boardwalk +bot,Bottom +bottm,Bottom +bottom,Bottom +boul,Boulevard +boulevard,Boulevard +boulevard extension,"[PreTyp: Boulevard], [PosMod: Extension]" +boulv,Boulevard +br,Branch +branch,Branch +brdge,Bridge +brg,Bridge +bridge,Bridge +brk,Brook +brks,Brooks +brnch,Branch +brook,Brook +brooks,Brooks +brown county road,County Road +btm,Bottom +bureau of indian affairs,Bureau of Indian Affairs Route +bureau of indian affairs road,Bureau Of Indian Affairs Route +bureau of indian affairs route,Bureau Of Indian Affairs Route +burg,Burg +burgs,Burgs +bus,[PosMod: Business] +business,[PosMod: Business] +business highway,Highway +business interstate,"[PosMod: Business], [PreTyp: Interstate]" +business loop,"[PosMod: Business], [PosType: Loop]" +business spur,"[PosMod: Business], [PreTyp: Spur]" +business united states highway,"[PosMod: Business], [PreTyp: United States Highway]" +busn hwy,Highway +by,Bay +byp,Bypass +bypa,Bypass +bypas,Bypass +bypass,Bypass +byps,Bypass +byu,Bayou +byway,Byway +c r,County Road +calle,Calle +cam,Camino +caminito,Caminito +camino,Camino +camp,Camp +canyn,Canyon +canyon,Canyon +cape,Cape +carbon co rd,County Road +cartway,Cartway +causeway,Causeway +causwa,Causeway +cen,Center +cent,Center +center,Center +centers,Centers +centr,Center +centre,Centre +cer,Cerrada +cerrada,Cerrada +cfr,County Forest Road +chas,Chase +chase,Chase +chemin,Chemin +chse,Chase +ci,Circle +cir,Circle +cir (bz),Circle +cir (cob),Circle +cir n,Circle +cir s,Circle +cir.,Circle +circ,Circle +circl,Circle +circle,Circle +circle drive,Circle Drive +circles,Circles +circuit,Circuit +circulo,Circulo +circus,Circus +cire,"[PosTyp: Circle], [PosDir: East]" +cirn,"[PosTyp: Circle], [PosDir: North]" +cirs,Circles +cirw,"[PosTyp: Circle], [PosDir: West]" +clb,Club +clf,Cliff +clfs,Cliffs +cliff,Cliff +cliffs,Cliffs +cll,Calle +clle,Calle +clos,Close +close,Close +club,Club +cluster,Cluster +cmn,Common +cmns,Commons +cmp,Camp +cmt,Caminito +cnctr,Connector +cnrd,County Road +cnrt,County Route +cnter,Center +cntr,Center +cnyn,Canyon +co hwy,County Highway +co rd,County Road +coast highway,Coast Highway +comanche county road,County Road +common,Common +commons,Commons +con,Connector +conc,Concourse +concession road,Concession Road +concourse,Concourse +concrs,Concourse +conn,Connector +connect,Connect +connector,Connector +cor,Corner +cord,County Road +corner,Corner +corners,Corners +corridor,Corridor +cors,Corners +corso,Corso +corta,Corta +corte,Corte +county road,County Road +county forest road,County Forest Road +county highway,County Highway +county hwy,County Highway +county rd,County Road +county road,County Road +county route,County Route +county state aid highway,County State Aid Highway +countyroad,County Road +course,Course +court,Court +court circle,Court Circle +court place,Court Place +court street,Court Street +court terrace,Court Terrace +court way,Court Way +courts,Courts +cove,Cove +coves,Coves +cp,Camp +cpe,Cape +cr,County Road +cr 651,County Road +cr4,County Road +crcl,Circle +crcle,Circle +crdr,Circle Drive +creek,Creek +cres,Crescent +crescent,Crescent +crest,Crest +crk,Creek +cross,Cross +cross road,Crossroad +crossing,Crossing +crossings,Crossings +crossover,Crossover +crossroad,Crossroad +crossroads,Crossroads +crossway,Crossway +crse,Course +crsent,Crescent +crsg,Crossing +crsnt,Crescent +crssng,Crossing +crst,Crest +crt,Court +crte,Corte +cswy,Causeway +ct,Court +ct (pvt),Court +ct n,Court +ct s,Court +ct.,Court +cte,"[PosTyp: Court], [PosDir: East]" +ctf,Cutoff +ctr,Center +ctrs,Centers +cts,Courts +ctw,"[PosTyp: Court], [PosDir: West]" +cty hwy,County Highway +curv,Curve +curve,Curve +custer county road,County Road +cutoff,Cutoff +cutoff road,Cutoff Road +cutting,Cutting +cv,Cove +cve,Cove +cvs,Coves +cyn,Canyon +dale,Dale +dam,Dam +dawson county road,County Road +dell,Dell +div,Divide +divide,Divide +dl,Dale +dm,Dam +dns,Downs +down,Down +downs,Downs +dr,Drive +dr (bz),Drive +dr (cob),Drive +dr (cs),Drive +dr (tamu),Drive +dr e,Drive +dr n,Drive +dr s,Drive +dr w,Drive +dr.,Drive +draw,Draw +drc,Drive +drd,Drive +drift,Drift +driv,Drive +drive,Drive +drive circle,Drive Circle +drive extension,"[PreTyp: Drive], [PosMod: Extension]" +drive lane,Drive Lane +drive road,Drive Road +drives,Drives +driveway,Driveway +drn,"[PosTyp: Drive], [PosDir: North]" +drs,Drives +drv,Drive +drw,Draw +drwy,Driveway +dv,Divide +dvd,Divide +dvwy,Driveway +dwcr,County Road +dwns,Downs +echo,Echo +edge,Edge +end,End +ent,Entrada +entrada,Entrada +entrance,Entrance +entry,Entry +esp,Esplanade +espl,Esplanade +esplanade,Esplanade +esplnd,Esplanade +est,Estate +estate,Estate +estates,Estates +ests,Estates +exc,Exchange +exch,Exchange +exchange,Exchange +exchg,Exchange +exit,Exit +exp,Expressway +expr,Expressway +express,Expressway +expressway,Expressway +exprwy,Expressway +expw,Expressway +expwy,Expressway +expy,Expressway +ext,Extension +extension,Extension +extensions,Extensions +extn,Extension +extnsn,Extension +exts,Extensions +f m,Farm to Market +f.m.,Farm to Market +fairway,Fairway +fall,Fall +falls,Falls +fare,Fare +farm,Farm +farm to market,Farm to Market +farm to market highway,Farm to Market +farm to market rd,Farm to Market +farm to market road,Farm to Market +fash,Federal-Aid Secondary Highway +federal-aid secondary highway,Federal-Aid Secondary Highway +ferry,Ferry +field,Field +fields,Fields +fire road,Fire Road +flat,Flat +flats,Flats +fld,Field +flds,Fields +fll,Fall +fls,Falls +flt,Flat +flts,Flats +flyway,Flyway +fm,Farm to Market +ford,Ford +fords,Fords +fordway,Fordway +forest,Forest +forest road,Forest Road +forest service,United States Forest Service Road +forest service road,United States Forest Service Road +forests,Forest +forg,Forge +forge,Forge +forges,Forges +fork,Fork +forks,Forks +fort,Fort +frd,Ford +frds,Fords +freeway,Freeway +freewy,Freeway +frg,Forge +frgs,Forges +frk,Fork +frks,Forks +frnt,Front +front,Front +frontage,[PosMod: Frontage Road] +frontage road,[PosMod: Frontage Road] +frry,Ferry +frst,Forest +frt,Fort +frway,Freeway +frwy,Freeway +fry,Ferry +fs rd,United States Forest Service Road +fsr,United States Forest Service Road +ft,Fort +furlong,Furlong +fw,Fairway +fway,Fairway +fwy,Freeway +gables,Gables +gar,Garth +garden,Garden +gardens,Gardens +gardn,Garden +garth,Garth +gate,Gate +gates,Gates +gateway,Gateway +gatewy,Gateway +gatway,Gateway +gdn,Garden +gdns,Gardens +gl,Glen +glade,Glade +glen,Glen +glens,Glens +gln,Glen +glns,Glens +gorge,Gorge +gr,Green +grade,Grade +grden,Garden +grdn,Garden +grdns,Gardens +green,Green +greens,Greens +greenway,Greenway +grn,Green +grns,Greens +grov,Grove +grove,Grove +groves,Groves +grv,Grove +grvs,Groves +gtway,Gateway +gtwy,Gateway +h,Highway +harb,Harbor +harbor,Harbor +harbors,Harbors +harbour,Harbour +harbr,Harbor +haven,Haven +hayway,Hayway +hbr,Harbor +hbrs,Harbors +heath,Heath +heights,Heights +hghts,Heights +hgts,Heights +hideaway,Hideaway +highlands,Highlands +highway,Highway +highwy,Highway +hill,Hill +hills,Hills +hillway,Hillway +hiway,Highway +hiwy,Highway +hl,Hill +hllw,Hollow +hls,Hills +hlw,Hollow +ho county road,County Road +hollow,Hollow +hollows,Hollow +holw,Hollow +holws,Hollow +horn,Horn +horseshoe,Horseshoe +hrbor,Harbor +ht,Heights +hts,Heights +hvn,Haven +hw,Highway +hway,Highway +hwy,Highway +hwy 90,Highway +hy,Highway +hyw,Highway +i,Interstate +i h,Interstate +ih,Interstate +indian service road,Indian Service Road +inlet,Inlet +inlt,Inlet +inst,Interstate +int,Interstate +interstate,Interstate +interstate highway,Interstate +interval,Interval +intv,Interval +iowa,State Highway +iowa state highway,State Highway +iowa state highway w,State Highway +is,Island +isl,Isle +island,Island +islands,Islands +isle,Isle +isles,Isle +islnd,Island +islnds,Islands +iss,Islands +ist,Interstate +itvl,Interval +jct,Junction +jction,Junction +jctn,Junction +jctns,Junctions +jcts,Junctions +junction,Junction +junctions,Junctions +junctn,Junction +juncton,Junction +ka county road,County Road +keep,Keep +key,Key +keys,Keys +knl,Knoll +knls,Knolls +knob,Knob +knol,Knoll +knoll,Knoll +knolls,Knolls +ky,Key +kys,Keys +lair,Lair +lake,Lake +lake county road,County Road +lakes,Lakes +land,Land +landing,Landing +lane,Lane +lane avenue,Lane Avenue +lane circle,Lane Circle +lane court,Lane Court +lane drive,Lane Drive +lane road,Lane Road +lane way,Lane Way +lateral,Lateral +lck,Lock +lcks,Locks +ldg,Lodge +ldge,Lodge +ledge,Ledge +lf,Loaf +lgt,Light +lgts,Lights +light,Light +lights,Lights +line,Line +lk,Lake +lks,Lakes +ln,Lane +ln (bz),Lane +ln (cob),Lane +ln (cs),Lane +ln.,Lane +lnd,Land +lndg,Landing +lndng,Landing +loaf,Loaf +lock,Lock +locks,Locks +lodg,Lodge +lodge,Lodge +lookout,Lookout +loop,Loop +loop road,Loop Road +loops,Loop +lp,Loop +ma county road,County Road +mall,Mall +manor,Manor +manors,Manors +market,Market +md state rt,State Route +mdw,Meadow +mdws,Meadows +meadow,Meadow +meadows,Meadows +medows,Meadows +mews,Mews +mill,Mill +mills,Mills +mission,Mission +missn,Mission +mkt,Market +ml,Mill +mll,Mall +mls,Mills +mnhw,State Highway +mnr,Manor +mnrs,Manors +mnt,Mount +mntain,Mountain +mntn,Mountain +mntns,Mountains +moffat co rd,County Road +montana highway,State Highway +motorway,Motorway +mount,Mount +mountain,Mountain +mountains,Mountains +mountin,Mountain +msn,Mission +mssn,Mission +mt,Mount +mtin,Mountain +mtn,Mountain +mtns,Mountains +mtwy,Motorway +narrows,Narrows +national forest development road,National Forest Development Road +nck,Neck +neck,Neck +new mexico hwy,State Highway +new york city highway,Highway +new york state route,State Route +nm highway,State Highway +nook,Nook +north carolina highway,State Highway +null, +nys route,State Route +old,[PreMod: Old] +old county,"[PreMod: Old], [PreTyp: County Road]" +old county highway,"[PreMod: Old], [PreTyp: County Highway]" +old county rd,"[PreMod: Old], [PreTyp: County Road]" +old county road,"[PreMod: Old], [PreTyp: County Road]" +old highway,"[PreMod: Old], [PreTyp: Highway]" +old hwy,"[PreMod: Old], [PreTyp: Highway]" +old route,"[PreMod: Old], [PreTyp: Route]" +old state highway,"[PreMod: Old], [PreTyp: State Highway]" +old state hwy,"[PreMod: Old], [PreTyp: State Highway]" +old state road,"[PreMod: Old], [PreTyp: State Road]" +old state route,"[PreMod: Old], [PreTyp: State Route]" +old united state highway,"[PreMod: Old], [PreTyp: United States Highway]" +old united states highway,"[PreMod: Old], [PreTyp: United States Highway]" +old us,"[PreMod: Old], [PreTyp: United States Highway]" +old us highway,"[PreMod: Old], [PreTyp: United States Highway]" +opas,Overpass +orch,Orchard +orchard,Orchard +orchrd,Orchard +oval,Oval +overlook,Overlook +overpass,Overpass +ovi,Oval +ovl,Oval +ovlk,Overlook +park,Park +park drive,Park Drive +parke,Parke +parks,Parks +parkway,Parkway +parkways,Parkways +parkwy,Parkway +pas,Pass +paseo,Paseo +pass,Pass +passage,Passage +passway,Passway +path,Path +paths,Path +pathway,Pathway +pen,Peninsula +ph,Path +pike,Pike +pikes,Pike +pine,Pine +pines,Pines +pk,Park +pke,Pike +pkway,Parkway +pkwy,Parkway +pkwy n,"[PosTyp: Parkway], [PosDir: North]" +pkwyn,"[PosTyp: Parkway], [PosDir: North]" +pkwys,Parkways +pky,Parkway +pky e,Parkway +pky s,Parkway +pl,Place +pla,Placita +place,Place +placita,Placita +plain,Plain +plains,Plains +plaza,Plaza +pln,Plain +plns,Plains +plz,Plaza +plza,Plaza +pne,Pine +pnes,Pines +point,Point +pointe,Pointe +points,Points +port,Port +ports,Ports +pr,Prairie +pr rd,[PosMod: Private Road] +prairie,Prairie +private,[PosMod: Private Road] +private road,[PosMod: Private Road] +prk,Park +prkwy,Parkway +prky,Parkway +prm,Promenade +prom,Promenade +promenade,Promenade +prr,Prairie +prt,Port +prts,Ports +ps,Pass +psg,Passage +psge,Passage +pso,Paseo +pt,Point +pts,Points +ptwy,Pathway +public access,Public Access +pvt,[PosMod: Private Road] +pw,Parkway +pwky,Parkway +pwy,Parkway +py,Parkway +pz,Plaza +quarter,Quarter +quay,Quay +rad,Radial +radial,Radial +radiel,Radial +radl,Radial +ramp,Ramp +ranch,Ranch +ranch road,Ranch Road +ranches,Ranch +rancho,Rancho +raod,Road +rapid,Rapid +rapids,Rapids +rch,Rancho +rcho,Rancho +rd,Road +rd (bz),Road +rd (cob),Road +rd (cs),Road +rd w,Road +rd.,Road +rd,Road +rdf,Road +rdg,Ridge +rdge,Ridge +rdgs,Ridges +rds,Roads +reach,Reach +recreation road,Recreational Road +recreational rd,Recreational Road +recreational road,Recreational Road +rest,Rest +retreat,Retreat +rg,Ridge +ridge,Ridge +ridges,Ridges +rio blanco co rd,County Road +rird,River Road +rise,Rise +riv,River +river,River +river road,River Road +rivr,River +rm,Ramp +rmp,Ramp +rn,Run +rnch,Ranch +rnchs,Ranch +road,Road +road avenue,Road Avenue +road branch,Road Branch +road bypass,Road Bypass +road circle,Road Circle +road court,Road Court +road cutoff,Road Cutoff +road drive,Road Drive +road estates,Road Estates +road extension,"[PreTyp: Road], [PosMod: Extension]" +road landing,Road Landing +road lane,Road Lane +road place,Road Place +road terrace,Road Terrace +road way,Road Way +roads,Roads +roadway,Roadway +round,Round +route,Route +row,Row +rpd,Rapid +rpds,Rapids +rr,Rural Route +rs county road,County Road +rs county road,County Road +rst,Rest +rt,Route +rte,Route +rue,Rue +run,Run +runway,Runway +rvr,River +rw,Row +rway,Runway +sd highway,State Highway +sd hwy,State Highway +sh,State Highway +shl,Shoal +shls,Shoals +shoal,Shoal +shoals,Shoals +shoar,Shore +shoars,Shores +shore,Shore +shores,Shores +shr,Shore +shrs,Shores +shwy,State Highway +sideroad,Sideroad +skies,Skies +skwy,Skyway +skyway,Skyway +slip,Slip +smt,Summit +sp,Spur +spg,Spring +spgs,Springs +spng,Spring +spngs,Springs +spr,Spring +sprg,Springs +spring,Spring +springs,Springs +sprng,Spring +sprngs,Springs +spur,Spur +spurs,Spurs +sq,Square +sqr,Square +sqre,Square +sqrs,Squares +sqs,Squares +squ,Square +square,Square +squares,Squares +sr,State Route +srte,State Route +st,Street +st (bz),Street +st (cob),Street +st (cs),Street +st (tamu),Street +st extension,"[PreTyp: Street], [PosMod: Extension]" +st hwy,State Highway +st n,"[PosTyp: Street], [PosDir: North]" +st w,Street +st.,Street +st,Street +sta,Station +stat,Station +state highway,State Highway +state highway,State Highway +state hwy,State Highway +state parkway,State Parkway +state rd,State Road +state road,State Road +state route,State Route +state secondary,State Secondary +station,Station +statn,Station +stcr,Street Circle +stct,Street Court +stdr,Street Drive +sthy,State Highway +stln,Street Lane +stn,Station +stpkwy,State Parkway +stpl,Street Place +str,Street +stra,Stravenue +strand,Strand +strasse,Strasse +strav,Stravenue +straven,Stravenue +stravenue,Stravenue +stravn,Stravenue +strd,Street Road +stream,Stream +streeet,Street +street,Street +street annex,Street Annex +street avenue,Street Avenue +street bypass,Street Bypass +street circle,Street Circle +street court,Street Court +street crossing,Street Crossing +street drive,Street Drive +street lane,Street Lane +street loop,Street Loop +street park,Street Park +street parkway,Street Parkway +street passway,Street Passway +street pkwy,Street Parkway +street place,Street Place +street road,Street Road +street terrace,Street Terrace +street way,Street Way +streets,Streets +streme,Stream +strip,Strip +strm,Stream +strp,Strip +strt,Street +strvn,Stravenue +strvnue,Stravenue +sts,Streets +stwy,Street Way +sumit,Summit +sumitt,Summit +summit,Summit +sv,Stravenue +taxiway,Taxiway +te,Terrace +ter,Terrace +tern,Tern +terr,Terrace +terrace,Terrace +terrr,Terrace +texas highway,State Highway +throughway,Throughway +thruway,Thruway +thwy,Thruway +tl,Trail +tnpk,Turnpike +townline,Townline +township road,Township Road +tpke,Turnpike +tr,Trail +trace,Trace +traces,Trace +track,Track +tracks,Track +trafficway,Trafficway +trail,Trail +trailer,Trailer +traill,Trail +trails,Trail +trak,Track +trc,Trace +trce,Trace +trfy,Trafficway +triangle,Triangle +trk,Track +trks,Track +trl,Trail +trlr,Trailer +trlrs,Trailer +trls,Trail +trn,Turn +trnpk,Turnpike +trwy,Throughway +tunel,Tunnel +tunl,Tunnel +tunls,Tunnel +tunnel,Tunnel +tunnels,Tunnel +tunnl,Tunnel +turn,Turn +turnpike,Turnpike +turnpk,Turnpike +tway,Taxiway +un,Union +underpass,Underpass +union,Union +unions,Unions +united state highway,United States Highway +united states,United States Highway +united states forest service road,United States Forest Service Road +united states highway,United States Highway +united states hwy,United States Highway +united states route,United States Route +uns,Unions +upas,Underpass +us,United States Highway +us highway,United States Highway +us hwy,United States Highway +us hy,United States Highway +usfr,United States Forest Service Road +ushw,United States Highway +ushy,United States Highway +valley,Valley +valleys,Valleys +vally,Valley +vdct,Viaduct +ver,Vereda +vereda,Vereda +via,Via +viadct,Viaduct +viaduct,Viaduct +view,View +views,Views +vila,Villa +vill,Village +villa,Villa +villag,Village +village,Village +villages,Villages +ville,Ville +villg,Village +villiage,Village +vis,Vista +vist,Vista +vista,Vista +vl,Ville +vlg,Village +vlge,Village +vlgs,Villages +vlly,Valley +vly,Valley +vlys,Valleys +vr,Vereda +vst,Vista +vsta,Vista +vw,View +vws,Views +vz county road,County Road +waddy,Waddy +walk,Walk +walks,Walks +wall,Wall +way,Way +way loop,Way Loop +way terrace,Way Terrace +ways,Ways +weeg,Weeg +well,Well +wells,Wells +wharf,Wharf +whf,Wharf +whrf,Wharf +wk,Walk +wl,Well +wlk,Walk +wls,Wells +woods,Woods +wy,Way +wye,Wye +wynd,Wynd +xg,Crossing +xing,Crossing +xrd,Crossroad +xrds,Crossroads diff --git a/nad_ch/application/validation_files/mapper/Mapper_State.csv b/nad_ch/application/validation_files/mapper/Mapper_State.csv new file mode 100644 index 0000000..7fec6d8 --- /dev/null +++ b/nad_ch/application/validation_files/mapper/Mapper_State.csv @@ -0,0 +1,65 @@ +Source,Destination +,[Calculated Value] + ,[Calculated Value] + ,[Calculated Value] +ak,AK +al,AL +ar,AR +as,AS +az,AZ +ca,CA +co,CO +ct,CT +dc,DC +de,DE +fl,FL +fm,FM +ga,GA +gu,GU +hi,HI +ia,IA +id,ID +il,IL +in,IN +ks,KS +ky,KY +la,LA +louisiana,LA +ma,MA +md,MD +me,ME +mh,MH +mi,MI +mn,MN +mo,MO +mp,MP +ms,MS +mt,MT +nc,NC +nd,ND +ne,NE +new jersey,NJ +nh,NH +nj,NJ +nm,NM +nv,NV +ny,NY +oh,OH +ok,OK +or,OR +pa,PA +pr,PR +pw,PW +ri,RI +sc,SC +sd,SD +tn,TN +tx,TX +ut,UT +va,VA +vi,VI +vt,VT +wa,WA +wi,WI +wv,WV +wy,WY diff --git a/nad_ch/application/validation_files/required_fields.yaml b/nad_ch/application/validation_files/required_fields.yaml deleted file mode 100644 index 77acb5f..0000000 --- a/nad_ch/application/validation_files/required_fields.yaml +++ /dev/null @@ -1,19 +0,0 @@ -data_required_fields: - - Add_Number - - AddNo_Full - - St_Name - - StNam_Full - - County - - Inc_Muni - - Post_City - - State - - UUID - - AddAuth - - Longitude - - Latitude - - NatGrid - - Placement - - AddrPoint - - DateUpdate - - NAD_Source - - DataSet_ID diff --git a/nad_ch/domain/entities.py b/nad_ch/domain/entities.py index 8f8f9f8..6bc8904 100644 --- a/nad_ch/domain/entities.py +++ b/nad_ch/domain/entities.py @@ -27,6 +27,27 @@ def __repr__(self): class ColumnMap(Entity): + required_fields = [ + "Add_Number", + "AddNo_Full", + "St_Name", + "StNam_Full", + "County", + "Inc_Muni", + "Post_City", + "State", + "UUID", + "AddAuth", + "Longitude", + "Latitude", + "NatGrid", + "Placement", + "AddrPoint", + "DateUpdate", + "NAD_Source", + "DataSet_ID", + ] + def __init__( self, name: str, diff --git a/nad_ch/infrastructure/task_queue.py b/nad_ch/infrastructure/task_queue.py index 8aac8b1..a4ad8bd 100644 --- a/nad_ch/infrastructure/task_queue.py +++ b/nad_ch/infrastructure/task_queue.py @@ -6,12 +6,7 @@ ) from nad_ch.application.data_reader import DataReader from nad_ch.application.interfaces import TaskQueue -from nad_ch.application.validation import ( - update_feature_details, - initialize_overview_details, - update_overview_details, - finalize_overview_details, -) +from nad_ch.application.validation import DataValidator from nad_ch.config import QUEUE_BROKER_URL, QUEUE_BACKEND_URL from nad_ch.domain.repositories import DataSubmissionRepository from typing import Dict @@ -43,14 +38,13 @@ def load_and_validate(gdb_file_path: str, column_map: Dict[str, str]) -> dict: first_batch = True for gdf in data_reader.read_file_in_batches(path=gdb_file_path): if first_batch: - overview, feature_details = initialize_overview_details( - gdf, data_reader.valid_renames - ) - feature_details = update_feature_details(gdf, feature_details) - overview = update_overview_details(gdf, overview) + data_validator = DataValidator(data_reader.valid_renames) + data_validator.run(gdf) first_batch = False - overview = finalize_overview_details(overview, feature_details) - report = DataSubmissionReport(overview, list(feature_details.values())) + data_validator.finalize_overview_details() + report = DataSubmissionReport( + data_validator.report_overview, list(data_validator.report_features.values()) + ) return report_to_dict(report) diff --git a/tests/application/test_data_reader.py b/tests/application/test_data_reader.py index 91a9cc7..a59322b 100644 --- a/tests/application/test_data_reader.py +++ b/tests/application/test_data_reader.py @@ -14,45 +14,23 @@ def test_set_column_map(producer_column_maps): column_map_entity = producer_column_maps.get_by_name_and_version("testproducer1", 1) - reader = DataReader(column_map_entity.mapping) - - assert ( - reader.column_map["data_required_fields"] - == EXPECTED_DEFAULT_CONFIG["data_required_fields"] - ) - assert ( - reader.column_map["data_column_mapping"] - == TESTPRODUCER1_CONFIG["data_column_mapping"] - ) + reader = DataReader(column_map_entity.mapping, False) + assert reader.column_map == TESTPRODUCER1_CONFIG column_map_entity = producer_column_maps.get_by_name_and_version("testproducer2", 1) - reader = DataReader(column_map_entity.mapping) + reader = DataReader(column_map_entity.mapping, False) + assert reader.column_map == TESTPRODUCER2_CONFIG - assert ( - reader.column_map["data_required_fields"] - == EXPECTED_DEFAULT_CONFIG["data_required_fields"] - ) - assert ( - reader.column_map["data_column_mapping"] - == TESTPRODUCER2_CONFIG["data_column_mapping"] - ) - -def test_validate_column_map(producer_column_maps): +def test_validate_column_map_duplicate_inputs(producer_column_maps): column_map_entity = producer_column_maps.get_by_name_and_version("testproducer1", 1) - reader = DataReader(column_map_entity.mapping) with pytest.raises(Exception) as exc: - reader.validate_column_map() + _ = DataReader(column_map_entity.mapping) msg = "Duplicate inputs found for destination fields: COL_13 & COL_2, COL_5 & COL_6" assert str(exc.value) == msg - column_map_entity = producer_column_maps.get_by_name_and_version("testproducer2", 1) - reader = DataReader(column_map_entity.mapping) - # No error raised - reader.validate_column_map() - -def test_read_file_in_batches_shape(producer_column_maps): +def test_read_file_in_batches_shape1(producer_column_maps): file_path = os.path.join( TEST_DATA_DIR, "shapefiles/usa-major-cities/usa-major-cities.shp" ) @@ -69,10 +47,27 @@ def test_read_file_in_batches_shape(producer_column_maps): i += 1 -def test_read_file_in_batches_gdb(producer_column_maps): +def test_read_file_in_batches_shape2(producer_column_maps): + file_path = os.path.join( + TEST_DATA_DIR, "shapefiles/NM911_Address_202310/NM911_Address_202310.shp" + ) + column_map_entity = producer_column_maps.get_by_name_and_version("testproducer3", 1) + reader = DataReader(column_map_entity.mapping) + i = 0 + for gdf in reader.read_file_in_batches(path=file_path, batch_size=250): + baseline_path = os.path.join( + TEST_DATA_DIR, f"shapefiles/baselines/NM911_Address_202310-gdf-{i}.pkl" + ) + with open(baseline_path, "rb") as f: + gdf_baseline = pickle.load(f) + assert_frame_equal(gdf, gdf_baseline) + i += 1 + + +def test_read_file_in_batches_gdb1(producer_column_maps): file_path = os.path.join(TEST_DATA_DIR, "geodatabases/Naperville.gdb") column_map_entity = producer_column_maps.get_by_name_and_version("testproducer1", 1) - reader = DataReader(column_map_entity.mapping) + reader = DataReader(column_map_entity.mapping, False) i = 0 for gdf in reader.read_file_in_batches(path=file_path, batch_size=2000): baseline_path = os.path.join( diff --git a/tests/application/test_dto.py b/tests/application/test_dto.py index cd22f8e..f8f0d66 100644 --- a/tests/application/test_dto.py +++ b/tests/application/test_dto.py @@ -10,7 +10,11 @@ def test_to_dict_simple(): overview = DataSubmissionReportOverview( - feature_count=100, features_flagged=5, records_count=100, records_flagged=50 + feature_count=100, + features_flagged=5, + records_count=100, + records_flagged=50, + missing_required_fields=["field1"], ) overview_dict = report_to_dict(overview) @@ -22,6 +26,7 @@ def test_to_dict_simple(): "records_flagged": 50, "etl_update_required": False, "data_update_required": False, + "missing_required_fields": ["field1"], } diff --git a/tests/application/test_validation.py b/tests/application/test_validation.py index 76ad40c..5f82bd9 100644 --- a/tests/application/test_validation.py +++ b/tests/application/test_validation.py @@ -1,19 +1,10 @@ -from typing import Dict import geopandas as gpd from shapely.geometry import Polygon from nad_ch.application.dtos import ( DataSubmissionReportFeature, DataSubmissionReportOverview, ) -from nad_ch.application.validation import ( - get_feature_count, - get_record_count, - get_features_flagged, - update_feature_details, - initialize_overview_details, - update_overview_details, - finalize_overview_details, -) +from nad_ch.application.validation import DataValidator from tests.factories import ( create_fake_geopandas_dataframe, create_fake_column_map_from_gdf, @@ -42,85 +33,126 @@ def test_get_feature_count_finds_the_header_length_of_a_geopandas_dataframe(): coordinates = [(0, 0), (0, 1), (1, 1), (1, 0)] polygon = Polygon(coordinates) gdf = gpd.GeoDataFrame(geometry=[polygon]) - assert get_feature_count(gdf) == 1 + assert DataValidator.get_feature_count(gdf) == 1 def test_get_record_count(): gdf = create_fake_geopandas_dataframe(num_rows=2) - assert get_record_count(gdf) == 2 + assert DataValidator.get_record_count(gdf) == 2 def test_get_features_flagged_count(): gdf = create_fake_geopandas_dataframe() - column_maps = create_fake_column_map_from_gdf(gdf) - _, features = initialize_overview_details(gdf, column_maps) - features["St_Name"].null_count = 2 - features["Floor"].invalid_domain_count = 7 - assert get_features_flagged(features) == 2 + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + data_validator.initialize_overview_details(gdf, column_map) + data_validator.report_features["St_Name"].null_count = 2 + data_validator.report_features["Floor"].invalid_domain_count = 7 + assert data_validator.get_features_flagged(data_validator.report_features) == 2 + + +def test_load_domain_values(): + gdf = create_fake_geopandas_dataframe(num_rows=10) + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + domains = data_validator.domains + domain_specific_fields = ( + "County", + "Placement", + "St_PosDir", + "St_PosTyp", + "St_PreDir", + "St_PreSep", + "St_PreTyp", + "State", + ) + domain_keys = ("domain", "mapper") + assert all(key in domains.keys() for key in domain_keys) + assert all(field in domains["domain"] for field in domain_specific_fields) + assert all(field in domains["mapper"] for field in domain_specific_fields) def test_update_feature_details(): gdf = create_fake_geopandas_dataframe(num_rows=10) - column_maps = create_fake_column_map_from_gdf(gdf) - _, features = initialize_overview_details(gdf, column_maps) - feature_details = update_feature_details(gdf, features) - assert isinstance(feature_details.get("AddNum_Pre"), DataSubmissionReportFeature) - for nad_field in column_maps.values(): - feature = feature_details.get(nad_field) + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + data_validator.initialize_overview_details(gdf, column_map) + data_validator.update_feature_details(gdf) + assert isinstance( + data_validator.report_features.get("AddNum_Pre"), DataSubmissionReportFeature + ) + # Null count assertions + for nad_field in column_map.values(): + feature = data_validator.report_features.get(nad_field) if feature.nad_feature_name in NULL_NAD_FIELDS: assert feature.populated_count == 0 assert feature.null_count == 10 - elif ( - feature.nad_feature_name not in NULL_NAD_FIELDS - and feature.nad_feature_name not in gdf.columns - ): - print(feature.nad_feature_name) else: assert feature.populated_count == 10 assert feature.null_count == 0 - # TODO: Add assertions for invalid domain metrics + + # Invalid Domain assertions + feature = data_validator.report_features.get("County") + assert feature.invalid_domain_count == 10 + assert feature.valid_domain_count == 0 + assert feature.invalid_domains == ["Anycounty"] def test_initialize_overview_details(): gdf = create_fake_geopandas_dataframe(num_rows=1) - column_maps = create_fake_column_map_from_gdf(gdf) - overview, features = initialize_overview_details(gdf, column_maps) + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + data_validator.initialize_overview_details(gdf, column_map) overview_attributes_to_check = [ - attr for attr in overview.__annotations__.keys() if attr != "feature_count" + attr + for attr in data_validator.report_overview.__annotations__.keys() + if attr not in ("feature_count", "missing_required_fields") ] - assert isinstance(overview, DataSubmissionReportOverview) - assert overview.feature_count == 36 + assert isinstance(data_validator.report_overview, DataSubmissionReportOverview) + assert data_validator.report_overview.feature_count == 36 + assert data_validator.report_overview.missing_required_fields == [ + "NatGrid", + "AddrPoint", + ] assert all( - getattr(overview, attribute) == 0 for attribute in overview_attributes_to_check + getattr(data_validator.report_overview, attribute) == 0 + for attribute in overview_attributes_to_check ) - assert isinstance(features.get("St_Name"), DataSubmissionReportFeature) + assert isinstance( + data_validator.report_features.get("St_Name"), DataSubmissionReportFeature + ) assert all( - feature.nad_feature_name in gdf.columns for _, feature in features.items() + feature.nad_feature_name in gdf.columns + for _, feature in data_validator.report_features.items() ) def test_update_overview_details(): gdf = create_fake_geopandas_dataframe(num_rows=5) - column_maps = create_fake_column_map_from_gdf(gdf) - overview, _ = initialize_overview_details(gdf, column_maps) - overview = update_overview_details(gdf, overview) - assert overview.records_count == 5 - assert overview.records_flagged == 5 + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + data_validator.initialize_overview_details(gdf, column_map) + data_validator.update_overview_details(gdf) + assert data_validator.report_overview.records_count == 5 + assert data_validator.report_overview.records_flagged == 5 gdf = gdf[[col for col in gdf.columns if col not in NULL_NAD_FIELDS]] - overview, _ = initialize_overview_details(gdf, column_maps) - overview = update_overview_details(gdf, overview) - assert overview.records_count == 5 - assert overview.records_flagged == 0 + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + data_validator.initialize_overview_details(gdf, column_map) + data_validator.update_overview_details(gdf) + assert data_validator.report_overview.records_count == 5 + assert data_validator.report_overview.records_flagged == 0 def test_finalize_overview_details(): gdf = create_fake_geopandas_dataframe() - column_maps = create_fake_column_map_from_gdf(gdf) - overview, features = initialize_overview_details(gdf, column_maps) - features["St_Name"].null_count = 2 - features["Floor"].invalid_domain_count = 7 - overview = finalize_overview_details(overview, features) - assert overview.features_flagged == 2 + column_map = create_fake_column_map_from_gdf(gdf) + data_validator = DataValidator(column_map) + data_validator.initialize_overview_details(gdf, column_map) + data_validator.report_features["St_Name"].null_count = 2 + data_validator.report_features["Floor"].invalid_domain_count = 7 + data_validator.finalize_overview_details() + assert data_validator.report_overview.features_flagged == 2 diff --git a/tests/infrastructure/test_task_queue.py b/tests/infrastructure/test_task_queue.py index 5f2332d..5103e36 100644 --- a/tests/infrastructure/test_task_queue.py +++ b/tests/infrastructure/test_task_queue.py @@ -1,10 +1,8 @@ import os from nad_ch.infrastructure.task_queue import load_and_validate from tests.application.test_data_reader import TEST_DATA_DIR -from conftest import NAPERVILLE_GDB_REPORT, MAJOR_CITIES_SHP_REPORT -import geopandas as gpd -import random -import numpy as np +from conftest import MAJOR_CITIES_SHP_REPORT, NM911_ADDRESS_202310_REPORT +import pytest def test_load_and_validate_testprovider1( @@ -13,8 +11,10 @@ def test_load_and_validate_testprovider1( column_map = producer_column_maps.get_by_name_and_version("testproducer1", 1) file_path = os.path.join(TEST_DATA_DIR, "geodatabases/Naperville.gdb") task_result = load_and_validate.delay(file_path, column_map.mapping) - report_dict = task_result.get() - assert report_dict == NAPERVILLE_GDB_REPORT + msg = "Duplicate inputs found for destination fields: COL_13 & COL_2, COL_5 & COL_6" + with pytest.raises(Exception) as exc: + _ = task_result.get() + assert str(exc.value) == msg def test_load_and_validate_testprovider2( @@ -26,4 +26,32 @@ def test_load_and_validate_testprovider2( ) task_result = load_and_validate.delay(file_path, column_map.mapping) report_dict = task_result.get() + # Check that sorted values from missing required fields match + assert sorted(report_dict["overview"]["missing_required_fields"]) == sorted( + MAJOR_CITIES_SHP_REPORT["overview"]["missing_required_fields"] + ) + # Check all other values with missing required fields removed, since the list + # order is not consistent between test runs + del report_dict["overview"]["missing_required_fields"] + del MAJOR_CITIES_SHP_REPORT["overview"]["missing_required_fields"] assert report_dict == MAJOR_CITIES_SHP_REPORT + + +def test_load_and_validate_testprovider3( + celery_worker, celery_app, producer_column_maps +): + column_map = producer_column_maps.get_by_name_and_version("testproducer3", 1) + file_path = os.path.join( + TEST_DATA_DIR, "shapefiles/NM911_Address_202310/NM911_Address_202310.shp" + ) + task_result = load_and_validate.delay(file_path, column_map.mapping) + report_dict = task_result.get() + # Check that sorted values from missing required fields match + assert sorted(report_dict["overview"]["missing_required_fields"]) == sorted( + NM911_ADDRESS_202310_REPORT["overview"]["missing_required_fields"] + ) + # Check all other values with missing required fields removed, since the list + # order is not consistent between test runs + del report_dict["overview"]["missing_required_fields"] + del NM911_ADDRESS_202310_REPORT["overview"]["missing_required_fields"] + assert report_dict == NM911_ADDRESS_202310_REPORT diff --git a/tests/test_data/baselines.py b/tests/test_data/baselines.py index cd9997f..d3ddfbe 100644 --- a/tests/test_data/baselines.py +++ b/tests/test_data/baselines.py @@ -22,41 +22,37 @@ } TESTPRODUCER1_CONFIG = { - "data_column_mapping": { - "COL_0": ["ID"], - "COL_1": ["STCOFIPS"], - "COL_10": ["HISPPOP"], - "COL_11": ["AMERIND"], - "COL_12": ["ASIAN"], - "COL_13": ["PACIFIC"], - "COL_14": ["RACE2UP"], - "COL_15": ["OTHRACE"], - "COL_16": ["LASTUPDATE"], - "COL_17": ["LASTEDITOR"], - "COL_18": ["AGEMAJOR"], - "COL_19": ["AREASQMETER"], - "COL_2": ["TRACT", "Pacific"], - "COL_20": ["Shape_Length"], - "COL_21": ["Shape_Area"], - "COL_22": ["geometry"], - "COL_3": ["STFID"], - "COL_4": ["BLOCK"], - "COL_5": ["TOTPOP"], - "COL_6": ["POPDENS", "totPop"], - "COL_7": ["RACEBASE"], - "COL_8": ["WHITE"], - "COL_9": ["BLACK"], - } + "COL_0": ["ID"], + "COL_1": ["STCOFIPS"], + "COL_10": ["HISPPOP"], + "COL_11": ["AMERIND"], + "COL_12": ["ASIAN"], + "COL_13": ["PACIFIC"], + "COL_14": ["RACE2UP"], + "COL_15": ["OTHRACE"], + "COL_16": ["LASTUPDATE"], + "COL_17": ["LASTEDITOR"], + "COL_18": ["AGEMAJOR"], + "COL_19": ["AREASQMETER"], + "COL_2": ["TRACT", "Pacific"], + "COL_20": ["Shape_Length"], + "COL_21": ["Shape_Area"], + "COL_22": ["geometry"], + "COL_3": ["STFID"], + "COL_4": ["BLOCK"], + "COL_5": ["TOTPOP"], + "COL_6": ["POPDENS", "totPop"], + "COL_7": ["RACEBASE"], + "COL_8": ["WHITE"], + "COL_9": ["BLACK"], } TESTPRODUCER2_CONFIG = { - "data_column_mapping": { - "COL_0": ["NAME"], - "COL_1": ["ST"], - "COL_2": ["ZIP"], - "COL_3": ["RuleID"], - "COL_4": ["geometry"], - } + "COL_0": ["NAME"], + "COL_1": ["ST"], + "COL_2": ["ZIP"], + "COL_3": ["RuleID"], + "COL_4": ["geometry"], } NAPERVILLE_GDB_REPORT = { @@ -75,7 +71,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -84,7 +80,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -93,7 +89,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -102,7 +98,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -111,7 +107,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -120,7 +116,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -129,7 +125,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -138,7 +134,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -147,7 +143,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -156,7 +152,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -165,7 +161,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -174,7 +170,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -183,7 +179,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -192,7 +188,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -201,7 +197,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -210,7 +206,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -219,7 +215,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -228,7 +224,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -237,7 +233,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -246,7 +242,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -255,7 +251,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -264,7 +260,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, { @@ -273,7 +269,7 @@ "populated_count": 6012, "null_count": 0, "invalid_domain_count": 0, - "valid_domain_count": 0, + "valid_domain_count": 6012, "invalid_domains": [], }, ], @@ -286,6 +282,26 @@ "records_flagged": 6, "etl_update_required": False, "data_update_required": False, + "missing_required_fields": [ + "Add_Number", + "AddNo_Full", + "St_Name", + "StNam_Full", + "County", + "Inc_Muni", + "Post_City", + "State", + "UUID", + "AddAuth", + "Longitude", + "Latitude", + "NatGrid", + "Placement", + "AddrPoint", + "DateUpdate", + "NAD_Source", + "DataSet_ID", + ], }, "features": [ { @@ -335,3 +351,165 @@ }, ], } + +NM911_ADDRESS_202310_REPORT = { + "overview": { + "feature_count": 15, + "features_flagged": 9, + "records_count": 1000, + "records_flagged": 1000, + "etl_update_required": False, + "data_update_required": False, + "missing_required_fields": [ + "AddNo_Full", + "County", + "Inc_Muni", + "State", + "UUID", + "Longitude", + "Latitude", + "NatGrid", + "Placement", + "AddrPoint", + "NAD_Source", + "DataSet_ID", + ], + }, + "features": [ + { + "provided_feature_name": "ADD_NUMBER", + "nad_feature_name": "Add_Number", + "populated_count": 1000, + "null_count": 0, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "ADD_SUFFIX", + "nad_feature_name": "AddNum_Suf", + "populated_count": 114, + "null_count": 886, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "STR_DIR", + "nad_feature_name": "St_PreDir", + "populated_count": 160, + "null_count": 840, + "invalid_domain_count": 6, + "valid_domain_count": 154, + "invalid_domains": ["northerns", "southerns"], + }, + { + "provided_feature_name": "STR_PRETYP", + "nad_feature_name": "St_PreTyp", + "populated_count": 10, + "null_count": 990, + "invalid_domain_count": 0, + "valid_domain_count": 10, + "invalid_domains": [], + }, + { + "provided_feature_name": "STR_NAME", + "nad_feature_name": "St_Name", + "populated_count": 1000, + "null_count": 0, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "STR_SUFFIX", + "nad_feature_name": "St_PosTyp", + "populated_count": 839, + "null_count": 161, + "invalid_domain_count": 8, + "valid_domain_count": 831, + "invalid_domains": ["Drive Parkway", "Crossings Drive", "Unknown Drive"], + }, + { + "provided_feature_name": "POST_DIR", + "nad_feature_name": "St_PosDir", + "populated_count": 328, + "null_count": 672, + "invalid_domain_count": 0, + "valid_domain_count": 328, + "invalid_domains": [], + }, + { + "provided_feature_name": "ROAD_LABEL", + "nad_feature_name": "StNam_Full", + "populated_count": 1000, + "null_count": 0, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "COMNAME", + "nad_feature_name": "Post_City", + "populated_count": 717, + "null_count": 283, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "MSAG_COM", + "nad_feature_name": "Uninc_Comm", + "populated_count": 794, + "null_count": 206, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "ZIPCODE", + "nad_feature_name": "Zip_Code", + "populated_count": 859, + "null_count": 141, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "DPID", + "nad_feature_name": "AddAuth", + "populated_count": 1000, + "null_count": 0, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "DATE_UPD", + "nad_feature_name": "Effective", + "populated_count": 1000, + "null_count": 0, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "last_edi_1", + "nad_feature_name": "DateUpdate", + "populated_count": 1000, + "null_count": 0, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + { + "provided_feature_name": "EXCEPTION", + "nad_feature_name": "AnomStatus", + "populated_count": 791, + "null_count": 209, + "invalid_domain_count": 0, + "valid_domain_count": 0, + "invalid_domains": [], + }, + ], +} diff --git a/tests/test_data/column_maps/testproducer1.yaml b/tests/test_data/column_maps/testproducer1.yaml index 51ae22d..5c65c21 100644 --- a/tests/test_data/column_maps/testproducer1.yaml +++ b/tests/test_data/column_maps/testproducer1.yaml @@ -1,49 +1,48 @@ -data_column_mapping: - COL_0: - - ID - COL_1: - - STCOFIPS - COL_10: - - HISPPOP - COL_11: - - AMERIND - COL_12: - - ASIAN - COL_13: - - PACIFIC - COL_14: - - RACE2UP - COL_15: - - OTHRACE - COL_16: - - LASTUPDATE - COL_17: - - LASTEDITOR - COL_18: - - AGEMAJOR - COL_19: - - AREASQMETER - COL_2: - - TRACT - - Pacific - COL_20: - - Shape_Length - COL_21: - - Shape_Area - COL_22: - - geometry - COL_3: - - STFID - COL_4: - - BLOCK - COL_5: - - TOTPOP - COL_6: - - POPDENS - - totPop - COL_7: - - RACEBASE - COL_8: - - WHITE - COL_9: - - BLACK +COL_0: + - ID +COL_1: + - STCOFIPS +COL_10: + - HISPPOP +COL_11: + - AMERIND +COL_12: + - ASIAN +COL_13: + - PACIFIC +COL_14: + - RACE2UP +COL_15: + - OTHRACE +COL_16: + - LASTUPDATE +COL_17: + - LASTEDITOR +COL_18: + - AGEMAJOR +COL_19: + - AREASQMETER +COL_2: + - TRACT + - Pacific +COL_20: + - Shape_Length +COL_21: + - Shape_Area +COL_22: + - geometry +COL_3: + - STFID +COL_4: + - BLOCK +COL_5: + - TOTPOP +COL_6: + - POPDENS + - totPop +COL_7: + - RACEBASE +COL_8: + - WHITE +COL_9: + - BLACK diff --git a/tests/test_data/column_maps/testproducer2.yaml b/tests/test_data/column_maps/testproducer2.yaml index 38bfc4c..0f25a7f 100644 --- a/tests/test_data/column_maps/testproducer2.yaml +++ b/tests/test_data/column_maps/testproducer2.yaml @@ -1,11 +1,10 @@ -data_column_mapping: - COL_0: - - NAME - COL_1: - - ST - COL_2: - - ZIP - COL_3: - - RuleID - COL_4: - - geometry +COL_0: + - NAME +COL_1: + - ST +COL_2: + - ZIP +COL_3: + - RuleID +COL_4: + - geometry diff --git a/tests/test_data/column_maps/testproducer3.yaml b/tests/test_data/column_maps/testproducer3.yaml new file mode 100644 index 0000000..e533d73 --- /dev/null +++ b/tests/test_data/column_maps/testproducer3.yaml @@ -0,0 +1,77 @@ +AddNum_Pre: +Add_Number: + - ADD_NUMBER +AddNum_Suf: + - ADD_SUFFIX +AddNo_Full: +St_PreMod: +St_PreDir: + - STR_DIR +St_PreTyp: + - STR_PRETYP +St_PreSep: +St_Name: + - STR_NAME +St_PosTyp: + - STR_SUFFIX +St_PosDir: + - POST_DIR +St_PosMod: +St_PosSep: +St_PosMod: +StNam_Full: + - ROAD_LABEL +Building: +Floor: +Unit: +Room: +Seat: +Addtl_Loc: +SubAddress: +LandmkName: +County: +Inc_Muni: +Post_City: + - COMNAME +Census_Plc: +Uninc_Comm: + - MSAG_COM +Nbrhd_Comm: +NatAmArea: +NatAmSub: +Urbnztn_PR: +PlaceOther: +State: +Zip_Code: + - ZIPCODE +Plus_4: +UUID: +AddAuth: + - DPID +AddrRefSys: +Longitude: +Latitude: +NatGrid: +Elevation: +Placement: +AddrPoint: +Related_ID: +RelateType: +ParcelSrc: +Parcel_ID: +AddrClass: +Lifecycle: +Effective: + - DATE_UPD +Expire: +DateUpdate: + - last_edi_1 +AnomStatus: + - EXCEPTION +LocatnDesc: +Addr_Type: +PlaceNmTyp: +DeliverTyp: +NAD_Source: +DataSet_ID: + - FID diff --git a/tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.cpg b/tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.cpg new file mode 100644 index 0000000..cd89cb9 --- /dev/null +++ b/tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.cpg @@ -0,0 +1 @@ +ISO-8859-1 \ No newline at end of file diff --git a/tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.dbf b/tests/test_data/shapefiles/NM911_Address_202310/NM911_Address_202310.dbf new file mode 100644 index 0000000000000000000000000000000000000000..e15b8df25f3d5e55405e115f9845c854e73d2b08 GIT binary patch literal 1655770 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