2단계 · GDAL 레시피

전처리

무결성 확인, 좌표계·인코딩·범위·속성 정리.

  1. 1무결성 확인GDAL/OGR C++, MIT, v3.13.3공간데이터 변환 표준 엔진. 래스터(GDAL)·벡터(OGR) 수백 가지 포맷.자세히 보기

    ogrinfo -so -al -oo ENCODING=CP949 /vsizip//raw/gwacheon_buildings.zip/경기도_과천시_새주소건물_20260818/새주소건물/TL_SPBD_BULD.SHP | grep -E 'Geometry|Feature Count|BULD_NM|GRO_FLO_CO|UND_FLO_CO'

    /vsizip/: 압축 해제 없이 열기. .prj·.cpg 없음 → 좌표계 (EPSG) 지구 위 위치를 숫자로 적는 약속. EPSG:4326: 위경도, EPSG:3857: 웹 지도 미터 좌표, EPSG:5186: 국내 중부원점. 자세히(중부원점 EPSG:5186)·인코딩(-oo ENCODING=CP949) 직접 지정. 지상층수: GRO_FLO_CO, 건물명: BULD_NM.

  2. 2위경도 변환·층수로 높이 채우기GDAL/OGR C++, MIT, v3.13.3공간데이터 변환 표준 엔진. 래스터(GDAL)·벡터(OGR) 수백 가지 포맷.자세히 보기

    ogr2ogr -f GeoJSON /work/buildings.geojson /vsizip//raw/gwacheon_buildings.zip/경기도_과천시_새주소건물_20260818/새주소건물/TL_SPBD_BULD.SHP -oo ENCODING=CP949 -s_srs EPSG:5186 -t_srs EPSG:4326 -makevalid -explodecollections -dialect SQLite -sql "SELECT geometry, BULD_NM AS name, GRO_FLO_CO AS floors, CASE WHEN GRO_FLO_CO > 0 THEN GRO_FLO_CO * 3.0 ELSE 9.0 END AS height, CASE WHEN GRO_FLO_CO > 0 THEN '층수×3m' ELSE '기본값 9m' END AS height_source FROM TL_SPBD_BULD"

    -s_srs 좌표계 (EPSG) 지구 위 위치를 숫자로 적는 약속. EPSG:4326: 위경도, EPSG:3857: 웹 지도 미터 좌표, EPSG:5186: 국내 중부원점. 자세히: 좌표계 미표기 보완. -t_srs EPSG:4326: 위경도 변환. height: 지상층수×3m, 층수 없으면 9m. height_source: 사용 값 출처. -makevalid: 자기 교차 테두리 수정. -explodecollections: 그 결과 MultiPolygon → 다각형 단위(mago 3DTiler가 MultiPolygon 건너뜀).