-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparcels_import.py
84 lines (73 loc) · 2.96 KB
/
parcels_import.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import pandas
import numpy as np
import geopandas
from simpledbf import Dbf5
import pandas_access as mdb
# Parcel Shape file
prcl_shp = geopandas.GeoDataFrame.from_file('data/open-data-extracted/prcl_shape/prcl.shp')
# Join Parcel Info
Prcl = mdb.read_table("data/open-data-extracted/prcl/prcl.mdb", "Prcl")
parcels = pandas.merge(prcl_shp,Prcl,left_on='HANDLE',right_on='Handle')
parcels.loc[:,'Nbrhd']= parcels.Nbrhd.astype(int)
# Join in Neighborhood names
neighborhoods = geopandas.read_file('data/open-data-extracted/nbrhds_wards/BND_Nhd88_cw.shp')
parcels = pandas.merge(parcels,neighborhoods[['NHD_NAME','NHD_NUM']],left_on='Nbrhd',right_on='NHD_NUM')
# Join More Parcel info, this one has nice address names to join to CSB data
par = Dbf5('data/open-data-extracted/par/par.dbf',codec='cp1250').to_dataframe()
parcels = pandas.merge(parcels,par,on='HANDLE')
parcels.loc[:,'parcel_address'] = parcels.SITEADDR.apply(lambda x: x.replace(' AV','').replace(' ST','').replace(' DR','').replace(' BLVD','').replace(' ',''))
parcels= parcels[[ 'HANDLE',
'geometry',
'CityBlock',
'OwnerCode',
'AddrType',
'LowAddrNum',
'LowAddrSuf',
'HighAddrNum',
'HighAddrSuf',
'NLC',
'Parity',
'StPreDir',
'StName',
'StType',
'StSufDir',
'StdUnitNum',
'OwnerName',
'OwnerName2',
'OwnerAddr',
'OwnerCity',
'OwnerState',
'OwnerCountry',
'OwnerZIP',
'VacantLot',
'Condominium',
'NbrOfUnits',
'NbrOfApts',
'Frontage',
'LandArea',
'VacBldgYear',
'GeoCityBlockPart',
'Ward10',
'Precinct10',
'InspArea10',
'CDADist',
'CDASubDist',
'PoliceDist',
'CensTract10',
'CensBlock10',
'HouseConsDist',
'OwnerOcc',
'OwnerUpdate',
'NHD_NAME',
'NHD_NUM',
'SITEADDR',
'parcel_address']]
parcels.to_crs( "+init=epsg:4326",inplace=True)
parcels.loc[:,'geometry_centroid'] = parcels.centroid
parcels.loc[:,'lon'] = parcels.geometry.centroid.apply(lambda x: x.x)
parcels.loc[:,'lat'] = parcels.geometry.centroid.apply(lambda x: x.y)
parcels.loc[:,'url'] = parcels.HANDLE.apply(lambda x: 'http://dynamic.stlouis-mo.gov/citydata/newdesign/data.cfm?Handle=' + str(x))
del prcl_shp
del Prcl
del par
del neighborhoods