Implement city.py
This commit is contained in:
parent
0f30130f40
commit
af29de2754
1 changed files with 41 additions and 0 deletions
41
lib/xmet/city.py
Normal file
41
lib/xmet/city.py
Normal file
|
@ -0,0 +1,41 @@
|
|||
import csv
|
||||
import shapely
|
||||
|
||||
"""
|
||||
Implements a parser and wrapper class for the top 150 populous US cities
|
||||
available on Wikipedia:
|
||||
|
||||
https://en.wikipedia.org/wiki/List_of_United_States_cities_by_population
|
||||
|
||||
The input TSV file is created by copying and pasting the tabular data
|
||||
from a web browser into a text file.
|
||||
"""
|
||||
|
||||
class City():
|
||||
name: str
|
||||
state: str
|
||||
pop_estimate: int
|
||||
pop_census: int
|
||||
location: shapely.Point
|
||||
|
||||
@staticmethod
|
||||
def from_tsv_row(row: list):
|
||||
city = City()
|
||||
city.name = row[0]
|
||||
city.state = row[1]
|
||||
city.pop_estimate = int(row[2])
|
||||
city.pop_census = int(row[3])
|
||||
city.location = shapely.Point(float(row[10]), float(row[9]))
|
||||
|
||||
return city
|
||||
|
||||
@staticmethod
|
||||
def each_from_tsv(file: str):
|
||||
with open(file) as fh:
|
||||
reader = csv.reader(fh, delimiter='\t')
|
||||
|
||||
for row in reader:
|
||||
for i in range(0, len(row)):
|
||||
row[i] = row[i].rstrip()
|
||||
|
||||
yield City.from_tsv_row(row)
|
Loading…
Add table
Reference in a new issue