public static LayerType AddToCapabilities(this DataSource dataSource, string name, Capabilities capabilities) { string projectionStr; double xMin, yMin, xMax, yMax; string tileMatrixSet = null; using (var layer = dataSource.GetLayerByIndex(0)) { string layerName = layer.GetName();//todo 调试是否乱码 using (var spatialReference = layer.GetSpatialRef()) { tileMatrixSet = spatialReference.GetAttrValue("GEOGCS", 0); var ret = spatialReference.ExportToWkt(out projectionStr); } layer.GetExtent(out xMin, out yMin, out xMax, out yMax); } int minZoom = 0; int maxZoom = 19; dataSource.GetSuitableZoom(ref minZoom, ref maxZoom); LayerType layerType = CapabilitiesHelper.AddToCapabilities(capabilities, name, projectionStr, xMin, yMin, xMax, yMax, minZoom, maxZoom); string href = capabilities.GetHref(WmtsOperationType.GetTile, WmtsRequestType.REST); URLTemplateType tileTemplate = CapabilitiesHelper.CreateTileResourceURL(href, name, tileMatrixSet); URLTemplateType featureInfoTemplate = CapabilitiesHelper.CreateFeatureInfoResourceURL(href, name, tileMatrixSet); layerType.ResourceURL = new URLTemplateType[] { tileTemplate, featureInfoTemplate }; return(layerType); }
public static LayerType AddToCapabilities(this Dataset dataset, string name, Capabilities capabilities) { string projectionStr = dataset.GetProjection(); dataset.GetExtent(out double xMin, out double yMin, out double xMax, out double yMax); int minLevel = 0; int maxLevel = 19; dataset.GetSuitableZoom(ref minLevel, ref maxLevel); LayerType layerType = CapabilitiesHelper.AddToCapabilities(capabilities, name, projectionStr, xMin, yMin, xMax, yMax, minLevel, maxLevel); string href = capabilities.GetHref(WmtsOperationType.GetTile, WmtsRequestType.REST); string tileMatrixSet = null; using (var spatialReference = dataset.GetSpatialReference()) { tileMatrixSet = spatialReference.GetAttrValue("GEOGCS", 0); } URLTemplateType tileTemplate = CapabilitiesHelper.CreateTileResourceURL(href, name, tileMatrixSet); layerType.ResourceURL = new URLTemplateType[] { tileTemplate }; return(layerType); }