Work

WMS (Web Map Service)

runicode 2013. 1. 30. 07:22

  본 표준은 서로 다른 웹 맵 서버(Web Map Server)가 보유하고 있는 지리정보간의 상호운용성을 제공하여, 웹을 통한 지리정보의 공유와 활용을 제고시킬 수 있도록 각각의 웹 맵 서버가 제공하는 WMS(Web Map Services) 인터페이스에 대한 표준을 제시하는 것을 목표로 한다[1].
  본 WMS 표준 명세에서는 서버가 보유하는 지리정보에 대해서 클라이언트의 요청에 의해 동적으로 맵을 생성하기 위한 서비스를 기술한다. 특히, 해당 서버가 제공할 수 있는 맵의 범위를 획득(GetCapabilities)하고, 이를 기반으로 특정한 조건의 맵을 획득(GetMap)하고, 생성된 맵 상에 표현된 특정 피처들에 대해 질의(GetFeatureInfo)할 수 있는 세 가지 연산자를 기술한다. 본 표준은 실제 피처 데이터 또는 커버리지 데이터 값을 획득하는 데는 적용할 수 없다.

 

...

 

  본 WMS 표준 명세는 HTTP를 지원하는 웹 맵 서비스의 구현을 정의한다(IETF RFC 2616 참고). 서버에 의해 지원되는 각각의 연산의 URL(Uniform Resource Locator)로 표현될 수 있다. URL은 서비스 제공자의 재량과 연산에 따라 다르거나 같을 수 있다. HTTP는 GET과 POST 두 가지의 메서드를 지원한다. 이러한 메서드는 서버에 의해 제공될 수 있으며, 각 경우마다 URL의 표현이 달라진다. GET 메서드에 대한 지원은 필수사항이고, POST 메서드에 대한 지원은 선택사항이다.

 

...

 

  필수 연산자인 GetCapabilities의 목적은 웹 맵 클라이언트가 해당 웹 맵 서버가 제공하는 서비스에 대한 메타데이터를 획득하는 것이다. 웹 맵 서버로부터 제공되는 메타데이터는 (1) 해당 웹 맵 서버가 제공할 수 있는 지리정보가 무엇인지, (2) 웹 맵 서버가 제공하는 지리정보를 어떻게 요청하는지에 대한 정보를 포함하고 있으며, 기계가 식별가능하도록 (또는 사람이 식별 가능하도록) 기술되어 있다.

  표 7-1은 GetCapabilities 연산을 위한 요청 URL에서 사용되는 "Name=Value" 형태로 정의된 요청 매개변수이다. 요청 URL에서 반드시 사용되는 매개변수의 명칭은 "SERVICE", "REQUEST"가 되고, "SERVICE" 매개변수의 값으로는 반드시 "WMS", "REQUEST" 매개변수의 값으로는 반드시 "GetCapabilities"가 입력되어야 한다. 즉, 임의의 웹 맵 서버에 대해서 "http://hostname/wms.exe?SERVICE=WMS&REQUEST=GetCapabilities"와 같은 요청 URL이 생성될 수 있다. 반면에, "VERSION", "FORMAT", "UPDATESEQUENCE" 등의 매개변수는 선택적으로 사용될 수 있으며, 해당 매개변수의 값은 7.3.3.4절, 7.3.3.5절, 7.3.3.6절에서 상세히 설명한다.

  WMS 요청의 일반적인 형태는 6.3.3절과 6.3.4절에 정의되어 있다[2]. 다른 서비스 유형을 제공하는 WMS 서버의 GetCapabilities 요청을 생성할 때, 클라이언트가 웹 맵 서비스에 대한 정보를 찾는 것을 알려주는 것이 필요하다. 그래서 요청하는 SERVICE 매개변수는 표 7-1에서와 같이 값 "WMS"를 가져야 한다.

 

...

 

  WMS의 GetMap 연산의 역할은 클라이언트로부터의 요청에 대해서 맵을 생성하여 전송하는 것이다. 웹 맵 서버는 클라이언트의 GetMap 요청에 대해서 즉시 해당 요청을 처리하거나, 처리할 수 없을 경우에는 서비스 예외를 발생시킨다. 표 7-6은 GetMap 연산을 위한 요청 URL에서 사용되는 "Name=Value" 형태로 정의된 요청 매개변수이다.

 

 

...

 

  GetFeatureInfo는 WMS에서의 선택적인 연산으로, 서비스 메타데이터에서 선언된 레이어 중에서 속성이 queryable="1"(true)로 정의된 레이어와 이 레이어에서 상속받은 레이어에 대해서 적용가능하다. 클라이언트는queryable="1"(true)인 속성을 갖지 않는 다른 레이어에 대해서 GetFeatureInfo를 요청할 수 없다. 만약 GetFeatureInfo 요청을 받았으나 지원하지 않는 경우, WMS는 적절한 형식의 서비스 예외로 응답(코드=OperationNotSupported)해야 한다.

  GetFeatureInfo 연산은 GetMap 요청으로 반환된 맵에서 특정 피처들에 대해 보다 상세한 정보를 클라이언트에게 제공하는 것을 목적으로 한다. GetFeatureInfo 연산의 사용방법은 다음과 같다. 사용자는 GetMap 요청에 대한 응답(맵)을 보면서 상세한 정보를 얻고자 하는 피처가 그려진 픽셀을 선택한다. GetFeatureInfo 연산에서는 사용자가 선택한 픽셀, 상세한 정보가 필요한 피처가 포함된 레이어, 반환되는 정보의 형식 등을 요청하기 위한 요청 매개변수가 제공된다. 또한 WMS 프로토콜은 상태가 보존되지 않으므로 GetFeatureInfo 요청은 원래의 GetMap 요청 매개변수의 대부분(VERSION과REQUEST를 제외)을 포함함으로써 사용자가 현재 어떠한 맵을 보고 있는가를 WMS에게 알려준다. WMS는 사용자가 선택한 픽셀 위치(I, J)와 원래의 GetMap 요청의 BBOX, CRS, WIDTH, HEIGHT 요청 매개변수로부터 사용자가 선택한 위치의 부가적인 정보를 반환할 수 있다.

 

 

... 

 


[1] TTAK.OT-10.0253

[2] WMS의 요청 구조는 http://host[:port]/path[?{name[=value]&}]의 형태를 가지고 있음을 설명한다.