Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6adc086b7e | |||
| 8c2b51ebed |
@@ -1014,8 +1014,9 @@ renamed or retyped line is a major.
|
|||||||
whole.** `data/sv_SE` alone no longer loads: a test loads `data` and prefixes
|
whole.** `data/sv_SE` alone no longer loads: a test loads `data` and prefixes
|
||||||
the locale, and `--no-shipped-data -d` takes the whole `data` folder or a set of
|
the locale, and `--no-shipped-data -d` takes the whole `data` folder or a set of
|
||||||
one's own.
|
one's own.
|
||||||
- **The default embed holds every Swedish postort and the US places of 25,000 or
|
- **The default embed holds every Swedish postort the import can place and give a
|
||||||
more.** Sweden fits whole in 700 KB; every US place of 10,000 would pass a
|
street-delivery code and a street, and the US places of 25,000 or more.** Sweden
|
||||||
|
fits whole in 700 KB; every US place of 10,000 would pass a
|
||||||
megabyte and fetch 1,200 counties of TIGER files, so the threshold sits where the
|
megabyte and fetch 1,200 counties of TIGER files, so the threshold sits where the
|
||||||
two countries match in size, and `--min-population` and
|
two countries match in size, and `--min-population` and
|
||||||
`--streets-per-locality` on the import scripts build a fuller set. The two trees
|
`--streets-per-locality` on the import scripts build a fuller set. The two trees
|
||||||
@@ -1030,6 +1031,13 @@ renamed or retyped line is a major.
|
|||||||
carries stale spellings; the nearest code across a border named the wrong kommun
|
carries stale spellings; the nearest code across a border named the wrong kommun
|
||||||
half the time it was tried, so a postort none of the three rules place is
|
half the time it was tried, so a postort none of the three rules place is
|
||||||
dropped, as is one not cased like a place name.
|
dropped, as is one not cased like a place name.
|
||||||
|
- **A highway designation is not a street, and a US postal code belongs to the place
|
||||||
|
holding most of its land inside places.** `I- 55 Bus` and `US Hwy 1` carry the
|
||||||
|
most address ranges in many places and would head every address, so the import
|
||||||
|
drops names spelled as a route. A ZCTA goes to the place its largest in-place part
|
||||||
|
lies in, and ships only when that place does; counting the land outside every
|
||||||
|
place too would drop a quarter of the places, whose codes straddle unincorporated
|
||||||
|
land, for a postal city the USPS mostly names the same way.
|
||||||
- **`List` advertises direct descents only.** `region.municipality.locality` is
|
- **`List` advertises direct descents only.** `region.municipality.locality` is
|
||||||
listed, and `region.locality` resolves too but is not: the set of every descent
|
listed, and `region.locality` resolves too but is not: the set of every descent
|
||||||
through a chain of five tables is every subsequence of it, and the direct chain is
|
through a chain of five tables is every subsequence of it, and the direct chain is
|
||||||
|
|||||||
@@ -2,12 +2,6 @@
|
|||||||
"""Rebuild data/geo/SE/*.tsv from SCB (CC0), GeoNames (CC BY 4.0) and Trafikverket NVDB (CC0).
|
"""Rebuild data/geo/SE/*.tsv from SCB (CC0), GeoNames (CC BY 4.0) and Trafikverket NVDB (CC0).
|
||||||
|
|
||||||
TRAFIKVERKET_API_KEY=… data-import/geo-se.py [--key-file FILE] [--cache DIR] [--streets-per-locality N] [--out DIR]
|
TRAFIKVERKET_API_KEY=… data-import/geo-se.py [--key-file FILE] [--cache DIR] [--streets-per-locality N] [--out DIR]
|
||||||
|
|
||||||
A locality is a GeoNames postort, placed in the municipality it names, else of its
|
|
||||||
tätort, else of most of its codes, and weighted by its tätort's population, else its
|
|
||||||
municipality's, else 200. Box codes are dropped by the digit after the postort's own
|
|
||||||
prefix. Each NVDB street segment goes to the nearest postal code centroid; a locality
|
|
||||||
keeps the N names with most segments.
|
|
||||||
"""
|
"""
|
||||||
import argparse
|
import argparse
|
||||||
import collections
|
import collections
|
||||||
@@ -95,7 +89,7 @@ def geonames(cache):
|
|||||||
def nvdb_segments(cache, key):
|
def nvdb_segments(cache, key):
|
||||||
path = cache / "nvdb-gatunamn.tsv"
|
path = cache / "nvdb-gatunamn.tsv"
|
||||||
if not path.exists():
|
if not path.exists():
|
||||||
with open(path, "w", encoding="utf-8") as out:
|
with open(path.with_suffix(".part"), "w", encoding="utf-8") as out:
|
||||||
change = "0"
|
change = "0"
|
||||||
while True:
|
while True:
|
||||||
query = (
|
query = (
|
||||||
@@ -116,6 +110,7 @@ def nvdb_segments(cache, key):
|
|||||||
change = result["INFO"]["LASTCHANGEID"]
|
change = result["INFO"]["LASTCHANGEID"]
|
||||||
if len(rows) < NVDB_PAGE:
|
if len(rows) < NVDB_PAGE:
|
||||||
break
|
break
|
||||||
|
path.with_suffix(".part").rename(path)
|
||||||
for line in path.read_text(encoding="utf-8").splitlines():
|
for line in path.read_text(encoding="utf-8").splitlines():
|
||||||
name, lon, lat = line.split("\t")
|
name, lon, lat = line.split("\t")
|
||||||
yield name, float(lat), float(lon)
|
yield name, float(lat), float(lon)
|
||||||
@@ -208,7 +203,8 @@ def streets(segments, codes, localities, per_locality):
|
|||||||
nearest = Nearest((r["lat"], r["lon"], r["locality"]) for r in codes if r["lat"] is not None and r["locality"] in localities)
|
nearest = Nearest((r["lat"], r["lon"], r["locality"]) for r in codes if r["lat"] is not None and r["locality"] in localities)
|
||||||
count = collections.Counter()
|
count = collections.Counter()
|
||||||
for name, lat, lon in segments:
|
for name, lat, lon in segments:
|
||||||
count[(nearest.find(lat, lon), name)] += 1
|
if name[0].isalpha():
|
||||||
|
count[(nearest.find(lat, lon), name)] += 1
|
||||||
of = collections.defaultdict(list)
|
of = collections.defaultdict(list)
|
||||||
for (locality, name), n in count.items():
|
for (locality, name), n in count.items():
|
||||||
of[locality].append((n, name))
|
of[locality].append((n, name))
|
||||||
|
|||||||
+7
-11
@@ -2,11 +2,6 @@
|
|||||||
"""Rebuild data/geo/US/*.tsv from the Census Bureau's Gazetteer, population estimates, ZCTA relationships and TIGER/Line files (public domain).
|
"""Rebuild data/geo/US/*.tsv from the Census Bureau's Gazetteer, population estimates, ZCTA relationships and TIGER/Line files (public domain).
|
||||||
|
|
||||||
data-import/geo-us.py [--cache DIR] [--min-population N] [--streets-per-locality N] [--out DIR]
|
data-import/geo-us.py [--cache DIR] [--min-population N] [--streets-per-locality N] [--out DIR]
|
||||||
|
|
||||||
A locality is an incorporated place, or a consolidated city's balance, of at least N
|
|
||||||
people, in the county holding most of it. Its postal codes are the ZCTAs mostly inside
|
|
||||||
it, weighted by their TIGER address ranges, and its streets the N names with most
|
|
||||||
address ranges in those codes.
|
|
||||||
"""
|
"""
|
||||||
import argparse
|
import argparse
|
||||||
import collections
|
import collections
|
||||||
@@ -32,10 +27,10 @@ OUT = Path(__file__).resolve().parent.parent / "data" / "geo" / "US"
|
|||||||
CACHE = Path(__file__).resolve().parent / "cache"
|
CACHE = Path(__file__).resolve().parent / "cache"
|
||||||
ESTIMATE = "POPESTIMATE2025"
|
ESTIMATE = "POPESTIMATE2025"
|
||||||
CDP = "57"
|
CDP = "57"
|
||||||
|
HIGHWAY = re.compile(r"\b(I- |Hwy |Rte |Route |Rd )\d")
|
||||||
SUFFIX = re.compile(r" (city and borough|city|town|village|borough|municipality|comunidad|zona urbana|metropolitan government|metro government|consolidated government|unified government|urban county|corporation|plantation)( \(balance\))?$")
|
SUFFIX = re.compile(r" (city and borough|city|town|village|borough|municipality|comunidad|zona urbana|metropolitan government|metro government|consolidated government|unified government|urban county|corporation|plantation)( \(balance\))?$")
|
||||||
# Places whose Census name is a merged government's; the postal city is what an address carries.
|
# Places whose Census name is a merged government's; the postal city is what an address carries.
|
||||||
NAMES = {"1303440": "Athens", "1304204": "Augusta", "1349008": "Macon", "2148006": "Louisville", "3011397": "Butte", "4732742": "Hartsville", "4752006": "Nashville"}
|
NAMES = {"1303440": "Athens", "1304204": "Augusta", "1349008": "Macon", "2148006": "Louisville", "3011397": "Butte", "4732742": "Hartsville", "4752006": "Nashville"}
|
||||||
# The predominant zone of each state.
|
|
||||||
TIMEZONES = {
|
TIMEZONES = {
|
||||||
"AK": "America/Anchorage", "AL": "America/Chicago", "AR": "America/Chicago", "AZ": "America/Phoenix",
|
"AK": "America/Anchorage", "AL": "America/Chicago", "AR": "America/Chicago", "AZ": "America/Phoenix",
|
||||||
"CA": "America/Los_Angeles", "CO": "America/Denver", "CT": "America/New_York", "DC": "America/New_York",
|
"CA": "America/Los_Angeles", "CO": "America/Denver", "CT": "America/New_York", "DC": "America/New_York",
|
||||||
@@ -122,7 +117,7 @@ def localities(cache, min_population, counties):
|
|||||||
out = {}
|
out = {}
|
||||||
for r in gazetteer(cache, "place"):
|
for r in gazetteer(cache, "place"):
|
||||||
geoid, population = r["GEOID"], place_population.get(r["GEOID"], 0)
|
geoid, population = r["GEOID"], place_population.get(r["GEOID"], 0)
|
||||||
if r["FUNCSTAT"] not in "AFN" or r["LSAD"] == CDP or population < min_population or not county_part.get(geoid):
|
if r["FUNCSTAT"] not in ("A", "F", "N") or r["LSAD"] == CDP or population < min_population or not county_part.get(geoid):
|
||||||
continue
|
continue
|
||||||
county = max(county_part[geoid])[1]
|
county = max(county_part[geoid])[1]
|
||||||
if county not in counties:
|
if county not in counties:
|
||||||
@@ -133,12 +128,13 @@ def localities(cache, min_population, counties):
|
|||||||
|
|
||||||
|
|
||||||
def postal_codes(cache, localities):
|
def postal_codes(cache, localities):
|
||||||
"""Each ZCTA and the shipped place holding most of its land."""
|
"""Each ZCTA whose largest part inside any place lies in a shipped place."""
|
||||||
parts = {}
|
parts = {}
|
||||||
for r in csv.DictReader(io.StringIO(text(tsv.fetch(ZCTA_PLACE, cache, "zcta-place.txt"))), delimiter="|"):
|
for r in csv.DictReader(io.StringIO(text(tsv.fetch(ZCTA_PLACE, cache, "zcta-place.txt"))), delimiter="|"):
|
||||||
if r["GEOID_ZCTA5_20"] and r["GEOID_PLACE_20"] in localities:
|
if r["GEOID_ZCTA5_20"] and r["GEOID_PLACE_20"]:
|
||||||
parts.setdefault(r["GEOID_ZCTA5_20"], []).append((int(r["AREALAND_PART"]), r["GEOID_PLACE_20"]))
|
parts.setdefault(r["GEOID_ZCTA5_20"], []).append((int(r["AREALAND_PART"]), r["GEOID_PLACE_20"]))
|
||||||
return {zcta: max(p)[1] for zcta, p in parts.items()}
|
largest = {zcta: max(p)[1] for zcta, p in parts.items()}
|
||||||
|
return {zcta: place for zcta, place in largest.items() if place in localities}
|
||||||
|
|
||||||
|
|
||||||
def streets(cache, counties, locality_of_zcta, per_locality):
|
def streets(cache, counties, locality_of_zcta, per_locality):
|
||||||
@@ -153,7 +149,7 @@ def streets(cache, counties, locality_of_zcta, per_locality):
|
|||||||
zips[r["TLID"]].add(r["ZIP"])
|
zips[r["TLID"]].add(r["ZIP"])
|
||||||
addresses[r["ZIP"]] += 1
|
addresses[r["ZIP"]] += 1
|
||||||
for r in tiger(cache, "featnames", county, {"TLID", "FULLNAME", "PAFLAG"}):
|
for r in tiger(cache, "featnames", county, {"TLID", "FULLNAME", "PAFLAG"}):
|
||||||
if r["PAFLAG"] == "P" and r["FULLNAME"]:
|
if r["PAFLAG"] == "P" and r["FULLNAME"] and not HIGHWAY.search(r["FULLNAME"]):
|
||||||
for z in zips.get(r["TLID"], ()):
|
for z in zips.get(r["TLID"], ()):
|
||||||
count[(locality_of_zcta[z], r["FULLNAME"])] += 1
|
count[(locality_of_zcta[z], r["FULLNAME"])] += 1
|
||||||
of = collections.defaultdict(list)
|
of = collections.defaultdict(list)
|
||||||
|
|||||||
+4
-3
@@ -20,10 +20,10 @@ def fetch(source, cache, name, magic=b"", data=None, headers=None):
|
|||||||
body = r.read()
|
body = r.read()
|
||||||
except OSError:
|
except OSError:
|
||||||
body = b""
|
body = b""
|
||||||
if body.startswith(magic) and b"Request Rejected" not in body[:512]:
|
if body and body.startswith(magic) and b"Request Rejected" not in body[:512]:
|
||||||
path.parent.mkdir(parents=True, exist_ok=True)
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
path.write_bytes(body)
|
path.write_bytes(body)
|
||||||
else:
|
elif attempt < 5:
|
||||||
time.sleep(10 * attempt)
|
time.sleep(10 * attempt)
|
||||||
sys.exit(f"{source}: no valid download in 5 attempts")
|
sys.exit(f"{source}: no valid download in 5 attempts")
|
||||||
|
|
||||||
@@ -33,7 +33,8 @@ def write(path, columns, rows):
|
|||||||
lines = ["\t".join(columns)]
|
lines = ["\t".join(columns)]
|
||||||
for row in rows:
|
for row in rows:
|
||||||
cells = [str(row[c]) for c in columns]
|
cells = [str(row[c]) for c in columns]
|
||||||
assert all(cells) and not any(re.search(r"[\t\n{}]", c) for c in cells), row
|
if not all(cells) or any(re.search(r"[\t\n{}]", c) for c in cells):
|
||||||
|
raise ValueError(f"{path}: a cell is empty or holds a tab, newline or brace: {row}")
|
||||||
lines.append("\t".join(cells))
|
lines.append("\t".join(cells))
|
||||||
Path(path).write_text("\n".join(lines) + "\n", encoding="utf-8")
|
Path(path).write_text("\n".join(lines) + "\n", encoding="utf-8")
|
||||||
print(f"{path}: {len(lines) - 1} rows", file=sys.stderr)
|
print(f"{path}: {len(lines) - 1} rows", file=sys.stderr)
|
||||||
|
|||||||
@@ -6263,10 +6263,10 @@ Strandvägen Källby 8
|
|||||||
Ringvägen Källby 7
|
Ringvägen Källby 7
|
||||||
Laxvägen Källby 6
|
Laxvägen Källby 6
|
||||||
Nästakvarnsvägen Källby 6
|
Nästakvarnsvägen Källby 6
|
||||||
2:a Svanviksvägen Källby 5
|
|
||||||
Badvägen Källby 5
|
Badvägen Källby 5
|
||||||
Mellomkvarnsvägen Källby 5
|
Mellomkvarnsvägen Källby 5
|
||||||
Braxenvägen Källby 4
|
Braxenvägen Källby 4
|
||||||
|
Mastvägen Källby 4
|
||||||
Tranbärsvägen Källö-Knippla 8
|
Tranbärsvägen Källö-Knippla 8
|
||||||
Dalvägen Källö-Knippla 7
|
Dalvägen Källö-Knippla 7
|
||||||
Hamnbergsvägen Källö-Knippla 7
|
Hamnbergsvägen Källö-Knippla 7
|
||||||
|
|||||||
|
@@ -91,10 +91,8 @@ code name municipality population lat lon
|
|||||||
0603162 Atwater 06047 32133 37.350672 -120.594258
|
0603162 Atwater 06047 32133 37.350672 -120.594258
|
||||||
0603386 Azusa 06037 47447 34.138524 -117.912253
|
0603386 Azusa 06037 47447 34.138524 -117.912253
|
||||||
0603526 Bakersfield 06029 422165 35.353174 -119.037878
|
0603526 Bakersfield 06029 422165 35.353174 -119.037878
|
||||||
0603666 Baldwin Park 06037 68880 34.082824 -117.971286
|
|
||||||
0603820 Banning 06065 31852 33.945903 -116.899044
|
0603820 Banning 06065 31852 33.945903 -116.899044
|
||||||
0604758 Beaumont 06065 60835 33.884946 -116.9538
|
0604758 Beaumont 06065 60835 33.884946 -116.9538
|
||||||
0604870 Bell 06037 31625 33.979704 -118.179249
|
|
||||||
0604982 Bellflower 06037 74719 33.887821 -118.12725
|
0604982 Bellflower 06037 74719 33.887821 -118.12725
|
||||||
0604996 Bell Gardens 06037 37367 33.964379 -118.154437
|
0604996 Bell Gardens 06037 37367 33.964379 -118.154437
|
||||||
0605108 Belmont 06081 28752 37.514398 -122.294475
|
0605108 Belmont 06081 28752 37.514398 -122.294475
|
||||||
@@ -106,7 +104,6 @@ code name municipality population lat lon
|
|||||||
0608142 Brentwood 06013 66607 37.935578 -121.71897
|
0608142 Brentwood 06013 66607 37.935578 -121.71897
|
||||||
0608786 Buena Park 06059 81741 33.857353 -118.007373
|
0608786 Buena Park 06059 81741 33.857353 -118.007373
|
||||||
0608954 Burbank 06037 102988 34.190079 -118.326405
|
0608954 Burbank 06037 102988 34.190079 -118.326405
|
||||||
0609066 Burlingame 06081 31929 37.589952 -122.363342
|
|
||||||
0609710 Calexico 06025 38623 32.684859 -115.494738
|
0609710 Calexico 06025 38623 32.684859 -115.494738
|
||||||
0610046 Camarillo 06111 68652 34.221823 -119.032154
|
0610046 Camarillo 06111 68652 34.221823 -119.032154
|
||||||
0610345 Campbell 06085 42490 37.280244 -121.953296
|
0610345 Campbell 06085 42490 37.280244 -121.953296
|
||||||
@@ -227,7 +224,6 @@ code name municipality population lat lon
|
|||||||
0648914 Monterey Park 06037 57457 34.04838 -118.133165
|
0648914 Monterey Park 06037 57457 34.04838 -118.133165
|
||||||
0649138 Moorpark 06111 35023 34.285942 -118.87704
|
0649138 Moorpark 06111 35023 34.285942 -118.87704
|
||||||
0649270 Moreno Valley 06065 214263 33.923253 -117.205685
|
0649270 Moreno Valley 06065 214263 33.923253 -117.205685
|
||||||
0649278 Morgan Hill 06085 45625 37.132495 -121.641891
|
|
||||||
0649582 Mountain House 06077 25315 37.779716 -121.537195
|
0649582 Mountain House 06077 25315 37.779716 -121.537195
|
||||||
0649670 Mountain View 06085 85438 37.399686 -122.079269
|
0649670 Mountain View 06085 85438 37.399686 -122.079269
|
||||||
0650076 Murrieta 06065 114124 33.573214 -117.191007
|
0650076 Murrieta 06065 114124 33.573214 -117.191007
|
||||||
@@ -291,7 +287,6 @@ code name municipality population lat lon
|
|||||||
0666070 San Dimas 06037 32978 34.107957 -117.808529
|
0666070 San Dimas 06037 32978 34.107957 -117.808529
|
||||||
0667000 San Francisco 06075 826079 37.727239 -123.032229
|
0667000 San Francisco 06075 826079 37.727239 -123.032229
|
||||||
0667042 San Gabriel 06037 38186 34.094636 -118.098469
|
0667042 San Gabriel 06037 38186 34.094636 -118.098469
|
||||||
0667056 Sanger 06019 27228 36.700864 -119.55773
|
|
||||||
0667112 San Jacinto 06065 56014 33.798864 -116.995914
|
0667112 San Jacinto 06065 56014 33.798864 -116.995914
|
||||||
0668000 San Jose 06085 989814 37.296011 -121.814552
|
0668000 San Jose 06085 989814 37.296011 -121.814552
|
||||||
0668028 San Juan Capistrano 06059 35119 33.500889 -117.654388
|
0668028 San Juan Capistrano 06059 35119 33.500889 -117.654388
|
||||||
@@ -500,7 +495,6 @@ code name municipality population lat lon
|
|||||||
1276500 West Melbourne 12009 31285 28.050398 -80.658327
|
1276500 West Melbourne 12009 31285 28.050398 -80.658327
|
||||||
1276582 Weston 12011 69588 26.100076 -80.401266
|
1276582 Weston 12011 69588 26.100076 -80.401266
|
||||||
1276600 West Palm Beach 12099 127189 26.745114 -80.127038
|
1276600 West Palm Beach 12099 127189 26.745114 -80.127038
|
||||||
1278250 Winter Garden 12095 48063 28.541217 -81.597043
|
|
||||||
1278275 Winter Haven 12105 62313 28.045836 -81.732743
|
1278275 Winter Haven 12105 62313 28.045836 -81.732743
|
||||||
1278300 Winter Park 12095 30444 28.59663 -81.345748
|
1278300 Winter Park 12095 30444 28.59663 -81.345748
|
||||||
1278325 Winter Springs 12117 39585 28.695481 -81.272086
|
1278325 Winter Springs 12117 39585 28.695481 -81.272086
|
||||||
@@ -546,7 +540,6 @@ code name municipality population lat lon
|
|||||||
1373256 Statesboro 13031 35366 32.439408 -81.775106
|
1373256 Statesboro 13031 35366 32.439408 -81.775106
|
||||||
1373704 Stockbridge 13151 36331 33.529646 -84.233422
|
1373704 Stockbridge 13151 36331 33.529646 -84.233422
|
||||||
1373784 Stonecrest 13089 61337 33.680667 -84.14525
|
1373784 Stonecrest 13089 61337 33.680667 -84.14525
|
||||||
1374180 Sugar Hill 13135 29280 34.088966 -84.034941
|
|
||||||
1377652 Tucker 13089 37290 33.845169 -84.202085
|
1377652 Tucker 13089 37290 33.845169 -84.202085
|
||||||
1378324 Union City 13121 29910 33.593837 -84.56263
|
1378324 Union City 13121 29910 33.593837 -84.56263
|
||||||
1378800 Valdosta 13185 56186 30.850126 -83.278833
|
1378800 Valdosta 13185 56186 30.850126 -83.278833
|
||||||
@@ -638,7 +631,6 @@ code name municipality population lat lon
|
|||||||
1765000 Rockford 17201 147384 42.2593 -89.063478
|
1765000 Rockford 17201 147384 42.2593 -89.063478
|
||||||
1765078 Rock Island 17161 36225 41.469444 -90.585307
|
1765078 Rock Island 17161 36225 41.469444 -90.585307
|
||||||
1765442 Romeoville 17197 41281 41.627783 -88.101237
|
1765442 Romeoville 17197 41281 41.627783 -88.101237
|
||||||
1766040 Round Lake Beach 17097 26902 42.382452 -88.080682
|
|
||||||
1766703 St. Charles 17089 33594 41.919447 -88.310743
|
1766703 St. Charles 17089 33594 41.919447 -88.310743
|
||||||
1768003 Schaumburg 17031 77249 42.028423 -88.084745
|
1768003 Schaumburg 17031 77249 42.028423 -88.084745
|
||||||
1770122 Skokie 17031 66544 42.03597 -87.739994
|
1770122 Skokie 17031 66544 42.03597 -87.739994
|
||||||
@@ -765,7 +757,6 @@ code name municipality population lat lon
|
|||||||
2338740 Lewiston 23001 38866 44.089325 -70.172051
|
2338740 Lewiston 23001 38866 44.089325 -70.172051
|
||||||
2360545 Portland 23005 69911 43.633157 -70.185305
|
2360545 Portland 23005 69911 43.633157 -70.185305
|
||||||
2371990 South Portland 23005 27007 43.631402 -70.285989
|
2371990 South Portland 23005 27007 43.631402 -70.285989
|
||||||
2401600 Annapolis 24003 40634 38.97216 -76.505334
|
|
||||||
2404000 Baltimore 24510 569997 39.300061 -76.610518
|
2404000 Baltimore 24510 569997 39.300061 -76.610518
|
||||||
2408775 Bowie 24033 58383 38.954703 -76.738834
|
2408775 Bowie 24033 58383 38.954703 -76.738834
|
||||||
2418750 College Park 24033 35418 38.996692 -76.936407
|
2418750 College Park 24033 35418 38.996692 -76.936407
|
||||||
@@ -867,7 +858,6 @@ code name municipality population lat lon
|
|||||||
2684000 Warren 26099 137138 42.492904 -83.025001
|
2684000 Warren 26099 137138 42.492904 -83.025001
|
||||||
2686000 Westland 26163 82333 42.319173 -83.380778
|
2686000 Westland 26163 82333 42.319173 -83.380778
|
||||||
2688940 Wyoming 26081 78588 42.890317 -85.706733
|
2688940 Wyoming 26081 78588 42.890317 -85.706733
|
||||||
2701486 Andover 27003 33874 45.25242 -93.337402
|
|
||||||
2701900 Apple Valley 27037 55248 44.745301 -93.199413
|
2701900 Apple Valley 27037 55248 44.745301 -93.199413
|
||||||
2702908 Austin 27099 26689 43.672098 -92.977863
|
2702908 Austin 27099 26689 43.672098 -92.977863
|
||||||
2706382 Blaine 27003 76603 45.170515 -93.206089
|
2706382 Blaine 27003 76603 45.170515 -93.206089
|
||||||
@@ -1043,26 +1033,22 @@ code name municipality population lat lon
|
|||||||
3633139 Hempstead 36059 59819 40.704374 -73.619445
|
3633139 Hempstead 36059 59819 40.704374 -73.619445
|
||||||
3638077 Ithaca 36109 33632 42.443937 -76.503055
|
3638077 Ithaca 36109 33632 42.443937 -76.503055
|
||||||
3638264 Jamestown 36013 27663 42.097603 -79.236135
|
3638264 Jamestown 36013 27663 42.097603 -79.236135
|
||||||
3639853 Kiryas Joel 36071 47147 41.33901 -74.166941
|
|
||||||
3642554 Lindenhurst 36103 27258 40.685751 -73.371594
|
3642554 Lindenhurst 36103 27258 40.685751 -73.371594
|
||||||
3643335 Long Beach 36059 34918 40.585835 -73.665403
|
3643335 Long Beach 36059 34918 40.585835 -73.665403
|
||||||
3647042 Middletown 36071 30098 41.444922 -74.423573
|
3647042 Middletown 36071 30098 41.444922 -74.423573
|
||||||
3649121 Mount Vernon 36119 72304 40.913105 -73.829317
|
3649121 Mount Vernon 36119 72304 40.913105 -73.829317
|
||||||
3650034 Newburgh 36071 28059 41.503249 -74.01964
|
|
||||||
3650617 New Rochelle 36119 85864 40.923243 -73.779344
|
3650617 New Rochelle 36119 85864 40.923243 -73.779344
|
||||||
3651000 New York 36047 8584629 40.662712 -73.938677
|
3651000 New York 36047 8584629 40.662712 -73.938677
|
||||||
3651055 Niagara Falls 36063 47255 43.092841 -79.014743
|
3651055 Niagara Falls 36063 47255 43.092841 -79.014743
|
||||||
3653682 North Tonawanda 36063 29806 43.049157 -78.871224
|
3653682 North Tonawanda 36063 29806 43.049157 -78.871224
|
||||||
3655530 Ossining 36119 27579 41.15349 -73.870587
|
3655530 Ossining 36119 27579 41.15349 -73.870587
|
||||||
3656979 Peekskill 36119 25891 41.287396 -73.923597
|
3656979 Peekskill 36119 25891 41.287396 -73.923597
|
||||||
3659223 Port Chester 36119 32303 41.004701 -73.667175
|
|
||||||
3659641 Poughkeepsie 36027 32499 41.694595 -73.919869
|
3659641 Poughkeepsie 36027 32499 41.694595 -73.919869
|
||||||
3663000 Rochester 36055 206108 43.169927 -77.616891
|
3663000 Rochester 36055 206108 43.169927 -77.616891
|
||||||
3663264 Rockville Centre 36059 25770 40.664024 -73.638048
|
3663264 Rockville Centre 36059 25770 40.664024 -73.638048
|
||||||
3663418 Rome 36065 31682 43.226002 -75.489523
|
3663418 Rome 36065 31682 43.226002 -75.489523
|
||||||
3665255 Saratoga Springs 36091 28768 43.067704 -73.778142
|
3665255 Saratoga Springs 36091 28768 43.067704 -73.778142
|
||||||
3665508 Schenectady 36093 69471 42.802691 -73.92696
|
3665508 Schenectady 36093 69471 42.802691 -73.92696
|
||||||
3670420 Spring Valley 36087 34482 41.114567 -74.048712
|
|
||||||
3673000 Syracuse 36067 144896 43.04126 -76.143212
|
3673000 Syracuse 36067 144896 43.04126 -76.143212
|
||||||
3675484 Troy 36083 50912 42.735812 -73.675321
|
3675484 Troy 36083 50912 42.735812 -73.675321
|
||||||
3676540 Utica 36065 62978 43.096382 -75.225983
|
3676540 Utica 36065 62978 43.096382 -75.225983
|
||||||
@@ -1091,7 +1077,6 @@ code name municipality population lat lon
|
|||||||
3731400 High Point 37081 120571 35.990803 -79.992713
|
3731400 High Point 37081 120571 35.990803 -79.992713
|
||||||
3732260 Holly Springs 37183 50288 35.651994 -78.843196
|
3732260 Holly Springs 37183 50288 35.651994 -78.843196
|
||||||
3733120 Huntersville 37119 68535 35.40681 -80.86868
|
3733120 Huntersville 37119 68535 35.40681 -80.86868
|
||||||
3733560 Indian Trail 37179 44303 35.06898 -80.651758
|
|
||||||
3734200 Jacksonville 37133 72732 34.729759 -77.394
|
3734200 Jacksonville 37133 72732 34.729759 -77.394
|
||||||
3735200 Kannapolis 37025 61708 35.479868 -80.647422
|
3735200 Kannapolis 37025 61708 35.479868 -80.647422
|
||||||
3735600 Kernersville 37067 29128 36.106171 -80.081895
|
3735600 Kernersville 37067 29128 36.106171 -80.081895
|
||||||
@@ -1339,7 +1324,6 @@ code name municipality population lat lon
|
|||||||
4816468 Converse 48029 32481 29.512488 -98.304625
|
4816468 Converse 48029 32481 29.512488 -98.304625
|
||||||
4816612 Coppell 48113 41386 32.963318 -96.990082
|
4816612 Coppell 48113 41386 32.963318 -96.990082
|
||||||
4816624 Copperas Cove 48099 40118 31.119436 -97.913909
|
4816624 Copperas Cove 48099 40118 31.119436 -97.913909
|
||||||
4816696 Corinth 48121 25297 33.143686 -97.068592
|
|
||||||
4817000 Corpus Christi 48355 317247 27.754252 -97.173385
|
4817000 Corpus Christi 48355 317247 27.754252 -97.173385
|
||||||
4817060 Corsicana 48349 25487 32.082404 -96.4667
|
4817060 Corsicana 48349 25487 32.082404 -96.4667
|
||||||
4819000 Dallas 48113 1329491 32.793333 -96.766513
|
4819000 Dallas 48113 1329491 32.793333 -96.766513
|
||||||
@@ -1437,7 +1421,6 @@ code name municipality population lat lon
|
|||||||
4872392 Texas City 48167 59733 29.424942 -94.890026
|
4872392 Texas City 48167 59733 29.424942 -94.890026
|
||||||
4872530 The Colony 48121 46196 33.089598 -96.903368
|
4872530 The Colony 48121 46196 33.089598 -96.903368
|
||||||
4874144 Tyler 48423 113723 32.317334 -95.306399
|
4874144 Tyler 48423 113723 32.317334 -95.306399
|
||||||
4874492 University Park 48113 25323 32.848624 -96.79525
|
|
||||||
4875428 Victoria 48469 66500 28.828528 -96.986015
|
4875428 Victoria 48469 66500 28.828528 -96.986015
|
||||||
4876000 Waco 48309 147788 31.557886 -97.190841
|
4876000 Waco 48309 147788 31.557886 -97.190841
|
||||||
4876816 Waxahachie 48139 50090 32.40248 -96.844493
|
4876816 Waxahachie 48139 50090 32.40248 -96.844493
|
||||||
@@ -1449,7 +1432,6 @@ code name municipality population lat lon
|
|||||||
4907690 Bountiful 49011 44988 40.872483 -111.8612
|
4907690 Bountiful 49011 44988 40.872483 -111.8612
|
||||||
4911320 Cedar City 49021 41871 37.683877 -113.09579
|
4911320 Cedar City 49021 41871 37.683877 -113.09579
|
||||||
4913850 Clearfield 49011 35144 41.097012 -112.01792
|
4913850 Clearfield 49011 35144 41.097012 -112.01792
|
||||||
4916270 Cottonwood Heights 49035 32265 40.613728 -111.814137
|
|
||||||
4920120 Draper 49035 50652 40.49715 -111.864636
|
4920120 Draper 49035 50652 40.49715 -111.864636
|
||||||
4920810 Eagle Mountain 49049 66557 40.314272 -112.011983
|
4920810 Eagle Mountain 49049 66557 40.314272 -112.011983
|
||||||
4924740 Farmington 49011 26266 40.984669 -111.906306
|
4924740 Farmington 49011 26266 40.984669 -111.906306
|
||||||
@@ -1468,7 +1450,6 @@ code name municipality population lat lon
|
|||||||
4957300 Orem 49049 95214 40.298067 -111.699463
|
4957300 Orem 49049 95214 40.298067 -111.699463
|
||||||
4960930 Pleasant Grove 49049 37773 40.37145 -111.741264
|
4960930 Pleasant Grove 49049 37773 40.37145 -111.741264
|
||||||
4962470 Provo 49049 114527 40.245312 -111.645057
|
4962470 Provo 49049 114527 40.245312 -111.645057
|
||||||
4964340 Riverton 49035 47395 40.517634 -111.963515
|
|
||||||
4965110 Roy 49057 38794 41.17146 -112.048476
|
4965110 Roy 49057 38794 41.17146 -112.048476
|
||||||
4965330 St. George 49053 108713 37.077006 -113.576534
|
4965330 St. George 49053 108713 37.077006 -113.576534
|
||||||
4967000 Salt Lake City 49035 218428 40.775366 -111.927266
|
4967000 Salt Lake City 49035 218428 40.775366 -111.927266
|
||||||
@@ -1491,7 +1472,6 @@ code name municipality population lat lon
|
|||||||
5114968 Charlottesville 51540 44388 38.037658 -78.485381
|
5114968 Charlottesville 51540 44388 38.037658 -78.485381
|
||||||
5116000 Chesapeake 51550 255332 36.679376 -76.301788
|
5116000 Chesapeake 51550 255332 36.679376 -76.301788
|
||||||
5121344 Danville 51590 41647 36.581754 -79.408258
|
5121344 Danville 51590 41647 36.581754 -79.408258
|
||||||
5126496 Fairfax 51600 26772 38.853183 -77.299025
|
|
||||||
5129744 Fredericksburg 51630 30393 38.299272 -77.486658
|
5129744 Fredericksburg 51630 30393 38.299272 -77.486658
|
||||||
5135000 Hampton 51650 137315 37.047961 -76.297293
|
5135000 Hampton 51650 137315 37.047961 -76.297293
|
||||||
5135624 Harrisonburg 51660 50839 38.436255 -78.873303
|
5135624 Harrisonburg 51660 50839 38.436255 -78.873303
|
||||||
@@ -1530,7 +1510,6 @@ code name municipality population lat lon
|
|||||||
5338038 Lakewood 53053 62755 47.164092 -122.528106
|
5338038 Lakewood 53053 62755 47.164092 -122.528106
|
||||||
5340245 Longview 53015 38362 46.145707 -122.964299
|
5340245 Longview 53015 38362 46.145707 -122.964299
|
||||||
5340840 Lynnwood 53061 42132 47.828979 -122.300672
|
5340840 Lynnwood 53061 42132 47.828979 -122.300672
|
||||||
5343150 Maple Valley 53033 28482 47.367147 -122.034815
|
|
||||||
5343955 Marysville 53061 77686 48.080214 -122.154312
|
5343955 Marysville 53061 77686 48.080214 -122.154312
|
||||||
5345005 Mercer Island 53033 25422 47.564004 -122.231214
|
5345005 Mercer Island 53033 25422 47.564004 -122.231214
|
||||||
5347245 Moses Lake 53025 27469 47.12785 -119.276384
|
5347245 Moses Lake 53025 27469 47.12785 -119.276384
|
||||||
@@ -1565,7 +1544,6 @@ code name municipality population lat lon
|
|||||||
5506500 Beloit 55105 36649 42.523506 -89.01766
|
5506500 Beloit 55105 36649 42.523506 -89.01766
|
||||||
5510025 Brookfield 55133 41448 43.06432 -88.117794
|
5510025 Brookfield 55133 41448 43.06432 -88.117794
|
||||||
5511950 Caledonia 55101 25229 42.797411 -87.877405
|
5511950 Caledonia 55101 25229 42.797411 -87.877405
|
||||||
5519775 De Pere 55009 25590 44.429327 -88.08037
|
|
||||||
5522300 Eau Claire 55035 72465 44.818343 -91.494769
|
5522300 Eau Claire 55035 72465 44.818343 -91.494769
|
||||||
5525950 Fitchburg 55025 34615 42.985782 -89.425334
|
5525950 Fitchburg 55025 34615 42.985782 -89.425334
|
||||||
5526275 Fond du Lac 55039 44541 43.772182 -88.440264
|
5526275 Fond du Lac 55039 44541 43.772182 -88.440264
|
||||||
|
|||||||
|
@@ -255,7 +255,6 @@ code name region population
|
|||||||
23001 Androscoggin County ME 116487
|
23001 Androscoggin County ME 116487
|
||||||
23005 Cumberland County ME 317222
|
23005 Cumberland County ME 317222
|
||||||
23019 Penobscot County ME 157967
|
23019 Penobscot County ME 157967
|
||||||
24003 Anne Arundel County MD 603380
|
|
||||||
24021 Frederick County MD 302883
|
24021 Frederick County MD 302883
|
||||||
24031 Montgomery County MD 1074582
|
24031 Montgomery County MD 1074582
|
||||||
24033 Prince George's County MD 970374
|
24033 Prince George's County MD 970374
|
||||||
@@ -389,7 +388,6 @@ code name region population
|
|||||||
36067 Onondaga County NY 466584
|
36067 Onondaga County NY 466584
|
||||||
36071 Orange County NY 417669
|
36071 Orange County NY 417669
|
||||||
36083 Rensselaer County NY 160510
|
36083 Rensselaer County NY 160510
|
||||||
36087 Rockland County NY 357397
|
|
||||||
36091 Saratoga County NY 241343
|
36091 Saratoga County NY 241343
|
||||||
36093 Schenectady County NY 162581
|
36093 Schenectady County NY 162581
|
||||||
36103 Suffolk County NY 1546090
|
36103 Suffolk County NY 1546090
|
||||||
@@ -603,7 +601,6 @@ code name region population
|
|||||||
51540 Charlottesville city VA 44388
|
51540 Charlottesville city VA 44388
|
||||||
51550 Chesapeake city VA 255332
|
51550 Chesapeake city VA 255332
|
||||||
51590 Danville city VA 41647
|
51590 Danville city VA 41647
|
||||||
51600 Fairfax city VA 26772
|
|
||||||
51630 Fredericksburg city VA 30393
|
51630 Fredericksburg city VA 30393
|
||||||
51650 Hampton city VA 137315
|
51650 Hampton city VA 137315
|
||||||
51660 Harrisonburg city VA 50839
|
51660 Harrisonburg city VA 50839
|
||||||
|
|||||||
|
File diff suppressed because it is too large
Load Diff
+4050
-4270
File diff suppressed because it is too large
Load Diff
@@ -44,7 +44,6 @@ var (
|
|||||||
regionOf = map[string]string{"0180": "01", "0184": "01", "1280": "12", "1281": "12", "1480": "14"}
|
regionOf = map[string]string{"0180": "01", "0184": "01", "1280": "12", "1281": "12", "1480": "14"}
|
||||||
)
|
)
|
||||||
|
|
||||||
// siblings adds two child tables under locality: postal-code, keyed, and street, keyless.
|
|
||||||
func siblings() map[string]string {
|
func siblings() map[string]string {
|
||||||
return with(geo(), map[string]string{
|
return with(geo(), map[string]string{
|
||||||
"postal-code.json": `{"format":"{code}","rows":"postal-code.tsv","key":"code","parent":"locality"}`,
|
"postal-code.json": `{"format":"{code}","rows":"postal-code.tsv","key":"code","parent":"locality"}`,
|
||||||
|
|||||||
@@ -54,10 +54,10 @@ countries; the README maps each to the native term.
|
|||||||
| Table | SE | US | Weight |
|
| Table | SE | US | Weight |
|
||||||
|---|---|---|---|
|
|---|---|---|---|
|
||||||
| `region` | län (21) | state and DC (50; Hawaii has no incorporated place) | population |
|
| `region` | län (21) | state and DC (50; Hawaii has no incorporated place) | population |
|
||||||
| `municipality` | kommun (290) | county with a shipped place (666) | population |
|
| `municipality` | kommun (290) | county with a shipped place (663) | population |
|
||||||
| `locality` | postort (1,522), tätort population | place of 25,000+ (1,601) | population |
|
| `locality` | postort (1,522), tätort population | place of 25,000+ (1,579) | population |
|
||||||
| `postal-code` | postnummer with street delivery (13,712) | ZCTA of a shipped place (7,401) | one; address ranges |
|
| `postal-code` | postnummer with street delivery (13,712) | ZCTA of a shipped place (5,946) | one; address ranges |
|
||||||
| `street` | gatunamn, top 10 per postort (14,764) | street name, top 10 per place (16,010) | segments; address ranges |
|
| `street` | gatunamn, top 10 per postort (14,764) | street name, top 10 per place (15,790) | segments; address ranges |
|
||||||
|
|
||||||
- Shipped in step 2, README Data. `geo.SE.address` is a record over one consistent
|
- Shipped in step 2, README Data. `geo.SE.address` is a record over one consistent
|
||||||
draw. Each region row carries its timezone, each locality its centroid.
|
draw. Each region row carries its timezone, each locality its centroid.
|
||||||
|
|||||||
Reference in New Issue
Block a user