일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준
- 2164 카드2
- Merge Repositories
- 파이썬
- Chat-GPT
- to shp
- 인스타그램
- Crawling
- 크롤링
- Python
- colab runtime
- geopandas
- 플라스크
- geoDataFrame
- plotly dash
- string to list
- convert to shp
- 셀레니움
- flask
- 혁신성장부문
- python buildpacks
- clustering
- kmeans
- 괄호 문제
- Selenium
- 코랩 런타임
- 알고리즘
- 해시태그
- NLP
- 웹페이지
- Today
- Total
코딩코딩코딩
Convert the Geo DataFrame (csv) to shp file 본문
geometry 형식의 컬럼을 가지고 있는 데이터프레임을 shp file로 바꿔서 저장하려고 할 때 발생할 수 있는 오류의 종류
ㄱ) TypeError: Input must be valid geometry objects
ㄴ) 'Series' object has no attribute 'has_z' 에러 방지
ㄷ) WKTReadingError: Could not create geometry because of errors while reading input.
1. 먼저 csv 파일로 저장되어 있는 geo file 을 불러옴 (pd.read_csv)
2. geometry column의 개별값에 wkt.load()를 적용해주어야 함
2-1. 위에 적어 둔 (ㄷ) 에러가 발생할 수 있는데, 이 때 에러 처리를 해줄 수 있도록 wkt_loads() 함수를 만들어서 사용
. 에러 발생 시 None 값을 반환했으므로 dropna를 통해 지워줌
from shapely import wkt
import geopandas as gpd
def wkt_loads(x):
try:
return wkt.loads(x)
except Exception:
return None
geo_df['geometry'] = geo_df['geometry'].apply(wkt_loads)
geo_df.dropna(subset=['geometry'], inplace=True)
위 처리를 해주었으면 만들어진 geo_df를 바탕으로 geo DataFrame을 생성할 수 있음
3. (ㄱ) 에러는 geo_df_gpd = gpd.GeoDataFrame(geo_df) 명령어 수행 중 나타날 수 있음
4. (ㄴ) 에러는 shp 파일로 저장할 때 나타날 수 있음
이를 방지해주기 위해서는 데이터프레임의 geometry 가 어떤 열인지 명시적으로 지정해줄 필요가 있음
geo_df_gpd.set_geometry(col='geometry', inplace=True)
* 추가로 shp 파일로 저장할 때는 컬럼명이 전부 영어로 되어있어야 함
5. shp file로 저장
geo_df_gpd.to_file("your_file_path\\file_name.shp")
shp file로 저장하면 shp 뿐만 아니라 dbp, prj, shx 파일 등이 같이 생기기 때문에 파일 경로를 폴더로 지정해주는 것이 좋음
'파이썬 > GeoData' 카테고리의 다른 글
geopandas 좌표 변환 (5179 to 4326) (0) | 2021.12.30 |
---|---|
Python Geocoding (Googlemaps API) 주소-좌표 변환 (0) | 2021.10.14 |
pip install geopandas, conda install geopandas, (파이썬 wheel(whl) 설치) (7) | 2021.02.16 |