EIS 이미지 서비스 API
API Key
하늘소프트의 전자해도 이미지 서비스를 사용하기 위해서는 API Key를 필수 인자로 반드시 지정하여야 합니다. API Key 발급 절차는 2026년 초에 오픈할 예정입니다.
API 파라미터
EIS API를 사용하여 전자해도를 요청하는 방식은 크게 두 가지입니다.
- 이미지 크기 기반 요청
- 타일맵 요청
창 크기만큼의 이미지를 요청할 때는 창의 크기와 동일한 크기로 이미지의 폭과 높이를 지정합니다. 요청 시에는 맵 요청 모드를 center 또는 area로 지정해주어야 합니다. 맵 요청 모드를
center로 했을 때는 지도의 축척을 나타내는 scale을 함께 지정하여야 합니다. 맵 요청 모드를 area로 했을 때는 지도의 경계를 나타내는 좌우 경도(left,
right), 상하 위도(top, bottom)를 함께 지정해야 합니다. 타일맵 방식은 타일맵 제공 URL의 처리가 가능한 프레임워크와 함께 사용하여야 합니다. 타일맵 방식에서는 맵 요청 모드를 지정하는
것은 의미가 없습니다. Mode, scale, left, top, right, bottom 외에는 전자해도의 전시 방식을 지정하는 것으로 아래 표의 값들을
요청 인자로 사용해야 합니다.
| 이름 | 타입 | 필수 여부 | 기본값 | 설명 |
|---|---|---|---|---|
key |
string |
필수 | 없음 | API 키. API 사용자를 인증하고 사용량 제한을 적용합니다. |
mode |
string |
선택 | 없음 | 지도 중심 설정 모드. center: 중심 좌표 사용 (lon, lat 필수), area: 영역 좌표 사용 (left, right, bottom, top 필수). |
lon |
number |
조건부 | 없음 | 중심 경도 (-180 ~ 180). mode=center일 때 필수입니다. |
lat |
number |
조건부 | 없음 | 중심 위도 (-90 ~ 90). mode=center일 때 필수입니다. |
left |
number |
조건부 | 없음 | 영역 왼쪽 경도 (-180 ~ 180). mode=area일 때 필수입니다. |
right |
number |
조건부 | 없음 | 영역 오른쪽 경도 (-180 ~ 180). mode=area일 때 필수입니다. |
bottom |
number |
조건부 | 없음 | 영역 아래쪽 위도 (-90 ~ 90). mode=area일 때 필수입니다. |
top |
number |
조건부 | 없음 | 영역 위쪽 위도 (-90 ~ 90). mode=area일 때 필수입니다. |
width |
integer |
선택 | 256 |
이미지 가로 크기. |
height |
integer |
선택 | 256 |
이미지 세로 크기. |
projection |
string |
선택 | 없음 | 지도 투영 방식. M (Mercator), W (WGS84). |
Scale |
integer |
선택 | 없음 | 지도 축척 값. 실제 지도 축척을 고려한 유효 범위 (100 - 500,000,000). |
ViewByScale |
integer |
선택 | 0 |
축척별 보기 설정 사용 여부 (0: 사용 안 함, 1: 사용). |
UseScaminmax |
integer |
선택 | 1 |
최대/최소 축척 사용 여부 (0: 사용 안 함, 1: 사용). |
dispcat |
integer |
선택 | 2 |
표시 카테고리 설정 (0: 기본, 1: 표준, 2: 전체). |
rotation |
number |
선택 | 없음 | 지도 회전 각도 (degree). |
colorset |
string |
선택 | 0 |
색상 설정 (0-4). |
lang |
integer |
선택 | 0 |
언어 설정 (0: 영어, 1: 한국어 ). |
bgTransparent |
integer |
선택 | 0 |
배경 투명 여부 (0: 불투명, 1: 투명). |
displayAsGray |
integer |
선택 | 0 |
회색조 표시 여부 (0: 컬러, 1: 컬러). |
one_cell |
integer |
선택 | 없음 | 단일 셀 표시 여부 (0: 일반, 1: 단일 셀). |
text |
integer |
선택 | 1 |
텍스트 표시 여부 (0: 사용 안 함, 1: 사용). |
symbol |
integer |
선택 | 1 |
심볼 표시 여부 (0: 사용 안 함, 1: 사용). |
sounding |
integer |
선택 | 1 |
수심 정보 표시 여부 (0: 사용 안 함, 1: 사용). |
shallow |
integer |
선택 | 0 |
얕은 수심 패턴 표시 여부 (0: 사용 안 함, 1: 사용). |
twoshade |
integer |
선택 | 0 |
2단계 음영 표시 여부 (0: 사용 안 함, 1: 사용). |
metaobj |
integer |
선택 | 0 |
메타 객체 표시 여부 (0: 사용 안 함, 1: 사용). |
symscale |
Number |
선택 | 없음 | 심볼 크기 조정 비율 (0.022222, 0.033333, 0.044444). |
scrdpi |
integer |
선택 | 없음 | 화면 DPI. |
grid |
integer |
선택 | 0 |
격자 표시 여부 (0: 사용 안 함, 1: 사용). |
compass |
integer |
선택 | 없음 | 나침반 표시 여부 (0: 사용 안 함, 1: 사용). |
refdist |
number |
선택 | 없음 | 기준 거리. |
fontsize |
number |
선택 | 없음 | 글꼴 크기. |
lightsector |
integer |
선택 | 0 |
광원 섹터 표시 여부 (0: 사용 안 함, 1: 사용). |
lightdesc |
integer |
선택 | 0 |
광원 설명 표시 여부 (0: 사용 안 함, 1: 사용). |
informsymbol |
integer |
선택 | 0 |
정보 심볼 표시 여부 (0: 사용 안 함, 1: 사용). |
textdec |
integer |
선택 | 1 |
텍스트 겹침 방지 여부 (0: 사용 안 함, 1: 사용). |
soundingdec |
integer |
선택 | 1 |
수심 정보 겹침 방지 여부 (0: 사용 안 함, 1: 사용). |
shallowcnt |
integer |
선택 | 없음 | 얕은 수심 경계선 깊이값. |
deepcnt |
integer |
선택 | 없음 | 깊은 수심 경계선 깊이값. |
safetycnt |
integer |
선택 | 없음 | 안전 수심 경계선 깊이값. |
safetydepth |
number |
선택 | 없음 | 안전 수심 깊이. |
textborder |
integer |
선택 | 0 |
텍스트 테두리 표시 여부 (0: 사용 안 함, 1: 사용). |
imageformat |
string |
선택 | png |
이미지 형식 (png, jpg, webp). |
pngquality |
integer |
선택 | 3 |
PNG 품질 (1-9). |
jpgquality |
integer |
선택 | 95 |
JPG 품질 (0-100). |
webpquality |
integer |
선택 | 95 |
WEBP 품질 (1-100). |
overscanw |
integer |
선택 | 없음 | 가로 오버스캔 픽셀 수. |
overscanh |
integer |
선택 | 없음 | 세로 오버스캔 픽셀 수. |
symbology |
string |
선택 | "T" |
심볼 표시 방식 설정 (T: 일반 심볼, S: 단순화된 심볼). |
이미지 크기 기반 요청 방법
이미지 크기로 전자해도 이미지를 요청할 때는 HTTP GET 또는 POST 방식을 사용할 수 있습니다.
GET 요청 방법
GET 방식으로 이미지를 요청할 때는 아래와 같은 URL 형식을 사용합니다.
https://eisapi.hanulsoft.co.kr?key={YOUR_API_KEY}¶m1=value1&...¶mN=valueN
사용 예시 1: mode=center
https://eisapi.hanulsoft.co.kr/?key={YOUR_API_KEY}&mode=center&scale=10000000&lon=127&lat=35&width=1024&height=768
center 모드에서 GET 요청 결과
사용 예시 2: mode=area
https://eisapi.hanulsoft.co.kr/?key={YOUR_API_KEY}&mode=area&left=110&right=140&top=36&bottom=34&width=1024&height=768
area 모드에서 GET 요청 결과
POST 요청 방법
POST 요청은 GET 방식과 유사하지만, 인자를 POST 요청의 Body에 기록하여 URL에서 인자를 노출시키지 않는 방식입니다.
POST 방식으로 이미지를 요청할 때는 아래와 같은 EIS API의 URL만 지정하고 인자는 요청 메시지 바디에 따로 넣도록 합니다.
사용 예시 1: mode=center
POST URL: https://eisapi.hanulsoft.co.kr
{
"key" : "{YOUR_API_KEY}",
"mode": "center",
"scale": 10000000,
"lon": 127,
"lat": 35,
"width": 1024,
"height":768
}
center 모드에서 POST 요청 결과
사용 예시 2: mode=area
POST URL: https://eisapi.hanulsoft.co.kr
{
"key" : "{YOUR_API_KEY}",
"mode": "area",
"left": 110,
"right": 140,
"top": 36,
"bottom": 34,
"width": 1024,
"height":768
}
area 모드에서 POST 요청 결과
타일맵 요청 방법
타일맵은 OpenLayers나 leaflet처럼 타일맵 URL을 받아서 처리할 수 있는 프레임워크와 함께 사용할 수 있습니다.
타일맵 요청에는 지도의 확대/축소값 z, 가로 타일의 인덱스 x, 세로 타일의 인덱스 y를 지정된 형식의 URL에 지정해야 합니다.
타일맵 요청은 GET 방식만 받아들일 수 있으므로, API Key 및 다른 인자들을 쿼리 스트링 형식으로 타일맵 URL에 추가해주면 됩니다.
하늘소프트 EIS 타일맵 URL
https://eisapi.hanulsoft.co.kr/tilemap/{z}/{x}/{y}.png?key={YOUR_API_KEY}¶m1=value1&...¶mN=valueN
Leaflet을 사용한 예시
// 맵 초기화
let map = L.map("map").setView([34.8808, 128.622], 10); // 거제도, 대한민국
const ENC_SERVER_URL = "https://eisapi.hanulsoft.co.kr";
const my_api_key = "{YOUR_API_KEY}";
const urlTemplate = `${ENC_SERVER_URL}/tilemap/{z}/{x}/{y}.png?key={my_api_key}&text=0&symbol=0`;
let tileLayer = L.tileLayer(urlTemplate, {
attribution: "© Hanulsoft ENC",
maxZoom: 18
}).addTo(map);
위 코드는 Leaflet을 사용하여 지도를 초기화하고, API로부터 타일 이미지를 가져와 지도에 표시하는 예시입니다. API 키와 요청 파라미터를 적절히 설정해야 합니다.
참고
eis.hanulsoft.co.kr사이트에서 사용된 API KEY를 여러분이 개발하는 웹사이트에서 사용 시 전자해도 서비스가 되지 않으니 여러분의 API KEY를 반드시 발급받으시기 바랍니다.- API 키를 안전하게 관리하고 노출되지 않도록 주의하십시오.