In [65]:
import psycopg2
In [66]:
import matplotlib.pyplot as plt
plt.rcParams["font.family"] = 'nanumgothic'
plt.rcParams['axes.unicode_minus'] = False
In [67]:
import tqdm
In [68]:
import os
from cartoframes.viz import *
In [5]:
import json
In [6]:
import pandas as pd
import geopandas as gpd
In [7]:
from shapely.geometry import Point, MultiPoint
In [8]:
import geopandas as gpd
import psycopg2
from sqlalchemy import create_engine
db_connection = psycopg2.connect(
    dbname='urbanflow',
    user='guest',
    password='guest',
    host='localhost',
    port='5432'
)
engine = create_engine('postgresql+psycopg2://', creator=lambda: db_connection)
In [14]:
query = 'SELECT * FROM building_construct;'
agdf = gpd.GeoDataFrame.from_postgis(query, engine, geom_col='geometry')
In [15]:
query = 'SELECT * FROM building_destroy;'
dgdf = gpd.GeoDataFrame.from_postgis(query, engine, geom_col='geometry')
In [17]:
mybasemap = {
    'style': 'mapbox://styles/mapbox/satellite-v9',
    'token': 'pk.eyJ1IjoiaHNtNjkxMSIsImEiOiJjazl0and6aDUwOWF2M2RvemdrYjllczV3In0.qGmaAF6v-1LAF9C-dnMLBg'
}
In [21]:
import tqdm
In [22]:
import numpy as np
In [23]:
import pandas as pd
import geopandas as gpd
from cartoframes.viz import *
subway_df = pd.read_csv('국가철도공단_수도권2호선_역위치_20230430.csv', encoding='euc-kr')
subway_gdf = gpd.GeoDataFrame(
    subway_df, geometry=gpd.points_from_xy(x=subway_df['경도'], y=subway_df['위도'])
)
subway_gdf.crs = 'EPSG:4326'
In [24]:
subway_gdf_5181 = subway_gdf.to_crs('epsg:5181')
In [96]:
DIST_THRES = 500
In [97]:
ym_list = [y*100 + m for y in range(1960, 2023) for m in range(1, 13)]
In [98]:
agdf_5181 = agdf.to_crs('epsg:5181').sort_values('사용승인_일')
agdf_5181 = agdf_5181[agdf_5181['연면적(㎡)'] > 0].copy()

dgdf_5181 = dgdf.to_crs('epsg:5181').sort_values('사용승인_일')
dgdf_5181 = dgdf_5181[dgdf_5181['폐쇄말소_일'] == dgdf_5181['폐쇄말소_일']]
dgdf_5181 = dgdf_5181[dgdf_5181['연면적(㎡)'] > 0].copy()
In [129]:
 
In [137]:
import pickle
In [263]:
sitem
Out[263]:
철도운영기관명                                           서울교통공사
노선                                                   2호선
역명                                                    시청
경도                                            126.975271
위도                                             37.563534
geometry    POINT (197815.18124126745 451555.8993385717)
Name: 0, dtype: object
In [270]:
DIST_THRES=500
pkl_fname = f'station_year_dict_{DIST_THRES}.pkl'
if os.path.isfile(pkl_fname):
    with open(f'station_year_dict_{DIST_THRES}.pkl', 'rb') as f:
        station_year_dict = pickle.load(f)
In [271]:
asdf = pd.DataFrame(station_year_dict).T
asdf.index=asdf.index.rename(['STATION', 'DATE'])
asdf.index = asdf.index.set_levels(asdf.index.levels[1].astype(int), level=1)
asdf = asdf[asdf.sum(0).sort_values(ascending=False).keys().tolist()]
In [272]:
asdf[asdf.index.isin([sname], level=0)].iloc[:, :50].columns
Out[272]:
Index(['업무시설', '공동주택', '단독주택', '제2종근린생활시설', '제1종근린생활시설', '판매시설', '숙박시설',
       '교육연구시설', '공장', 'None', '종교시설', '자동차관련시설', '근린생활시설', '문화및집회시설', '의료시설',
       '창고시설', '판매및영업시설', '노유자시설', '운동시설', '방송통신시설', '교육연구및복지시설', '운수시설',
       '위락시설', '공공용시설', '위험물저장및처리시설', '수련시설', '분뇨.쓰레기처리시설', '학원', '연립주택',
       '장례시설', '자원순환관련시설', '시장', '관광휴게시설', '동물및식물관련시설', '관광숙박시설', '기숙사',
       '주유소'],
      dtype='object')
In [274]:
for sname in asdf.index.unique(level=0): #['합정', '홍대입구', '강남', '서울대입구(관악구청)', '서초', '성수', '뚝섬', '잠실(송파구청)']:
    print(f'{sname}역 {DIST_THRES}m 이내')
    asdf[asdf.index.isin([sname], level=0)].iloc[:, :10].plot()
    plt.xticks(range(0, 12*60+1, 12*10), range(1960, 2021, 10), rotation=90)
    plt.vlines((1985-1970)*12, 0, asdf[asdf.index.isin([sname], level=0)].iloc[:, :10].max().max(), colors='grey')
    plt.title(f'{sname}역 {DIST_THRES}m 이내')
    plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
    plt.show()
시청역 500m 이내
을지로입구역 500m 이내
을지로3가역 500m 이내
을지로4가역 500m 이내
동대문역사문화공원(DDP)역 500m 이내
신당역 500m 이내
상왕십리역 500m 이내
왕십리(성동구청)역 500m 이내
한양대역 500m 이내
뚝섬역 500m 이내
성수역 500m 이내
건대입구역 500m 이내
구의(광진구청)역 500m 이내
강변(동서울터미널)역 500m 이내
잠실나루역 500m 이내
잠실(송파구청)역 500m 이내
잠실새내역 500m 이내
종합운동장역 500m 이내
삼성(무역센터)역 500m 이내
선릉역 500m 이내
역삼역 500m 이내
강남역 500m 이내
교대(법원, 검찰청)역 500m 이내
서초역 500m 이내
방배역 500m 이내
사당역 500m 이내
낙성대(강감찬)역 500m 이내
서울대입구(관악구청)역 500m 이내
봉천역 500m 이내
신림역 500m 이내
신대방역 500m 이내
구로디지털단지역 500m 이내
대림(구로구청)역 500m 이내
신도림역 500m 이내
문래역 500m 이내
영등포구청역 500m 이내
당산역 500m 이내
합정역 500m 이내
홍대입구역 500m 이내
신촌(지하)역 500m 이내
이대역 500m 이내
아현역 500m 이내
충정로(경기대입구)역 500m 이내
용답역 500m 이내
신답역 500m 이내
신설동역 500m 이내
도림천역 500m 이내
양천구청역 500m 이내
신정네거리역 500m 이내
용두(동대문구청)역 500m 이내
In [ ]: