Web Map Service (WMS)
August 28, 2009 Leave a Comment
Dari tulisan sebelumnya, kita sudah mengenal mengenai web service serta web service yang berhubungan dengan data spasial atau GIS. Kali ini saya mencoba membahas mengenai WMS atau web map service. WMS ini merupakan salah satu standar yang dikeluarkan oleh Open Geospatial Consortium (OGC).
Spesifikasi standar WMS menyajikan bagaimana meminta layanan tersebut melalui protokol HTTP, peta yang ber-geo-referensi dari satu atau beberapa basis data geospasial yang terdistribusi. Permintaan WMS berupa layer atau tema peta dan area yang akan diinginkan. Hasil dari permintaan tersebut adalah satu atau beberapa peta yang ber-geo-referensi sebagai gambar atau image (biasanya dalam format JPG, PNG dll) dan dapat ditampilkan pada browser. Standar WMS juga mendukung kemampuan untuk mendefinisikan apakah gambar yang dihasilkan harus transparan atau tidak, sehingga dapat melakukan tumpang tindih beberapa tema atau layer.
Analoginya kira-kira seperti ini. Kita memiliki data spasial dan kita menginginkan data tersebut dapat juga diakses oleh orang lain melalui jaringan internet. Akan tetapi kita hanya ingin data yang diakses bukan merupakan data vektor-nya (raw data atau data asli). Dengan bantuan WMS, maka data tersebut kita siapkan dan kemudian dijadikan layanan web (web service) menggunakan perangkat lunak pendukung yang memenuhi standar tersebut. Sehingga data spasial yang kita siapkan tadi dapat diakses oleh orang lain melalui layanan web. Hasilnya adalah gambar peta dari data spasial tersebut.
Perangkat lunak yang dapat kita gunakan dapat berupa perangkat lunak open source seperti MapServer, GeoServer atau Deegree maupun perangkat lunak komersial seperti ArcGIS Server, ArcIMS, GeoMedia, dan GeoWebPublisher. Spesifikasi lengkap mengenai WMS dapat diunduh situs opengeospatial.
Ada dua tipe permintaan yang wajib menurut spesifikasi standar WMS, yaitu:
- GetCapabilities – menghasilkan paramater mengenai WMS dan layanan tema atau layer yang disediakan;
- GetMap – dengan paramater yang disediakan, maka hasilnya adalah gambar peta yang diminta.
Sedangkan permintaan tambahan yang dapat juga disediakan adalah:
- GetFeatureInfo
- DescribeLayer
- GetLegendGraphic
WMS GetCapabilities
Untuk mengetahui layanan yang disediakan oleh server adalah dengan meminta dokumen GetCapabilities. Tautan untuk mengetahui kemampuan layanan yang disediakan adalah:
http://NamaHost/wms?service=WMS&request=GetCapabilities
Misalkan kita ingin mengetahui layanan yang disediakan oleh server WMS Agrisoft:
http://gis.agrisoft.co.id:8080/geoserver/wms?service=WMS&request=GetCapabilities
Variabel service=WMS merupakan jenis layanan yang diinginkan, dapat juga diganti dengan layanan lainnya yaitu WFS dan WCS. Variabel request=GetCapabilities digunakan untuk meminta dokumen mengenai kemampuan server.
Apabila permintaan tersebut diterima oleh server, maka hasilnya adalah dokumen XML yang menyajikan secara detail kemampuan dari layanan yang diberikan. Dokumen XML tersebut berisikan:
<WMT_MS_Capabilities version=”1.1.1″>
<Service> . . . </Service>
<Capability>
<Request> . . . </Request>
<Exception> . . . </Exception>
<UserDefinedSymbolization> … </UserDefinedSymbolization>
<Layer> . . . </Layer>
</Capability>
</WMT_MS_Capabilities>
Service menyajikan informasi mengenai layanan, sedangkan Capability menyajikan informasi mengenai kemampuan layanan. Service menyajikan informasi mengenai metadata dasar dari layanan yang disediakan meliputi: nama, deskripsi, dan informasi kontak penyedia layanan.
<Service>
<Name>OGC:WMS</Name>
<Title>GeoServer Web Map Service</Title>
<Abstract>This is a description of your Server</Abstract>
<KeywordList>
<Keyword>WFS</Keyword>
<Keyword>WMS</Keyword>
<Keyword>GEOSERVER</Keyword>
</KeywordList>
<OnlineResource xmlns:xlink=”http://www.w3.org/1999/xlink”
xlink:type=”simple”
xlink:href=”http://localhost:8080/geoserver/wms”/>
<ContactInformation>
<ContactPersonPrimary>
<ContactPerson>Claudius Ptolomaeus</ContactPerson>
<ContactOrganization>
The ancient geographes INC
</ContactOrganization>
</ContactPersonPrimary>
<ContactPosition>Chief geographer</ContactPosition>
<ContactAddress>
<AddressType>Work</AddressType>
<Address/>
<City>Alexandria</City>
<StateOrProvince/>
<PostCode/>
<Country>Egypt</Country>
</ContactAddress>
<ContactVoiceTelephone/>
<ContactFacsimileTelephone/>
<ContactElectronicMailAddress>
claudius.ptolomaeus@gmail.com
</ContactElectronicMailAddress>
</ContactInformation>
<Fees>NONE</Fees>
<AccessConstraints>NONE</AccessConstraints>
</Service>
Capability memiliki empat komponen, yaitu Request, Exception, UserDefinedSymbolization, dan Layer. Pada komponen Request terdapat lima sub-komponen sebagaimana dapat dilihat pada XML berikut ini:
<Request>
<GetCapabilities> . . . </GetCapabilities>
<GetMap> . . . </GetMap>
<GetFeatureInfo> . . . </GetFeatureInfo>
<DescribeLayer> . . . </DescribeLayer>
<GetLegendGraphic> . . . </GetLegendGraphic>
</Request>
Pada blok GetCapabilities, kita dapat mengetahui format dokumen dan mendukung metode HTTP. Server dapat melayani permintaan GET dan juga POST.
<GetCapabilities>
<Format>application/vnd.ogc.wms_xml</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource
xmlns:xlink=”http://www.w3.org/1999/xlink”
xlink:type=”simple”
xlink:href=”http://localhost:8080/geoserver/wms?SERVICE=WMS&”/>
</Get>
<Post>
<OnlineResource
xmlns:xlink=”http://www.w3.org/1999/xlink”
xlink:type=”simple”
xlink:href=”http://localhost:8080/geoserver/wms?SERVICE=WMS&”/>
</Post>
</HTTP>
</DCPType>
</GetCapabilities>
Blok GetMap menyajikan informasi mengenai format gambar yang didukung. Tidak seperti pada blok GetCapabilities yang dapat melayani permintaan GET dan POST, blok GetMap hanya dapat melayani permintaan HTTP GET.
<GetMap>
<Format>image/png</Format>
<Format>application/vnd.google-earth.kml</Format>
<Format>atom</Format>
<Format>image/geotiff</Format>
<Format>image/gif</Format>
<Format>image/jpeg</Format>
<Format>image/png8</Format>
<Format>kml</Format>
<Format>kmz</Format>
<Format>openlayers</Format>
<Format>rss</Format>
<DCPType>
<HTTP>
<Get>
<OnlineResource
xmlns:xlink=”http://www.w3.org/1999/xlink”
xlink:type=”simple”
xlink:href=”http://localhost:8080/geoserver/wms?SERVICE=WMS”/>
</Get>
</HTTP>
</DCPType>
</GetMap>
Blok GetFeatureInfo, DescribeLayer, GetLegendGraphic tidak jauh berbeda dengan dua blok diatas. GetFeatureInfo menyajikan format yang didukung untuk mengetahui data atribut dari data geospasial dan metode HTTP yang didukung (GET dan POST). DescribeLayer menyajikan informasi mengenai deskripsi layer dan GetLegendGraphic menyajikan informasi mengenai format yang didukung untuk mendapatkan legenda dalam bentuk gambar/image. Kedua blok tersebut hanya mendukung metode HTTP GET.
Bagian UserDefinedSymbolization menjelaskan bahwa server tersebut mendukung SLD (Styled Layer Descriptions).
<Exception>
<Format>application/vnd.ogc.se_xml</Format>
</Exception>
<UserDefinedSymbolization SupportSLD=”1″ UserLayer=”1″ UserStyle=”1″ RemoteWFS=”1″/>
Bagian paling utama adalah blok Layer. Informasi yang ditampilkan pada blok Layer adalah Judul (Title) dan Abstrak. Informasi selanjutnya adalah referensi spasial (SRS atau Spatial Reference System) yang didukung oleh server dalam bentuk kode EPSG.
Setelah informasi referensi spasial yang didukung, disajikan informasi mengenai layer yang disediakan. Berikut adalah contoh layer (tiger:poly_landmarks) yang ditampilkan pada setting default GeoServer.
<Layer queryable=”1″>
<Name>tiger:poly_landmarks</Name>
<Title>Manhattan (NY) landmarks</Title>
<Abstract>Manhattan landmarks, identifies water,lakes, parks, interesting buildilngs</Abstract>
<KeywordList>
<Keyword>manhattan</Keyword>
<Keyword>landmarks</Keyword>
<Keyword>DS_poly_landmarks</Keyword>
<Keyword>poly_landmarks</Keyword>
</KeywordList>
<SRS>EPSG:4326</SRS>
<!–WKT definition of this CRS:
GEOGCS["WGS 84",
DATUM["World Geodetic System 1984",
SPHEROID["WGS 84", 6378137.0, 298.257223563,
AUTHORITY["EPSG","7030"]],
AUTHORITY["EPSG","6326"]],
["Greenwich", 0.0, AUTHORITY["EPSG","8901"]],
UNIT["degree", 0.017453292519943295],
AXIS["Geodetic longitude", EAST],
AXIS["Geodetic latitude", NORTH],
AUTHORITY["EPSG","4326"]]–>
<LatLonBoundingBox minx=”-74.047185″
miny=”40.679648″
maxx=”-73.90782″
maxy=”40.882078″/>
<BoundingBox SRS=”EPSG:4326″ minx=”-74.047185″
miny=”40.679648″
maxx=”-73.90782″
maxy=”40.882078″/>
<Style>
<Name>poly_landmarks</Name>
<Title>Default Styler</Title>
<Abstract/>
<LegendURL width=”20″ height=”20″>
<Format>image/png</Format>
<OnlineResource
xmlns:xlink=”http://www.w3.org/1999/xlink”
xlink:type=”simple”
xlink:href=”http://localhost:8080/geoserver/
wms/GetLegendGraphic?VERSION=1.0.0&
FORMAT=image/png&WIDTH=20&HEIGHT=20&
LAYER=tiger:poly_landmarks”/>
</LegendURL>
</Style>
</Layer>
WMS GetMap
Setelah kita mengetahui layanan yang disediakan melalui perintah GetCapabilities, kita dapat mendapatkan gambar peta melaluli perintah GetMap. Melalui HTTP GET dari browser anda ketikan URL berikut ini:
http://gis.agrisoft.co.id:8080/geoserver/wms?version=1.1.1&request=GetMap&
srs=EPSG:26713&bbox=588430.23,4913303.48,610531.82,4928766.25&width=300&
height=225&styles=&layers=sf:roads&Format=image/png&
Layer roads hasil permintaan GetMap
Untuk menampilkan dua layer pada daerah yang sama, kita dapat menambahkan layer tersebut bagian layers dengan pemisah koma. Berikut ini contoh menampilkan layer roads (jalan) dan streams (sungai):
http://localhost:8080/geoserver/wms?version=1.1.1&
request=GetMap&srs=EPSG:26713&bbox=588430.31,4913241.15,610522.39,4928777.23&
width=800&height=527&styles=&layers=sf:streams,sf:roads&
Format=image/png&
Layer roads dan streams hasil permintaan GetMap





Komentar