from haversine import haversine
import networkx as nx
import geojson



with open("D:/takensoft/project2/data/기타 가공/데이터/osm.geojson",encoding='utf-8') as f:
    gj = geojson.load(f)


def swith_xy(tuples):
    x,y=tuples
    return (y,x)

G = nx.Graph ()

total_data_num= gj['features']
for j in range(len(total_data_num)):
    features = gj['features'][j]
    lines=features['geometry']['coordinates'][0]
    print(j)

    for i in range(len(lines)-1):
        G.add_edge(swith_xy(lines[i]),swith_xy(lines[i+1]),flcass=features['properties']['fclass'],oneway=features['properties']['oneway'])

sg = (G.subgraph(c) for c in nx.connected_components(G)) #가져올 수 없는 패키지가 있는 경우
sg = list(sg)[0]

for n0, n1 in G.edges ():
    dist = haversine(n0, n1,unit='m')
    G.edges [n0,n1][" dist "] = dist

df=nx.to_pandas_edgelist(G)

li_source=list(df['source'])
li_source_x= []
li_source_y=[]

for i in li_source:
    li_source_x.append(str(i[0]))
    li_source_y.append(str(i[1]))
df['source_x']=li_source_x
df['source_y']=li_source_y

li_target=list(df['target'])
li_target_x= []
li_target_y=[]

for i in li_target:
    li_target_x.append(str(i[0]))
    li_target_y.append(str(i[1]))
df['target_x']=li_target_x
df['target_y']=li_target_y
df=df.drop(['source','target'],axis=1)
df=df.reset_index()
df.to_csv('node.csv',encoding='euc-kr')

