Tech. Forum 개발자들을 위한 정보 공유의 장입니다
닫기

Tech.Forum

대용량 KML을 tmap에서 로딩하기 위한 방법

#1

대용량 KML 파일을 T map에서 잘 사용하기 위한 방법이 궁금합니다.

html과 스크립트는는 아래 링크의 페이징 예제와 완전히 동일하게 사용해 정상동작 확인한 상태에서, kml 파일만 제가 생성한 파일로 변경처리 했습니다.
http://tmapapi.sktelecom.com/main.html#web/sample/webSample50

환경은 Python Django 웹서버이고,

예제의 ex.kml을 사용하는 경우 아래와 같이 웹서버가 반응하고 정상적으로 맵에 마커가 찍힙니다.

 [27/Mar/2019 16:33:24] "GET / HTTP/1.1" 200 3529
 [27/Mar/2019 16:33:24] "GET /static/ex.kml?minLon=14126918.35866&minLat=4504838.8349743&maxLon=14154435.688838&maxLat=4512482.5378017&bbox=14126918.35866,4504838.8349743,14154435.688838,4512482.5378017 HTTP/1.1" 200 60109

제가 가지고 있는 약 24GB의 kml 파일을 이용하는 경우, 아래와 같이 에러가 떨어집니다.

[27/Mar/2019 16:33:56] "GET / HTTP/1.1" 200 3538
[27/Mar/2019 16:34:00] "GET /static/BLDG_WGS84.kml?minLon=14126918.35866&minLat=4504838.8349743&maxLon=14154435.688838&maxLat=4512482.5378017&bbox=14126918.35866,4504838.8349743,14154435.688838,4512482.5378017 HTTP/1.1" 200 424009728
----------------------------------------
Exception happened during processing of request from ('127.0.0.1', 52623)
Traceback (most recent call last):
  File "/Users/geniuskch/anaconda/lib/python3.6/socketserver.py", line 639, in process_request_thread
    self.finish_request(request, client_address)
  File "/Users/geniuskch/anaconda/lib/python3.6/socketserver.py", line 361, in finish_request
    self.RequestHandlerClass(request, client_address, self)
  File "/Users/geniuskch/anaconda/lib/python3.6/socketserver.py", line 696, in __init__
    self.handle()
  File "/Users/geniuskch/work/myvenv/lib/python3.6/site-packages/django/core/servers/basehttp.py", line 171, in handle
    self.handle_one_request()
  File "/Users/geniuskch/work/myvenv/lib/python3.6/site-packages/django/core/servers/basehttp.py", line 179, in handle_one_request
    self.raw_requestline = self.rfile.readline(65537)
  File "/Users/geniuskch/anaconda/lib/python3.6/socket.py", line 586, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [Errno 54] Connection reset by peer

소켓쪽을 트레이스하지는 못했습니다만, 파일이 너무 커서 t map api와 웹서버에서 제대로 핸들링이 안되는것 같은데,
적절한 방법이 있을까요?

0 Likes

#2

안녕하세요.
T map API 운영담당자 입니다.

문의주신 내용을 검토해본 결과 장고서버내에서 대용량 텍스트를 읽는 경우 동일한 현상이 발생하는 경우가 존재하였습니다.

정확한 원인파악을 위해 아래의 메일주소로 사용하신 kml 파일을 보내주시면 확인 후 다시 답변드리도록 하겠습니다.


ymahn@slsolution.co.kr

감사합니다.

0 Likes

#3

메일로 사용한 KML 파일을 보내드렸습니다.

감사합니다.

0 Likes

#4

안녕하세요.
T map API 운영담당자 입니다.

메일로 보내주신 kml 파일을 토대로 테스트해본 결과 저희가 제공해드리고 있는 kml 파일과 포맷이 맞지않아 정상동작이 되지않고 있습니다.

파일 포맷을 맞추고난 이후에도 테스트를 진행했을 때 문제가 발생하신다면 아래의 메일주소로 포맷을 맞춘 kml파일과 에러 로그를 보내주시면 확인 후 다시 답변드리도록 하겠습니다.


ymahn@slsolution.co.kr

감사합니다.

0 Likes

#5

예제는 Point이고 보내드린 파일은 Polygon 이고, 등 내용의 차이는 있습니다만, 파일은 표준 KML 포맷입니다.
규격대로 각 객체는 Placemark 내에, 그리고 그려야 하는 좌표들은 MultiGeometry > Polygon에 들어가 있는 정상적인 형태이구요.

혹시 맞춰야 하는 t map용 스펙이나, 뭔가 t map API가 로딩하기 위해 필요한 필수 헤더 같은것들이 따로 있나요?

0 Likes

#6

안녕하세요.
T map API 운영담당자 입니다.

문의주신 표준 KML 확인 결과 보내주신 KML 파일은 저희 TMap Javascript SDK 형태와 맞지 않아 이전에 답변드렸던 내용과 같이 파일 포맷을 샘플과 같이 맞추고난 이후 진행해주시기 바랍니다.

이후에도 문제가 발생하신다면 포맷을 맞춘 Kml 파일을 보내주시면 확인 후 다시 답변드리겠습니다.

아래의 이미지는 Tmap API Response 구조입니다. 참고하시면 도움이 되실 겁니다. ----------------

----------------

감사합니다.

0 Likes