Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| import geopandas as gpd | |
| from shapely.geometry import Point, LineString | |
| import pickle | |
| import requests | |
| # Load geospatial data | |
| expressway = gpd.read_file('data/expressway.shp') | |
| expressway.to_crs(epsg=3857, inplace=True) | |
| geosubset = gpd.read_file('data/geosubset.shp') | |
| geosubset.to_crs(epsg=3857, inplace=True) | |
| geosubset['storey'] = geosubset['storey'].astype(int) | |
| geosubset['floor_area'] = geosubset['floor_area'].astype(float) | |
| geosubset['age_asof_t'] = geosubset['age_asof_t'].astype(int) | |
| geosubset['transactDa'] = pd.to_datetime(geosubset['transactDa']) | |
| mrt_raw = pd.read_csv('data/mrt.csv') | |
| geo_mrt = gpd.GeoDataFrame(mrt_raw, crs="EPSG:4326", | |
| geometry=[Point(xy) for xy in zip(mrt_raw['long'], mrt_raw['lat'])]) | |
| geo_mrt.to_crs(epsg=3857, inplace=True) | |
| mall_df = pd.read_csv('data/mall.csv') | |
| geo_mall = gpd.GeoDataFrame(mall_df, crs="EPSG:4326", | |
| geometry=[Point(xy) for xy in zip(mall_df['long'], mall_df['lat'])]) | |
| geo_mall.to_crs(epsg=3857, inplace=True) | |
| pri_sch_raw = pd.read_csv('data/pri_sch_latlong.csv') | |
| geo_pri = gpd.GeoDataFrame(pri_sch_raw, crs="EPSG:4326", | |
| geometry=[Point(xy) for xy in zip(pri_sch_raw['long'], pri_sch_raw['lat'])]) | |
| geo_pri.to_crs(epsg=3857, inplace=True) | |
| sec_sec_raw = pd.read_csv('data/sec_sch_latlong.csv') | |
| geo_sec = gpd.GeoDataFrame(sec_sec_raw, crs="EPSG:4326", | |
| geometry=[Point(xy) for xy in zip(sec_sec_raw['long'], sec_sec_raw['lat'])]) | |
| geo_sec.to_crs(epsg=3857, inplace=True) | |
| postal = pd.read_csv('data/district.csv') | |
| postal_melt = pd.DataFrame(postal['2dpostal'].str.split(",").to_list(), index=postal.district).stack().reset_index()[['district', 0]] | |
| postal_final = postal_melt.merge(postal, how='left', on='district').drop(columns=['2dpostal']) | |
| postal_final.columns = ['district', '2dpostal', 'town'] | |
| postal_final['2dpostal'] = postal_final['2dpostal'].astype(str).str.strip() | |
| # Load models | |
| xgb = pickle.load(open('model/xgb_final.sav', "rb")) | |
| enc = pickle.load(open('model/encoder.sav', "rb")) | |
| # Load CIs | |
| sd_hdb = 34.88572450193993 | |
| sd_condo = 112.3696357113714 | |
| sd_ec = 66.34935799217807 | |
| sd_apt = 137.16498181900047 | |
| # test one map api here | |
| def test_postal(location): | |
| searchQuery = "https://developers.onemap.sg/commonapi/search?searchVal=" + location + "&returnGeom=Y&getAddrDetails=Y" | |
| response = requests.get(searchQuery) | |
| try: | |
| result = response.json()['results'][0] | |
| latitude = result['LATITUDE'] | |
| longitude = result['LONGITUDE'] | |
| return [result['SEARCHVAL'], result['ADDRESS'], float(latitude), float(longitude)] | |
| except: | |
| return 'INVALID LOCATION' | |
| # Actual predictions | |
| def getSVY21(location): | |
| searchQuery = "https://developers.onemap.sg/commonapi/search?searchVal=" + location + "&returnGeom=Y&getAddrDetails=Y" | |
| response = requests.get(searchQuery) | |
| try: | |
| result = response.json()['results'][0] | |
| latitude = result['LATITUDE'] | |
| longitude = result['LONGITUDE'] | |
| return float(latitude), float(longitude) | |
| except: | |
| return 'INVALID LOCATION' | |
| print('utils imported!') | |