Geopandas 분석 (1) geojson파일 읽고 저장 및 데이터프레임형식으로 보기

geopandas 분석방법 (1)

#위치가 포함된 데이터를 이용하여 데이터 분석하기!

#데이터 로드부터 저장까지

< 순서 >
1) geojson 데이터 읽는 방법
2) geojson을 데이터 프레임 형식으로 만들기
3) geojson 저장방법

import geopandas as gpd
from geopandas import GeoDataFrame

import pandas as pd
import json

1) geojson 읽는 방법

state_geo = 'shp_to_gep.geojson'
cen_str=json.load(open(state_geo, encoding='utf-8'))
cen_str
{'type': 'FeatureCollection',
 'crs': {'type': 'name',
  'properties': {'name': 'urn:ogc:def:crs:OGC:1.3:CRS84'}},
 'features': [{'type': 'Feature',
   'properties': {'TOT_REG_CD': '1101053010006',
    'ADM_NM': '사직동',
    'ADM_CD': '1101053'},
   'geometry': {'type': 'Polygon',
    'coordinates': [[[126.97033304133119, 37.57911880232895],
      [126.97039244976332, 37.579099248302775],
      [126.97039708040217, 37.57909752768807],
      [126.97043980256053, 37.57907503249067],
      [126.97044812634958, 37.5790709182569],
      [126.97045250813798, 37.57906883776548],
      [126.97047415959725, 37.57904888720932],
      [126.9704975473185, 37.57902780149314]]]}},
  ...]}

2) geojson을 데이터 프레임 형식으로 만들기

  • 1번째 방법
cen_str_df=gpd.read_file('D:\모빌리티\유동인구 데이터\shp_to_gep.geojson',driver='GeoJSON')
cen_str_df=cen_str_df[['ADM_NM','ADM_CD','TOT_REG_CD','geometry']]
cen_str_df
ADM_NM ADM_CD TOT_REG_CD geometry
0 사직동 1101053 1101053010006 POLYGON ((126.97033 37.57912, 126.97039 37.579...
1 사직동 1101053 1101053010001 POLYGON ((126.96613 37.57496, 126.96632 37.574...
2 사직동 1101053 1101053010003 POLYGON ((126.96645 37.57883, 126.96647 37.578...
3 사직동 1101053 1101053010002 POLYGON ((126.96877 37.57823, 126.96878 37.578...
4 사직동 1101053 1101053010005 POLYGON ((126.97399 37.57823, 126.97400 37.578...
... ... ... ... ...
19148 동화동 1102073 1102073010501 POLYGON ((127.01764 37.56250, 127.01763 37.562...
19149 명동 1102055 1102055030001 POLYGON ((126.98893 37.56810, 126.98895 37.568...
19150 장충동 1102058 1102058040004 POLYGON ((127.00338 37.55903, 127.00344 37.559...
19151 보라매동 1121052 1121052010002 POLYGON ((126.92720 37.49429, 126.92709 37.493...
19152 보라매동 1121052 1121052010001 POLYGON ((126.92591 37.49144, 126.92596 37.491...

19153 rows × 4 columns

  • 2번째 방법
geo=json.load(open('shp_to_gep.geojson',encoding='utf-8'))
f = pd.json_normalize(geo['features'])
f
type properties.TOT_REG_CD properties.ADM_NM properties.ADM_CD geometry.type geometry.coordinates
0 Feature 1101053010006 사직동 1101053 Polygon [[[126.97033304133119, 37.57911880232895], [12...
1 Feature 1101053010001 사직동 1101053 Polygon [[[126.96613384750641, 37.574957380849554], [1...
2 Feature 1101053010003 사직동 1101053 Polygon [[[126.96645292161898, 37.5788253347882], [126...
3 Feature 1101053010002 사직동 1101053 Polygon [[[126.96877457487757, 37.57822935210929], [12...
4 Feature 1101053010005 사직동 1101053 Polygon [[[126.9739856241019, 37.57823267082909], [126...
... ... ... ... ... ... ...
19148 Feature 1102073010501 동화동 1102073 Polygon [[[127.01763808390233, 37.562499122782185], [1...
19149 Feature 1102055030001 명동 1102055 Polygon [[[126.98892726910591, 37.568102798887075], [1...
19150 Feature 1102058040004 장충동 1102058 Polygon [[[127.00338472431302, 37.559025029043795], [1...
19151 Feature 1121052010002 보라매동 1121052 Polygon [[[126.92719682242266, 37.494286392496186], [1...
19152 Feature 1121052010001 보라매동 1121052 Polygon [[[126.92590640761341, 37.49143781173751], [12...

19153 rows × 6 columns

3) geojson 저장방법

cen_str_df.to_file('cen_str_df.geojson', driver='GeoJSON')

댓글남기기