wmsfind
Search local database for Web map servers and layers
Description
searches the fields of the installed WMS Database for partial matches of
layers
= wmsfind(querystr
)querystr
, which is a string, string array, character vector, or cell
array of character vectors. By default, wmsfind
searches the
Layer
or LayerName
properties but you can include
other fields in the search using the SearchFields
parameter.
wmsfind
returns layers
, an array of WMSLayer
objects containing one object for each layer whose name or title
partially matches querystr
. WMS servers produce maps of spatially
referenced raster data, such as temperature or elevation, that are known as
layers.
modifies the search of the WMS Database based on the values of the parameters. You can
abbreviate parameter names and case does not matter.layers
= wmsfind(querystr
,Name,Value
)
Examples
Find Temperature Data in the WMS Database
Search the WMS Database for temperature data.
layers = wmsfind('temperature');
The wmsfind
function searches both the LayerName
and LayerTitle
fields of the WMS Database for partial matches. The function returns an array of WMSLayer
objects, which contains one object for each layer whose name or title partially matches 'temperature'
.
Refine the search to include temperature data from NOAA. Display information about the first layer.
layersNOAA = refine(layers,'noaa');
layersNOAA(1)
ans = WMSLayer Properties: Index: 1 ServerTitle: 'WMS for SST and SST Anomaly, NOAA Global Coral Bleaching Monitoring, 5km, V.3.1, Monthly, 1985-Present' ServerURL: 'https://coastwatch.pfeg.noaa.gov/erddap/wms/NOAA_DHW_monthly/request?' LayerTitle: 'SST and SST Anomaly, NOAA Global Coral Bleaching Monitoring, 5km, V.3.1, Monthly, 1985-Present - sea_surface_temperature' LayerName: 'NOAA_DHW_monthly:sea_surface_temperature' Latlim: [-89.9750 89.9750] Lonlim: [-179.9750 179.9750] Methods
A WMSLayer
object contains three properties that do not appear in the WMS Database: Abstract
, CoordRefSysCodes
, and Details
. Populate these properties by using the wmsupdate
function.
updatedLayers = wmsupdate(layersNOAA(1)); updatedLayers(1)
ans = WMSLayer Properties: Index: 1 ServerTitle: 'WMS for SST and SST Anomaly, NOAA Global Coral Bleaching Monitoring, 5km, V.3.1, Monthly, 1985-Present' ServerURL: 'https://coastwatch.pfeg.noaa.gov/erddap/wms/NOAA_DHW_monthly/request?' LayerTitle: 'SST and SST Anomaly, NOAA Global Coral Bleaching Monitoring, 5km, V.3.1, Monthly, 1985-Present - sea_surface_temperature' LayerName: 'NOAA_DHW_monthly:sea_surface_temperature' Latlim: [-89.9750 89.9750] Lonlim: [-179.9750 179.9750] Abstract: '' CoordRefSysCodes: {'EPSG:4326'} Details: [1x1 struct] Methods
Your results might be different because the WMS Database changes each release.
Search the WMS Database for Layers
Search the Entire WMS Database
Search the WMS database for layers that contain the word "temperature". The wmsfind
function returns an array of WMSLayer
objects.
layers = wmsfind('temperature');
Find layers that contain global temperature data. The query includes the asterisk wildcard character '*'.
layers = wmsfind('global*temperature');
Search Specific Fields in the WMS Database
Search the LayerTitle
field for all layers that contain an exact match for the term 'Rivers'
. You must use the MatchType
parameter to specify an exact match.
layers = wmsfind('Rivers','MatchType','exact', ... 'IgnoreCase',false,'SearchFields','layertitle');
Search the LayerName
field for all layers that contain a partial match for 'elevation'. By default, wmsfind
searches for partial matches.
layers = wmsfind('elevation','SearchFields','layername');
Search the LayerName
field for all unique servers that contain 'BlueMarbleNG'
.
layers = wmsfind('BlueMarbleNG','SearchFields','layername', ... 'MatchType','exact'); urls = servers(layers);
Limit Your Search to Specific Geographic Regions
Find layers that contain elevation data for Colorado. Use the Latlim
and Lonlim
parameters to specify the location.
latlim = [35 43]; lonlim = [-111 -101]; layers = wmsfind('elevation','Latlim',latlim,'Lonlim',lonlim);
Find all layers that contain temperature data for a point in Perth, Australia. Use the Latlim
and Lonlim
parameters to specify the location.
lat = -31.9452; lon = 115.8323; layers = wmsfind('temperature','Latlim',lat,'Lonlim',lon);
Find all the unique URLs of all government servers.
layers = wmsfind('*.gov*','SearchFields','serverurl'); urls = servers(layers);
Search Multiple Fields at the Same Time and Refine Your Search
Search both the LayerTitle
and the LayerName
fields for all the layers that contain the word "temperature".
fields = [string('layertitle') string('layername')]; temperature = wmsfind('temperature','SearchFields',fields);
Refine the results of your temperature search to find only those layers that deal with sea surface temperatures. Use the WMSLayer
object refine
method.
sst = refine(temperature,'sea surface');
Refine your sea surface temperature search further to find only those layers that deal with global sea surface temperatures.
global_sst = refine(sst,'global');
Search the Entire WMS Database and Progressively Refine Your Search
Note that finding all the layers from the WMS database may take several seconds to execute and require a substantial amount of memory. The database contains more than 100,000 layers.
Find all the layers in the WMS database and sort them into a set that comprises only the unique layer titles.
layers = wmsfind('*');
layerTitles = sort(unique({layers.LayerTitle}))';
Refine your original search, layers
, to include only those layers with global coverage. Use the WMSLayer
object refineLimits
method.
global_layers = refineLimits(layers, ... 'Latlim',[-90 90],'Lonlim',[-180 180]);
Refine the results of your global layers search to contain only layers with global extent that include the word "topography". Use the WMSLayer
object refine
method.
global_topography_layers = refine(global_layers,'topography');
Refine your original search, layers
, to contain only layers that have some combination of the terms "oil" and "gas" in the LayerTitle
field.
oil_gas_layers = refine(layers,'oil*gas','SearchFields','layertitle');
Search Online Version of WMS Database
Search the WMS database for layers containing the word "elevation"
. Search the online version of the database by specifying the Version
argument as "online"
. If you do not specify the version, then wmsfind
reads from the installed database.
elevation = wmsfind("elevation",Version="online");
Input Arguments
querystr
— Characters to search for in WMS Database fields
string scalar | string array | character vector | cell array of character vectors
Characters to search for in WMS Database fields, specified as a string scalar,
string array, character vector, or cell array of character vectors.
querystr
can contain the asterisk wildcard character (*).
Data Types: char
| string
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: [A,R] =
wmsfind('elevation','SearchFields','layername');
IgnoreCase
— Ignore case when comparing field values to querystr
true
(default) | false
Ignore case when comparing field values to querystr
, specified
as the logical value true
or false
.
Data Types: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
Latlim
— Latitudinal limits of the search
two-element numeric vector | numeric scalar
Latitudinal limits of the search, specified as a two-element vector of the form
[southern_limit northern_limit]
or a scalar value representing
the latitude of a single point. Values are in the range [-90, 90]
.
All angles are in units of degrees. If provided and not empty, a given layer appears
in the results only if its limits fully contain the specified
'Latlim'
limits. Partial overlap does not result in a
match.
Data Types: double
| int16
| int32
| int64
| int8
| single
| uint8
| uint16
| uint32
| uint64
Lonlim
— Longitudinal limits of the search
two-element numeric vector | numeric scalar
Longitudinal limits of the search, specified as a two-element vector of the form
[western_limit eastern_limit]
or scalar value representing the
longitude of a single point. All angles are in units of degrees. If provided and not
empty, a given layer appears in the results only if its limits fully contain the
specified 'Lonlim'
limits. Partial overlap does not result in a
match.
Data Types: double
| int16
| int32
| int64
| int8
| single
| uint8
| uint16
| uint32
| uint64
MatchType
— Strictness of match
'partial'
(default) | 'exact'
Strictness of match, specified as the character vector or string
'partial'
or 'exact'
. If
'MatchType'
is 'exact'
and
querystr
is '*'
, a match occurs when the
search field matches the character '*'
.
Data Types: char
| string
SearchFields
— Fields to search in the WMS Database
'layer'
(default) | 'server'
| 'layertitle'
| 'layername'
| 'servertitle'
| 'serverurl'
| 'any'
Fields to search in the WMS Database, specified as a character vector, cell array
of character vectors, string, or array of strings. The function searches the values of
the specified fields in the WMS Database for a partial or exact match with
querystr
. The following table lists valid values.
Field | Behavior |
---|---|
'layername' | Search the LayerName field in the WMS Database. The
layer name is an abbreviated form of the LayerTitle field
and is the keyword the server uses to retrieve the layer. |
'layertitle' | Search the LayerTitle field in the WMS Database. The
layer title includes descriptive information about a layer and facilitates
understanding the meaning of the raster values of the layer. |
'layer' | Search both the LayerTitle and the
LayerName fields. |
'servertitle' | Search the ServerTitle field in the WMS Database. A
server title includes descriptive information about the server. |
'serverurl' | Search the ServerURL field in the WMS Database. The
server URL and layer information facilitate the reading of raster layers by
the function wmsread . |
'server' | Search both the ServerTitle and the
ServerURL fields. |
'any' | Search all fields. |
Data Types: char
| cell
| string
Version
— Version of the WMS Database to read
'installed'
(default) | 'online'
| 'custom'
Version of the WMS Database to read, specified as one of the following values.
Value | Description |
---|---|
'installed' | Read from the installed database. This is the default. The information found in the installed database is static and is not automatically updated—it was validated at the time of the software release. |
'online' | Read from the version of the database hosted on the MathWorks website. This version of the database contains more up-to-date information about servers because it is updated regularly. Note, however, that searching this online database requires a connection to the Internet. If your network uses a firewall or another method of protection that restricts Internet access, you can provide information about your proxy server to MATLAB®. For more information, see Proxy Server Authentication. |
'custom' | Read from the wmsdatabase.mat file on the MATLAB path, such as from a previous release. |
Data Types: char
| string
Output Arguments
layers
— Layers that match search criteria
WMSLayer
objects
Layers that match search criteria, returned as an array of WMSLayer
objects, one for each layer found.
More About
WMS Database
Mapping Toolbox™ contains a database of over 1000 stored WMS servers and over 100,000 layers. MathWorks® creates this database, called the WMS Database, by conducting a series of Internet searches and qualifying the search results.
Note
MathWorks does not guarantee the stability or accuracy of WMS data. The servers listed in the WMS Database are located on the Internet and are independent from MathWorks. Occasionally, you might receive error messages from servers experiencing difficulties. Servers might go down or become unavailable.
The wmsfind
function is the only function that accesses the stored
WMS Database. By default, the wmsfind
function searches the WMS
Database that is installed with the product. You can search a version of the WMS Database
hosted on the MathWorks website or a WMS Database from a previous release by using the
Version
name-value argument. The information in the WMS Database
installed with the product is static. The web-hosted database is updated regularly.
The WMS Database contains these fields:
Field Name | Data Type | Field Content |
---|---|---|
ServerTitle | Character vector | Title of the WMS server, descriptive information about the server |
ServerURL | Character vector | URL of the WMS server |
LayerTitle | Character vector | Title of the layer, descriptive information about the layer |
LayerName | Character vector | Name of the layer, keyword the server uses to retrieve the layer |
Latlim | Two-element vector | Southern and northern latitude limits of the layer |
Lonlim | Two-element vector | Western and eastern longitude limits of the layer |
The LayerTitle
and LayerName
fields sometimes have
the same values. The LayerName
field indicates a code used by the
servers, such as '29:2'
, while the LayerTitle
field
provides more descriptive information. For example, 'Elevation and Rivers with
Backdrop'
might be an entry in the LayerTitle
field.
Tips
The
WMSLayer
objects returned bywmsfind
contain properties with the same names as the field names of the WMS Database, along with three additional properties:'Abstract'
,'CoordRefSysCodes'
, and'Details'
. The WMS Database does not contain information about these properties. To get this information about a server, you must use thewmsupdate
function which updates these properties of theWMSLayer
object by downloading information from the server. To view these properties, use theWMSLayer.disp
method, specifying the'Properties'
parameter value'all'
. If you want to know more about a WMS server, use thewmsinfo
function with the specific server URL.
Version History
Introduced in R2009b
See Also
wmsupdate
| wmsinfo
| wmsread
| WebMapServer
| WMSLayer
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)