public class MapCacheFile
extends com.supermap.data.InternalHandleDisposable
构造器和说明 |
---|
MapCacheFile()
构造一个新的 MapCacheFile 对象。
|
限定符和类型 | 方法和说明 |
---|---|
boolean |
checkTileBoundsValid(Rectangle2D tileBounds,
double scale)
判断指定的范围是否符合指定比例尺下瓦片的切片规则。
|
boolean |
clear(double[] scales,
GeoRegion region)
清除指定比例尺下指定区域内的所有瓦片。
|
boolean |
clear(double scale,
Rectangle2D tileBounds)
清除指定比例尺下指定范围覆盖到的所有瓦片。
|
boolean |
clear(GeoRegion region)
清除指定区域内的所有瓦片。
|
boolean |
clear(Rectangle2D tileBounds,
double[] scales)
清除指定比例尺下指定范围覆盖到的所有瓦片。
|
boolean |
convert(StorageType type,
String dest,
String password)
不同存储类型的缓存之间的转换。
|
void |
dispose()
释放 MapCacheFile 对象占用的资源。
|
boolean |
extract(double[] scales,
GeoRegion region,
StorageType type,
String path)
将指定比例尺指定区域内的缓存瓦片提取为单独缓存。
|
boolean |
extract(GeoRegion region,
String path)
将指定区域内的缓存瓦片提取为单独缓存。
|
Rectangle2D |
getBounds()
返回缓存的Bounds。
|
String |
getCacheName()
返回缓存名称。
|
GeoRegion |
getClipRegion()
返回裁剪区域,支持不规则矩形.
|
Color |
getDefaultColor()
返回缓存的默认色。
|
double |
getDPI()
返回生成缓存的DPI,代表每英寸有多少个像素,值域为(60,180)。
|
Rectangle2D |
getIndexBounds()
返回缓存的IndexBounds。
|
HashMap<Double,String> |
getOutputScaleCaptions()
返回地图缓存比例尺的别名。
|
PrjCoordSys |
getPrjCoordSys()
返回投影方式。
|
double[] |
getScales()
返回缓存的比例尺数组。
|
StorageType |
getStorageType()
返回地图缓存图片存储的方式。
|
Tile |
getTile(String caption,
int row,
int col)
根据比例尺对应标题和行列号获取瓦片数据。
|
TileFormat |
getTileFormat()
返回地图缓存图片的类型。
|
Tile[] |
getTiles(Rectangle2D tileBounds,
double scale)
返回指定比例尺下指定范围覆盖到的瓦片数组。
|
Tile[] |
getTiles(Rectangle2D tileBounds,
double scale,
String pwd) |
Tile[] |
getTiles(Rectangle2D tileBounds,
double scale,
String pwd,
String hashCode) |
TileSize |
getTileSize()
返回缓存瓦片大小。
|
MapTilingMode |
getTilingMode()
返回生成缓存的剖分方式。
|
GeoRegion |
getValidRegion(Rectangle2D bounds,
double scale)
返回指定比例尺指定区域所有有瓦片的区域。
|
MapCacheVersion |
getVersion()
返回缓存版本信息。
|
boolean |
hitTest(Point2D point,
double scale)
返回指定比例尺指定点是否存在瓦片。
|
boolean |
isFillMargin()
返回是否完全填充缓存图片。
|
boolean |
isTransparent()
返回缓存图片是否透明。
|
boolean |
merge(String path)
缓存合并。
|
boolean |
merge(String path,
String password)
缓存合并。
|
boolean |
open(String fileName)
打开缓存文件。
|
boolean |
open(String fileName,
String password)
打开缓存文件。
|
boolean |
reload()
重新读取缓存的配置文件。
|
boolean |
saveAsSCI3D() |
static void |
setIsDisposable(com.supermap.data.InternalHandleDisposable obj,
boolean disposable) |
int |
setTile(Tile data)
根据比例尺对应标题和行列号设置瓦片数据。
|
public void dispose()
public MapCacheVersion getVersion()
public double[] getScales()
public boolean open(String fileName)
fileName
- 打开的缓存文件的全路径。public boolean open(String fileName, String password)
fileName
- 打开的缓存文件的全路径。password
- 打开缓存文件的缓存密码。public boolean checkTileBoundsValid(Rectangle2D tileBounds, double scale)
指定范围不符合切片规则包括:该范围没有覆盖一张地图缓存瓦片;该范围与多个地图缓存瓦片的范围相交。
tileBounds
- 指定的范围。scale
- 指定的比例尺。public Tile[] getTiles(Rectangle2D tileBounds, double scale, String pwd)
public Tile[] getTiles(Rectangle2D tileBounds, double scale, String pwd, String hashCode)
public Tile[] getTiles(Rectangle2D tileBounds, double scale)
只支持返回5.0版本缓存指定比例尺指定范围覆盖到的瓦片数组。
tileBounds
- 指定的范围。scale
- 指定的比例尺。public boolean clear(Rectangle2D tileBounds, double[] scales)
只支持5.0版本的缓存清除。
tileBounds
- 指定的范围。scales
- 指定的多个比例尺。public boolean saveAsSCI3D()
public boolean merge(String path, String password)
该接口适用于带密码的5.0版本紧凑缓存之间的合并。
缓存合并是将满足条件的外部缓存文件合并到当前已打开的缓存文件(以下简称当前缓存)中,合并时以外部缓存为主。外部缓存中有但当前缓存中没有的内容,合并到当前缓存,外部缓存与当前缓存中相同的内容,以外部缓存为主,替换当前缓存中的相应内容。
注意:要进行缓存合并的两份缓存,要保证缓存的IndexBounds、投影信息、DPI、剖分方式、瓦片大小、HashCode相一致,否则不予合并;相同存储方式与不同存储方式的缓存之间均可以进行合并。
这里的缓存合并,是指缓存所有信息的合并。如下图所示:图1的文件夹中已经存在比例尺为1.0/10000000,bounds为(-637913.8206236893,877265.2392774278,1575790.5843828395,2918893.24833147)的缓存1,图2的文件夹中已经存在比例尺为1.0/20000000、1.0/30000000,bounds为地图Bounds的缓存2,通过缓存合并功能成功的将图2中的缓存文件合并到图1的缓存文件后,缓存合并结果如图3所示。
path
- 要合并的缓存文件的路径。password
- 要合并的缓存文件的缓存密码。假设下面函数操作的地图为安装目录\SampleCode\SampleData\China\下的China400.smwu工作空间中的地图中国地形图,并且已经用该数据生成了比例尺为1.0/1000000,bounds为(-637913.8206236893,877265.2392774278,1575790.5843828395,2918893.24833147)的紧凑缓存1和比例尺为1.0/1000000,bounds为地图Bounds的紧凑缓存2。以下代码示范了如何运用该接口实现将缓存2合并到缓存1。
private static void builderMapCacheMerge() { MapCacheFile mapCacheFile = new MapCacheFile(); //打开待合并的缓存文件 mapCacheFile.open("../mapcache1/中国地形图/中国地形图.sci","supermap"); //缓存合并 mapCacheFile.merge("../mapcache2/中国地形图/中国地形图.sci","password"); }
public boolean merge(String path)
该接口适用于5.0版本原始缓存、无密码的紧凑缓存的缓存合并。
缓存合并是将满足条件的外部缓存文件合并到当前已打开的缓存文件(以下简称当前缓存)中,合并时以外部缓存为主。外部缓存中有但当前缓存中没有的内容,合并到当前缓存,外部缓存与当前缓存中相同的内容,以外部缓存为主,替换当前缓存中的相应内容。
注意:要进行缓存合并的两份缓存,要保证缓存的IndexBounds、投影信息、DPI、剖分方式、瓦片大小、HashCode相一致,否则不予合并;相同存储方式与不同存储方式的缓存之间均可以进行合并。
这里的缓存合并,是指缓存所有信息的合并。如下图所示:图1的文件夹中已经存在比例尺为1.0/10000000,bounds为(-637913.8206236893,877265.2392774278,1575790.5843828395,2918893.24833147)的缓存1,图2的文件夹中已经存在比例尺为1.0/20000000、1.0/30000000,bounds为地图Bounds的缓存2,通过缓存合并功能成功的将图2中的缓存文件合并到图1的缓存文件后,缓存合并结果如图3所示。
path
- 要合并的缓存文件的路径。假设下面函数操作的地图为安装目录\SampleCode\SampleData\China\下的China400.smwu工作空间中的地图中国地形图,并且已经用该数据生成了比例尺为1.0/1000000,bounds为(-637913.8206236893,877265.2392774278,1575790.5843828395,2918893.24833147)的缓存1和比例尺为1.0/1000000,bounds为地图Bounds的缓存2。以下代码示范了如何运用该接口实现将缓存2合并到缓存1。
private static void builderMapCacheMerge() { MapCacheFile mapCacheFile = new MapCacheFile(); //打开待合并的缓存文件 mapCacheFile.open("../mapcache1/中国地形图/中国地形图.sci"); //缓存合并 mapCacheFile.merge("../mapcache2/中国地形图/中国地形图.sci"); }
public GeoRegion getValidRegion(Rectangle2D bounds, double scale)
只支持返回5.0版本的缓存指定比例尺指定区域所有有瓦片的区域。
bounds
- 指定的区域。scale
- 指定的比例尺。private static void builderMapCacheValidRegion() { MapCacheFile mapCacheFile = new MapCacheFile(); //打开缓存文件 mapCacheFile.open("../result3/中国地形图/中国地形图.sci","supermap"); //指定区域 Rectangle2D rc = new Rectangle2D(-637913.8206236893,877265.2392774278,1575790.5843828395,2918893.24833147); //指定比例尺 double scale = 1.0/10000000; //返回指定比例尺指定区域所有有瓦片的区域 mapCacheFile.getValidRegion(rc, scale); }
public boolean convert(StorageType type, String dest, String password)
只支持5.0版本的缓存转换。
type
- 目标缓存的存储方式。dest
- 转换后的缓存存储路径。password
- 转换后的缓存文件的缓存密码(不需要密码时,可以将该字符串置为空)。假设下面函数操作的地图为安装目录\SampleCode\SampleData\China\下的China400.smwu工作空间中的地图中国地形图,并且已经用该数据生成了比例尺为1.0/1000000的紧凑缓存。以下代码示范了如何运用该接口实现将该缓存文件转换为原始缓存。
private static void builderMapCacheConvert() { MapCacheFile mapCacheFile = new MapCacheFile(); //打开待转换的缓存文件 mapCacheFile.open("../result1/中国地形图/中国地形图.sci","supermap"); //缓存转换,将StorageType为Compact的缓存文件转换为StorageType为Original的缓存文件,并存储在路径"../result2/中国地形图"下 mapCacheFile.convert(StorageType.Original, "../result2/中国地形图", ""); }
public boolean hitTest(Point2D point, double scale)
只支持返回5.0版本的缓存指定比例尺指定点是否存在瓦片。
point
- 指定的点。scale
- 指定的比例尺。public String getCacheName()
public PrjCoordSys getPrjCoordSys()
public Rectangle2D getBounds()
public Rectangle2D getIndexBounds()
public GeoRegion getClipRegion()
public TileFormat getTileFormat()
public TileSize getTileSize()
public MapTilingMode getTilingMode()
public StorageType getStorageType()
public boolean isTransparent()
public boolean isFillMargin()
public double getDPI()
public HashMap<Double,String> getOutputScaleCaptions()
public Color getDefaultColor()
只支持返回5.0版本的缓存的默认色。
public boolean reload()
public boolean clear(double scale, Rectangle2D tileBounds)
只支持5.0版本的缓存清除。
scale
- 指定的比例尺。tileBounds
- 指定的Bounds。private static void builderMapCacheclear() { MapCacheFile mapCacheFile = new MapCacheFile(); //打开缓存文件 mapCacheFile.open("../result/中国地形图/中国地形图.sci"); //指定区域 Rectangle2D rc = new Rectangle2D(-637913.8206236893,877265.2392774278,1575790.5843828395,2918893.24833147); //指定比例尺 double scale = 1.0/10000000; //清除指定比例尺下指定范围覆盖到的所有瓦片 mapCacheFile.clear(scale,rc); }
public boolean extract(double[] scales, GeoRegion region, StorageType type, String path)
scales
- 指定的多个比例尺。region
- 指定的区域。type
- 提取后缓存的存储类型。path
- 提取后缓存的存储路径。public boolean extract(GeoRegion region, String path)
region
- 指定的区域。path
- 提取后缓存的存储路径。public boolean clear(double[] scales, GeoRegion region)
scales
- 指定的多个比例尺。region
- 指定的区域。public boolean clear(GeoRegion region)
region
- 指定的区域。public Tile getTile(String caption, int row, int col)
输入参数data中需要设置指定获取瓦片的行列号和caption值。
caption
- 在缓存配置中指定比例尺对应的标题。row
- 当前比例尺下对应的行号。col
- 当前比例尺下对应的列号。IllegalStateException
- 当前对象已被释放。IllegalArgumentException
- caption参数为null或empty。public int setTile(Tile data)
输入参数data中需要设置指定保存瓦片的行列号和caption值。
data
- 需要保存的瓦片对应类型对象。IllegalStateException
- 当前对象已被释放。IllegalArgumentException
- data参数为null。public static void setIsDisposable(com.supermap.data.InternalHandleDisposable obj, boolean disposable)
Copyright © 2021–2024 SuperMap. All rights reserved.