Skip to content

Class Extensions

hwan edited this page Nov 7, 2021 · 18 revisions

CoodDataFrame

coord_df = CoordDataFrame(source_df, geo_df, table_df, x_colname, y_colname)

param

  • source_df: 위치좌표를 포함하는 Spark DataFrame
  • geo_df: shp로부터 생성한 GeoDataFrame
  • table_df: 주소체계 데이터베이스 테이블로부터 생성한 Spark DataFrame
  • x_colname: 경도 좌표 컬럼 이름(Str)
  • y_colname: 위도 좌표 컬럼 이름(Str)

add_pnu()

해당 위치 좌표에 매칭되는 PNU 코드 컬럼을 추가합니다.

res_df = coord_df.add_pnu()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+-------------------+
|        위도|        경도|                PNU|
+-----------+-----------+-------------------+
|35.87343028|128.6103158|2711010300103670054|
|35.87334197|128.6099071|2711010300103670054|
|35.87327842|128.6096135|2711010300103670054|
+-----------+-----------+-------------------+

add_h3()

해당 위치 좌표에 매칭되는 h3 컬럼을 추가합니다.

res_df = coord_df.add_h3()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+---------------+
|        위도|        경도|             h3|
+-----------+-----------+---------------+
|35.87343028|128.6103158|8a30c190311ffff|
|35.87334197|128.6099071|8a30c190311ffff|
|35.87327842|128.6096135|8a30c19031affff|
+-----------+-----------+---------------+

add_zipcode()

해당 위치 좌표에 매칭되는 우편번호 컬럼을 추가합니다.

res_df = coord_df.add_zipcode()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+-------+
|        위도|        경도|zipcode|
+-----------+-----------+-------+
|35.64103224|128.4106523|  43013|
|35.66091032|128.4159519|  43006|
| 35.6320721|128.4175234|  43013|
+-----------+-----------+-------+

add_bupjungdong()

해당 위치 좌표에 매칭되는 법정동코드 컬럼을 추가합니다.

res_df = coord_df.add_bupjungdong()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+----------------+
|        위도|        경도|bupjungdong_code|
+-----------+-----------+----------------+
|35.87343028|128.6103158|      2711010300|
|35.87334197|128.6099071|      2711010300|
|35.87327842|128.6096135|      2711010300|
+-----------+-----------+----------------+

add_roadname()

해당 위치 좌표에 매칭되는 도로명주소(시도, 시군구, 도로명, 읍면동, 법정리, 지하여부, 건물 본번, 건물 부번) 컬럼을 추가합니다.

res_df = coord_df.add_roadname()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+-------+-------+--------+------------+---------+-----------+-----------------------+-------------------------+
|        위도|        경도|   sido|sigungu|roadname|eupmyeondong|bupjungli|is_basement|building_primary_number|building_secondary_number|
+-----------+-----------+-------+-------+--------+------------+---------+-----------+-----------------------+-------------------------+
|35.87343028|128.6103158|대구광역시|    중구|동덕로38길|     동인동3가|         |          0|                    100|                        0|
|35.87334197|128.6099071|대구광역시|    중구|동덕로38길|     동인동3가|         |          0|                    100|                        0|
|35.87327842|128.6096135|대구광역시|    중구|동덕로38길|     동인동3가|         |          0|                    100|                        0|
+-----------+-----------+-------+-------+--------+------------+---------+-----------+-----------------------+-------------------------+

add_roadname_addr()

해당 위치 좌표에 매칭되는 전체 도로명주소 컬럼을 추가합니다.

res_df = coord_df.add_roadname_addr()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+-----------------------------------+
|        위도|        경도|                   roadname_address|
+-----------+-----------+-----------------------------------+
|35.87343028|128.6103158|   대구광역시 중구 동덕로38길 동인동3가 100|
|35.87334197|128.6099071|   대구광역시 중구 동덕로38길 동인동3가 100|
|35.87327842|128.6096135|   대구광역시 중구 동덕로38길 동인동3가 100|
+-----------+-----------+-----------------------------------+

add_jibun()

해당 위치 좌표에 매칭되는 지번주소(시도, 시군구, 읍면동, 법정리, 지번 본번, 지번 부번) 컬럼을 추가합니다.

res_df = coord_df.add_jibun()
res_df.show()

