2020년에 싱가포르 고객 데이터를 우편번호 단위로 지도에 올리는 작업을 하면서, 지도에 데이터를 표시하는 방법을 세 가지로 나눠 검토했습니다. 위경도 열을 쓰는 방법, 공개 GeoJSON을 찾는 방법, 직접 GeoJSON을 만드는 방법입니다. 당시에는 Oracle Database Spatial과 Map Builder로 GeoJSON을 만들었지만, 이 도구 체인은 지금은 권장되지 않습니다. 이 글은 그 경험을 현재 Oracle Analytics(OAC·OAS) 문서 기준으로 다시 정리한 것입니다.
무엇이 바뀌었나: Oracle MapViewer(Map Builder 포함)는 2018년 Fusion Middleware에서 deprecated됐고, Oracle은 후속으로 Oracle Database에 포함된 Spatial Map Visualization Component를 안내합니다(My Oracle Support 2485093.1). 지금의 Oracle Analytics에서는 GeoJSON 파일을 Console에서 바로 올려 사용자 지정 지도 레이어로 씁니다. 원본 스크린숏은 옛 화면이라 넣지 않았고, 메뉴 위치는 사용하는 버전에서 확인하세요.
먼저 고를 것: 점인가, 경계인가
| 표시할 것 | 예 | 방법 |
|---|---|---|
| 점(위치) | 매장, 주유소, 지점 | 데이터에 위도·경도 열을 넣고 Location Details로 지정. 레이어를 만들 필요 없음 |
| 이름으로 찾을 수 있는 지역 | 국가, 주요 도시 | 지명 열이면 Oracle Analytics가 시스템 지도 레이어를 자동으로 적용 |
| 시스템 레이어에 없는 경계 | 우편구역, 판매 권역, 사내 구역 | GeoJSON을 준비해 사용자 지정 지도 레이어로 업로드 |
당시 예시였던 주유소 목록은 점 데이터였습니다. 돌아보면 우편번호로 위경도만 붙이면 됐고, 주유소 위치를 GeoJSON 레이어로 따로 만들 필요는 없었습니다. 사용자 지정 레이어가 꼭 필요한 경우는 우편구역처럼 경계(폴리곤)를 칠하고 싶을 때입니다.
1. 위경도 열로 점 표시하기
- 데이터셋에 위도·경도 열을 넣습니다. 우편번호만 있다면 우편번호→위경도 대응표와 조인해 붙입니다.
- 숫자 열은 측정값(measure)으로 들어오므로, 위도·경도 열의 “다음으로 처리(Treat as)”를 속성(attribute)으로 바꿉니다.
- 위도 열의 옵션 메뉴에서 Location Details를 열어 Location Type을 Latitude로, 경도 열은 Longitude로 지정합니다. 열 아이콘이 위치 아이콘으로 바뀌면 지도에 연결된 것입니다.
원본 글은 “위경도 열이 있으면 자동으로 지도에 표시된다”고 했지만, 현재 Oracle 튜토리얼은 위와 같이 열을 직접 지정하는 절차를 안내합니다.
2. 경계를 GeoJSON 레이어로 올리기
GeoJSON 준비
파일은 확장자가 .json이고 GeoJSON 형식이어야 합니다. 각 지물(feature)의 properties에는 분석 데이터의 열과 같은 값을 갖는 키가 있어야 합니다. 이 키가 나중에 데이터와 레이어를 잇는 “레이어 키”가 됩니다. 좌표는 GeoJSON 표준대로 WGS84 경도·위도 순서입니다.
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": { "district_code": "D01", "district_name": "Raffles Place" },
"geometry": {
"type": "Polygon",
"coordinates": [[[103.8500, 1.2800], [103.8550, 1.2800], [103.8550, 1.2850],
[103.8500, 1.2850], [103.8500, 1.2800]]]
}
}
]
}
위 좌표는 구조를 보여 주기 위한 임의의 사각형입니다(실제 우편구역 경계가 아님). 경계 데이터가 Shapefile로 있다면 GDAL의 ogr2ogr로 WGS84 GeoJSON으로 바꿀 수 있습니다.
ogr2ogr -f GeoJSON -t_srs EPSG:4326 districts.json districts.shp
- 용량: 문서 기준 파일 하나는 압축 후 100MB, 전체 GeoJSON 저장 공간은 기본 200MB(압축 기준)까지입니다. 업로드할 때 공백 제거와 좌표 소수점 6자리 반올림이 자동으로 적용되며, Oracle 문서는 mapshaper.org 같은 도구로 미리 줄이는 방법도 안내합니다.
- 데이터 출처와 라이선스: 경계 데이터는 공식 기관이나 이용 조건이 분명한 출처에서 받으세요. 무료 공개 데이터 중에는 비상업 이용만 허용하는 것도 있습니다. 당시에도 우편번호 좌표는 공개 저장소의 표본을 시험용으로 썼고, 운영용으로는 공식 데이터 구매를 검토했습니다.
업로드와 연결
- Navigator → Console → Maps로 갑니다.
- Add Custom Layer에서 GeoJSON을 고르고 파일을 올립니다.
- Map Layer 대화상자의 Layer Keys에서 데이터 열과 대응하는 키(예:
district_code)를 고르고 저장합니다. - 데이터셋에서 해당 열(예: 구역 코드)의 옵션 메뉴 → Location Details에서 Map Layer로 방금 올린 레이어를 지정합니다.
올린 레이어는 Console → Maps → Map Layers → Custom Map Layers에서 이름·레이어 키 변경, 새 파일로 다시 올리기, 내려받기, 삭제를 할 수 있습니다.
데이터베이스에서 GeoJSON을 만들고 싶다면
경계나 위치가 이미 Oracle Database의 SDO_GEOMETRY로 관리되고 있다면, Map Builder 대신 데이터베이스에서 GeoJSON을 뽑아 쓰는 방법을 검토할 수 있습니다. 원본 글은 Spatial에 Enterprise Edition이 필요하다고 했지만, Oracle은 2019년 12월부터 Spatial 기능을 추가 라이선스 없이 쓸 수 있다고 발표했습니다. 사용하는 에디션의 정확한 조건은 Oracle Database Licensing Information 문서에서 확인하세요.
정리
점이면 위경도 열을 Location Details로 지정하고, 시스템 레이어에 없는 경계가 필요할 때만 GeoJSON 사용자 지정 레이어를 올립니다. 레이어 키를 데이터 열과 같은 값으로 맞추는 것이 핵심입니다. 예전의 MapViewer·Map Builder 절차는 더 이상 권장되는 경로가 아닙니다.
형식이 섞인 날짜 열 정리는 Oracle Analytics에서 형식이 섞인 날짜 열을 정규식으로 맞추기에서 다뤘습니다.



