Module: GeoblacklightAdmin::ImageService::Tms

Defined in:
app/services/geoblacklight_admin/image_service/tms.rb

Class Method Summary collapse

Class Method Details

.image_url(document, size) ⇒ String

Formats and returns a thumbnail url for a TMS endpoint from a Web Map Service. This utilizes the GeoServer specific ‘reflect’ service to generate parameters like bbox that are difficult to tweak without more detailed information about the layer.



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'app/services/geoblacklight_admin/image_service/tms.rb', line 16

def self.image_url(document, size)
  # Begins with:
  # https://cugir.library.cornell.edu/geoserver/gwc/service/tms/1.0.0/cugir%3Acugir007957@EPSG%3A3857@png/{z}/{x}/{y}.png

  # Works with:
  # https://cugir.library.cornell.edu/geoserver/wms/reflect?&FORMAT=image%2Fpng&TRANSPARENT=TRUE&LAYERS=cugir007957&WIDTH=1500&HEIGHT=1500

  # Parse the URL using Addressable::URI which handles more complex URIs
  parsed_url = Addressable::URI.parse(document.viewer_endpoint)

  # Build a hash to store the extracted components
  parsed_data = {
    base_url: "#{parsed_url.scheme}://#{parsed_url.host}#{parsed_url.port ? ":" + parsed_url.port.to_s : ""}",
    path_pattern: parsed_url.path
  }

  endpoint = parsed_data[:base_url]
  "#{endpoint}/geoserver/wms/reflect?" \
    "&FORMAT=image%2Fpng" \
    "&TRANSPARENT=TRUE" \
    "&LAYERS=#{document["gbl_wxsIdentifier_s"]}" \
    "&WIDTH=#{size}" \
    "&HEIGHT=#{size}"
end