# returns Spark DataFrame
+-----------+-----------+----------+-------+------------+---------+--------------------+----------------------+
|        위도|        경도|      sido|sigungu|eupmyeondong|bupjungli|jibun_primary_number|jibun_secondary_number|
+-----------+-----------+----------+-------+------------+---------+--------------------+----------------------+
|35.87343028|128.6103158|   대구광역시|    중구|     동인동3가|         |                 192|                    79|
|35.87334197|128.6099071|   대구광역시|    중구|     동인동3가|         |                 192|                    79|
|35.87327842|128.6096135|   대구광역시|    중구|     동인동3가|         |                 192|                    79|
+-----------+-----------+----------+-------+------------+---------+--------------------+----------------------+

AddressDataFrame

address_df = AddressDataFrame(target_column, source_df)

param

  • target_column: 도로명/지번주소 컬럼 이름
  • source_df: 도로명주소 또는 지번주소 컬럼을 포함하는 Spark DataFrame

to_bupjungdong()

해당 도로명/지번주소에 매칭되는 법정동코드와 시군구코드 컬럼을 추가합니다.

res_df = address_df.to_bupjungdong(table_df)
res_df.show()

# returns Spark DataFrame
+---------------------------+---------+------------+-----------------+----------------+------------+
|                    받는분주소|sido_name|sigungu_name|eupmyeondong_name|bupjungdong_code|sigungu_code|
+---------------------------+---------+------------+-----------------+----------------+------------+
| 서울특별시 강남구 광평로56길 8-9|  서울특별시|        강남구|             수서동|      1168011500|       11680|
| 서울특별시 강남구 남부순환로35...| 서울특별시|        강남구|             도곡동|      1168011800|       11680|
|      서울특별시 강남구 논현로 14| 서울특별시|        강남구|             개포동|      1168010300|       11680|
+---------------------------+---------+------------+-----------------+----------------+------------+

params

  • table_df: 주소체계 데이터베이스에 불러온 테이블 DataFrame

add_sido()

해당 도로명/지번주소에 매칭되는 시도 컬럼을 추가합니다.

res_df = address_df.add_sido()
res_df.show()

# returns Spark DataFrame
+-----------------------------------+-----+
|target                             |sido |
+-----------------------------------+-----+
|경기도 화성시 장안면 매바위로366번길 8     |경기도 |
|경기도 화성시 장안면 버들로              |경기도 |
|경기도 화성시 장안면 석포리              |경기도 |
+-----------------------------------+-----+

add_sigungu()

해당 도로명/지번주소에 매칭되는 시군구 컬럼을 추가합니다.

res_df = address_df.add_sigungu()
res_df.show()

# returns Spark DataFrame
+-----------------------------------------+-----------+
target                                    |sigungu    |
+-----------------------------------------+-----------+
|경기도 안산시 단원구 해봉로 137                 |안산시 단원구 |
|경기도 수원시 장안구 경수대로 1079               |수원시 장안구 |
|경기도 안산시 상록구 양달말길 93-7               |안산시 상록구 |
+-----------------------------------------+-----------+

add_eupmyeon()

해당 도로명/지번주소에 매칭되는 읍면동 컬럼을 추가합니다.

res_df = address_df.add_eupmyeon()
res_df.show()

# returns Spark DataFrame
+-------------------------------------+--------+
|target                               |eupmyeon|
+-------------------------------------+--------+
|경기도 화성시 장안면 매바위로366번길 8       |장안면    |
|강원도 원주시 호저면 사제로 9              |호저면    |
|경상남도 사천시 곤양면 경충로 23-1          |곤양면    |
+-------------------------------------+--------+

add_roadname()

해당 도로명/지번주소에 해당하는 도로명 컬럼을 추가합니다.

res_df = address_df.add_roadname()
res_df.show()

# returns Spark DataFrame
+-------------------------------------+---------+
|split                                |roadname |
+-------------------------------------+---------+
|경기도 안산시 단원구 해봉로 137            |해봉로     |
|경기도 수원시 장안구 경수대로 1079          |경수대로   |
|경기도 안산시 상록구 양달말길 93-7          |양달말길   |
+-------------------------------------+---------+

add_building_primary_number()

해당 도로명/지번주소에 해당하는 건물 본번 컬럼을 추가합니다.

res_df = address_df.add_buildling_primary_number()
res_df.show()

# returns Spark DataFrame
+-----------------------------------+-----------------------+ 
|split                              |building_primary_number|
+-----------------------------------+-----------------------+ 
|경기도 안산시 단원구 해봉로 137           |137                    |
|경기도 수원시 장안구 경수대로 1079         |1079                   |
|경기도 안산시 상록구 양달말길 93-7         |93                     |
+-----------------------------------+-----------------------+