Announcement

Collapse
No announcement yet.

WorldWind <-> MapCache <-> MapServer

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • WorldWind <-> MapCache <-> MapServer

    I have a MapCache <-> MapServer setup and running. MapCache is configured for WMS access and is used to cache tiles for specific layers provided by my MapServer. I can access the WMS capabilities and display a tile through my browser by accessing WMS trough MapCache and have verified that it is being cached.

    Excellent, just what I wanted.

    Next, I setup a WorldWind client to access the MapCache WMS. WorldWind complains that the rootlayer (something MapCache uses to wrap all layers) does not provide a geographic bounding box. WorldWind logs this as severe and starts throwing exceptions. I'm trying to figure out where the problem lies. Does the WMS OGC Standard require the top layer to have a bounding box or is the WorldWind client not WMS compliant? Below is the error messages that I'm seeing. Below that is the getCapabilities response. Below that is the MapCache xml file. Below that is the MapServer map file.

    Any help will be greatly appreciated.


    Exceptions:
    Code:
    SEVERE: No geographic bounding box given in WMS capabilities for layer rootlayer
    SEVERE: No geographic bounding box given in WMS capabilities
    SEVERE: WMS capabilities document is missing values necessary for component construction
    
    UpdateSequence: none
    ServiceName: OGC:WMS
    ServiceTitle: map service
    ServiceAbstract: none
    Fees: none
    AccessConstraints: none
    Keywords:  none
    OnlineResource: href: http://localhost/mapcache/?, type: null
    none
    Max width = 0 Max height = 0
    
    GetMap
    	Formats: 	image/jpeg, 	image/png, 
    	DCPTypes:
    		HTTP, Get, href: http://localhost/mapcache/?, type: null
    GetCapabilities
    	Formats: 	application/vnd.ogc.wms_xml, 
    	DCPTypes:
    		HTTP, Get, href: http://localhost/mapcache/?, type: null
    GetFeatureInfo
    	Formats: 	text/plain, 	application/vnd.ogc.gml, 
    	DCPTypes:
    		HTTP, Get, href: http://localhost/mapcache/?, type: null
    
    LAYERS
    LAYER rootlayer: queryable = false
    LAYER bluemarbleJanuary: queryable = false
    
    gov.nasa.worldwind.exception.WWRuntimeException: No geographic bounding box given in WMS capabilities
    	at gov.nasa.worldwind.util.DataConfigurationUtils.getWMSLayerConfigParams(Unknown Source)
    	at gov.nasa.worldwind.wms.WMSTiledImageLayer.wmsGetParamsFromCapsDoc(Unknown Source)
    	at gov.nasa.worldwind.wms.WMSTiledImageLayer.<init>(Unknown Source)
    	at gov.nasa.worldwind.layers.BasicLayerFactory.doCreateFromCapabilities(Unknown Source)
    	at gov.nasa.worldwind.layers.BasicLayerFactory.doCreateFromCapabilities(Unknown Source)
    	at gov.nasa.worldwind.BasicFactory.createFromConfigSource(Unknown Source)
    	at gov.nasa.worldwind.layers.BasicLayerFactory.createFromConfigSource(Unknown Source)
    
    gov.nasa.worldwind.exception.WWRuntimeException: Creation from configuration file failed Version: 1.1.1
    	at gov.nasa.worldwind.BasicFactory.createFromConfigSource(Unknown Source)
    	at gov.nasa.worldwind.layers.BasicLayerFactory.createFromConfigSource(Unknown Source)
    
    Caused by: java.lang.IllegalArgumentException: WMS capabilities document is missing values necessary for component construction
    	at gov.nasa.worldwind.wms.WMSTiledImageLayer.wmsGetParamsFromCapsDoc(Unknown Source)
    	at gov.nasa.worldwind.wms.WMSTiledImageLayer.<init>(Unknown Source)
    	at gov.nasa.worldwind.layers.BasicLayerFactory.doCreateFromCapabilities(Unknown Source)
    	at gov.nasa.worldwind.layers.BasicLayerFactory.doCreateFromCapabilities(Unknown Source)
    	... 14 more
    
    Caused by: gov.nasa.worldwind.exception.WWRuntimeException: No geographic bounding box given in WMS capabilities
    	at gov.nasa.worldwind.util.DataConfigurationUtils.getWMSLayerConfigParams(Unknown Source)
    	... 18 more
    GetCapabilities
    Code:
    This XML file does not appear to have any style information associated with it. The document tree is shown below.
    <WMT_MS_Capabilities version="1.1.1">
    <Service>
    <Name>OGC:WMS</Name>
    <Title>map service</Title>
    <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/mapcache?"/>
    </Service>
    <Capability>
    <Request>
    <GetCapabilities>
    <Format>application/vnd.ogc.wms_xml</Format>
    <DCPType>
    <HTTP>
    <Get>
    <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/mapcache?"/>
    </Get>
    </HTTP>
    </DCPType>
    </GetCapabilities>
    <GetMap>
    <Format>image/png</Format>
    <Format>image/jpeg</Format>
    <DCPType>
    <HTTP>
    <Get>
    <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/mapcache?"/>
    </Get>
    </HTTP>
    </DCPType>
    </GetMap>
    <GetFeatureInfo>
    <Format>text/plain</Format>
    <Format>application/vnd.ogc.gml</Format>
    <DCPType>
    <HTTP>
    <Get>
    <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://localhost/mapcache?"/>
    </Get>
    </HTTP>
    </DCPType>
    </GetFeatureInfo>
    </Request>
    <Exceptions>
    <Format>text/plain</Format>
    </Exceptions>
    <VendorSpecificCapabilities>
    <TileSet>
    <SRS>EPSG:4326</SRS>
    <BoundingBox SRS="EPSG:4326" minx="-180.000000" miny="-90.000000" maxx="180.000000" maxy="90.000000"/>
    <Resolutions>
    0.70312500000000000000 0.35156250000000000000 0.17578125000000000000 0.08789062500000000000 0.04394531250000000000 0.02197265625000000000 0.01098632812500000000 0.00549316406250000000 0.00274658203125000000 0.00137329101562500000 0.00068664550781250000 0.00034332275390625000 0.00017166137695312500 0.00008583068847656250 0.00004291534423828120 0.00002145767211914060 0.00001072883605957030 0.00000536441802978516
    </Resolutions>
    <Width>256</Width>
    <Height>256</Height>
    <Format>image/png</Format>
    <Layers>bluemarbleJanuary</Layers>
    <Styles/>
    </TileSet>
    </VendorSpecificCapabilities>
    <Layer>
    <Name>rootlayer</Name>
    <Title>map service</Title>
    <SRS>EPSG:900913</SRS>
    <SRS>EPSG:4326</SRS>
    <SRS>EPSG:3857</SRS>
    <Layer cascaded="1" queryable="0">
    <Name>bluemarbleJanuary</Name>
    <LatLonBoundingBox minx="-180.000000" miny="-90.000000" maxx="180.000000" maxy="90.000000"/>
    <BoundingBox SRS="EPSG:4326" minx="-180.000000" miny="-90.000000" maxx="180.000000" maxy="90.000000"/>
    <SRS>EPSG:4326</SRS>
    </Layer>
    </Layer>
    </Capability>
    </WMT_MS_Capabilities>
    mapcache.xml
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    
    <!-- see the accompanying mapcache.xml.sample for a fully commented configuration file -->
    
    <mapcache>
    	<metadata>
    	 <title>map service</title>
    	 <abstract>Contains various cached maps</abstract>
    	</metadata>
    
    	<cache name="disk" type="disk">
    	 <base>D:/mapserver/ms4w/tmp/ms_tmp/cache</base>
    	</cache>
    
    	<source name="bluemarbleJanuary" type="wms">
    	 <getmap>
    	   <params>
    		 <FORMAT>image/png</FORMAT>
    		 <LAYERS>bluemarbleJanuary</LAYERS>
    		 <MAP>D:/mapserver/data/nasaww.map</MAP>
    	   </params>
    	 </getmap>
    	 <http>
    	   <url>http://localhost/wms?</url>
    	 </http>
    	</source>
    
    	<format name="PNGQ_FAST" type="PNG">
    	 <compression>fast</compression>
    	 <colors>256</colors>
    	</format>
    
    	<tileset name="bluemarbleJanuary">
    	 <source>bluemarbleJanuary</source>
    	 <cache>disk</cache>
    	 <grid>WGS84</grid>
    	 <format>PNGQ_FAST</format>
    	 <metatile>5 5</metatile>
    	 <metabuffer>20</metabuffer>
    	 <expires>3600</expires>
    	</tileset>
    
    	<default_format>PNGQ_FAST</default_format>
    
    	<service type="wms" enabled="true">
    	 <full_wms>assemble</full_wms>
    	 <resample_mode>bilinear</resample_mode>
    	 <format>PNGQ_FAST</format>
    	 <maxsize>4096</maxsize>
    	</service>
    	<service type="wmts" enabled="true"/>
    	<service type="tms" enabled="true"/>
    	<service type="kml" enabled="true"/>
    	<service type="gmaps" enabled="true"/>
    	<service type="ve" enabled="true"/>
    	<service type="demo" enabled="true"/>
    
    	<errors>report</errors>
    	<lock_dir>D:/mapserver/ms4w/tmp/ms_tmp</lock_dir>
    	<log_level>debug</log_level>
    
    </mapcache>
    Map File
    Code:
    MAP
    	NAME WMS_server
    	STATUS ON
    	EXTENT -180 -90 180 90
    	UNITS DD
    	CONFIG "MS_ERRORFILE" "ms_error.txt"
    	DEBUG 5
    		
    	#
    	# Start of web interface definition
    	#
    	WEB
    		METADATA
    			"wms_title"                  "WMS Demo Server"
    			"wms_onlineresource"         "http://localhost/wms?"
    			"wms_srs"		             "EPSG:4326"
    			"wms_feature_info_mime_type" "text/html"
    			"wms_abstract"               "This demonstration server showcases MapServer (www.mapserver.org) and its OGC support"
    			"wms_enable_request"         "*"
    		END # Metadata
    	END # Web
    
    	PROJECTION
    		"init=epsg:4326"
    	END # Projection
    
    	#
    	# Start of layer definitions
    	#
    	
    	##################
    	# Blue Marble January 2004
    	##################
    	LAYER
    		NAME "bluemarbleJanuary"
    		#GROUP "default"
    		TYPE RASTER
    		STATUS ON
    		
    		METADATA
    			"wms_title"             "Blue Marble Raster (January 2004)"
    			"wms_attribution_title" "NASA Blue Marble (January 2004)"
    			"wms_srs"               "EPSG:4326"
    		END # Metadata
    	  
    		TILEINDEX "raster/bluemarble/jan/bluemarble-index.shp"
    		TILEITEM "LOCATION"
    		
    		PROJECTION
    			"+init=EPSG:4326"
    		END # Projection
    	END # Layer
    	
    END # Map

  • #2
    I know this is old, but I too am having this problem. I have loaded up a server on the WMS World Wind example and it recognises all the layers there. But every single layer I click to add it gives me the " SEVERE: No geographic bounding box given in WMS Capabilities for layer #"

    Where # is the layer number i've tried to add. All layer's have the same problem. Now I have no problem loading this data in other mapping software (Global Mapper, or osgEarth, etc.). Just NasaWorld Wind.

    The layers are TMS driven.

    Any help would be greatly appreciated!

    Comment


    • #3
      Hello,

      I believe every named layer (what should be showing up in the layer list in the WMS World Wind Example) should have a Geographic Bounding Box (see WMS 1.3.0 section 7.2.4.6.6). Would you mind posting the GetCapabilities document for your server? That would help track this down.

      Thanks,

      Zach
      Zach
      World Wind Team
      https://github.com/NASAWorldWind

      Comment


      • #4
        I am not an expert in these areas, so I'm not sure I did this fully correctly. But here is what I believe is the WMS GetCapabilities document for my server. (Just change the extension from .txt to .xml)

        Regards,
        David
        Attached Files

        Comment


        • #5
          David,

          Thanks for the example GetCapabilities document. After a quick review, I'm not seeing the WMS 1.1.1 required "LatLonBoundingBox" element (see section 7.1.4.5.6). I'm not sure why the other clients you mentioned work without that particular element, but it is used by World Wind, and therefore the layers are not being displayed. If you can update your server to provide that element, along with any other specification required elements, please let us know if you find any additional issues.

          Zach
          Zach
          World Wind Team
          https://github.com/NASAWorldWind

          Comment


          • #6
            Thanks for the help Zach I will look into that element then !

            Comment

            Working...
            X