com.supermap.data.processing

类 MapCacheFile

  • java.lang.Object
    • com.supermap.data.InternalHandle
      • com.supermap.data.InternalHandleDisposable
        • com.supermap.data.processing.MapCacheFile
  • 所有已实现的接口:
    IDisposable


    public class MapCacheFile
    extends com.supermap.data.InternalHandleDisposable
    地图缓存文件类,用来对地图缓存进行操作。
    • 构造器详细资料

      • MapCacheFile

        public MapCacheFile()
        构造一个新的 MapCacheFile 对象。
    • 方法详细资料

      • dispose

        public void dispose()
        释放 MapCacheFile 对象占用的资源。
      • getVersion

        public MapCacheVersion getVersion()
        返回缓存版本信息。
        返回:
        缓存版本信息。
      • getScales

        public double[] getScales()
        返回缓存的比例尺数组。
        返回:
        缓存的比例尺数组。
      • open

        public boolean open(String fileName)
        打开缓存文件。
        参数:
        fileName - 打开的缓存文件的全路径。
        返回:
        一个布尔值,打开成功返回 true;否则,返回 false。
      • open

        public boolean open(String fileName,
                            String password)
        打开缓存文件。
        参数:
        fileName - 打开的缓存文件的全路径。
        password - 打开缓存文件的缓存密码。
        返回:
        一个布尔值,打开成功返回 true;否则,返回 false。
      • checkTileBoundsValid

        public boolean checkTileBoundsValid(Rectangle2D tileBounds,
                                            double scale)
        判断指定的范围是否符合指定比例尺下瓦片的切片规则。

        指定范围不符合切片规则包括:该范围没有覆盖一张地图缓存瓦片;该范围与多个地图缓存瓦片的范围相交。

        参数:
        tileBounds - 指定的范围。
        scale - 指定的比例尺。
        返回:
        一个布尔值,用来指示的范围是否符合指定比例尺下瓦片的切片规则,true,表示符合;false,表示不符合。
      • getTiles

        public Tile[] getTiles(Rectangle2D tileBounds,
                               double scale)
        返回指定比例尺下指定范围覆盖到的瓦片数组。

        只支持返回5.0版本缓存指定比例尺指定范围覆盖到的瓦片数组。

        参数:
        tileBounds - 指定的范围。
        scale - 指定的比例尺。
        返回:
        返回指定比例尺下指定范围覆盖到的瓦片数组。
      • clear

        public boolean clear(Rectangle2D tileBounds,
                             double[] scales)
        清除指定比例尺下指定范围覆盖到的所有瓦片。

        只支持5.0版本的缓存清除。

        参数:
        tileBounds - 指定的范围。
        scales - 指定的多个比例尺。
        返回:
        一个布尔值,true,表示清除成功;false,表示失败。
      • saveAsSCI3D

        public boolean saveAsSCI3D()
      • merge

        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 - 要合并的缓存文件的缓存密码。
        返回:
        一个布尔值,用来指示缓存合并是否成功,true,表示合并成功;false,表示合并不成功。
        示范代码:
        以下代码示范了如何运用该接口实现两份带密码的紧凑缓存之间的合并。

        假设下面函数操作的地图为安装目录\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");
                 }
         
      • merge

        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 - 要合并的缓存文件的路径。
        返回:
        一个布尔值,用来指示缓存合并是否成功,true,表示合并成功;false,表示合并不成功。
        示范代码:
        以下代码示范了如何运用该接口实现两份原始缓存之间的合并。

        假设下面函数操作的地图为安装目录\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");
                 }
         
      • getValidRegion

        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);
                }
         
      • convert

        public boolean convert(StorageType type,
                               String dest,
                               String password)
        不同存储类型的缓存之间的转换。

        只支持5.0版本的缓存转换。

        参数:
        type - 目标缓存的存储方式。
        dest - 转换后的缓存存储路径。
        password - 转换后的缓存文件的缓存密码(不需要密码时,可以将该字符串置为空)。
        返回:
        一个布尔值,用来指示原始缓存与紧凑缓存之间的转换是否成功,true,表示转换成功;false,表示转换不成功。
        示范代码:
        以下代码示范了如何运用该接口实现原始缓存与紧凑缓存之间的转换。

        假设下面函数操作的地图为安装目录\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/中国地形图", "");
               } 
         
      • hitTest

        public boolean hitTest(Point2D point,
                               double scale)
        返回指定比例尺指定点是否存在瓦片。

        只支持返回5.0版本的缓存指定比例尺指定点是否存在瓦片。

        参数:
        point - 指定的点。
        scale - 指定的比例尺。
        返回:
        一个布尔值,用来指示指定比例尺指定点是否存在瓦片,true,表示存在;false,表示不存在。
      • getCacheName

        public String getCacheName()
        返回缓存名称。
        返回:
        缓存名称。
      • getPrjCoordSys

        public PrjCoordSys getPrjCoordSys()
        返回投影方式。
        返回:
        投影方式。
      • getBounds

        public Rectangle2D getBounds()
        返回缓存的Bounds。
        返回:
        缓存的Bounds。
      • getIndexBounds

        public Rectangle2D getIndexBounds()
        返回缓存的IndexBounds。
        返回:
        缓存的IndexBounds。
      • getClipRegion

        public GeoRegion getClipRegion()
        返回裁剪区域,支持不规则矩形.
        返回:
        裁剪区域。
      • getTileFormat

        public TileFormat getTileFormat()
        返回地图缓存图片的类型。
        返回:
        地图缓存图片的类型。
      • getTileSize

        public TileSize getTileSize()
        返回缓存瓦片大小。
        返回:
        缓存瓦片大小。
      • getTilingMode

        public MapTilingMode getTilingMode()
        返回生成缓存的剖分方式。
        返回:
        生成缓存的剖分方式 。
      • getStorageType

        public StorageType getStorageType()
        返回地图缓存图片存储的方式。
        返回:
        地图缓存图片存储的方式 。
      • isTransparent

        public boolean isTransparent()
        返回缓存图片是否透明。
        返回:
        缓存图片是否透明。
      • isFillMargin

        public boolean isFillMargin()
        返回是否完全填充缓存图片。
        返回:
        一个布尔值,用来指示是否完全填充缓存图片,true,表示完全填充缓存图片;false,表示不完全填充缓存图片 。
      • getDPI

        public double getDPI()
        返回生成缓存的DPI,代表每英寸有多少个像素,值域为(60,180)。
        返回:
        生成缓存的DPI。
      • getOutputScaleCaptions

        public HashMap<Double,String> getOutputScaleCaptions()
        返回地图缓存比例尺的别名。
        返回:
        地图缓存比例尺的别名。
      • getDefaultColor

        public Color getDefaultColor()
        返回缓存的默认色。

        只支持返回5.0版本的缓存的默认色。

        返回:
        缓存的默认色,缓存加载时找不到图片的部分以默认色显示。
      • reload

        public boolean reload()
        重新读取缓存的配置文件。
        返回:
        一个布尔值,用来指示重新读取缓存的配置文件是否成功,true,表示读取成功;false,表示读取不成功。
      • clear

        public boolean clear(double scale,
                             Rectangle2D tileBounds)
        清除指定比例尺下指定范围覆盖到的所有瓦片。

        只支持5.0版本的缓存清除。

        参数:
        scale - 指定的比例尺。
        tileBounds - 指定的Bounds。
        返回:
        一个布尔值,用来指示是否清除指定比例尺下指定范围覆盖到的所有瓦片,true,表示清除成功;false,表示清除不成功。
        示范代码:
        以下代码示范了如何运用该接口清除指定比例尺下指定范围覆盖到的所有瓦片。
         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);
                }
         
      • extract

        public boolean extract(double[] scales,
                               GeoRegion region,
                               StorageType type,
                               String path)
        将指定比例尺指定区域内的缓存瓦片提取为单独缓存。
        参数:
        scales - 指定的多个比例尺。
        region - 指定的区域。
        type - 提取后缓存的存储类型。
        path - 提取后缓存的存储路径。
        返回:
        一个布尔值,用来指示提取是否成功,true 表示成功;false 表示失败。
      • extract

        public boolean extract(GeoRegion region,
                               String path)
        将指定区域内的缓存瓦片提取为单独缓存。
        参数:
        region - 指定的区域。
        path - 提取后缓存的存储路径。
        返回:
        一个布尔值,用来指示提取是否成功,true 表示成功;false 表示失败。
      • clear

        public boolean clear(double[] scales,
                             GeoRegion region)
        清除指定比例尺下指定区域内的所有瓦片。
        参数:
        scales - 指定的多个比例尺。
        region - 指定的区域。
        返回:
        一个布尔值,用来指示是否成功清除指定比例尺指定区域内的所有瓦片,true,表示清除成功;false,表示清除失败。
      • clear

        public boolean clear(GeoRegion region)
        清除指定区域内的所有瓦片。
        参数:
        region - 指定的区域。
        返回:
        一个布尔值,用来指示是否成功清除指定区域内的所有瓦片,true,表示清除成功;false,表示清除失败。
      • getTile

        public Tile getTile(String caption,
                            int row,
                            int col)
        根据比例尺对应标题和行列号获取瓦片数据。

        输入参数data中需要设置指定获取瓦片的行列号和caption值。

        参数:
        caption - 在缓存配置中指定比例尺对应的标题。
        row - 当前比例尺下对应的行号。
        col - 当前比例尺下对应的列号。
        返回:
        返回瓦片对应类型对象。
        抛出:
        IllegalStateException - 当前对象已被释放。
        IllegalArgumentException - caption参数为null或empty。
        从以下版本开始:
        11.2.0
      • setTile

        public int setTile(Tile data)
        根据比例尺对应标题和行列号设置瓦片数据。

        输入参数data中需要设置指定保存瓦片的行列号和caption值。

        参数:
        data - 需要保存的瓦片对应类型对象。
        返回:
        返回设置状态码,0为成功,非0为错误码。
        抛出:
        IllegalStateException - 当前对象已被释放。
        IllegalArgumentException - data参数为null。
        从以下版本开始:
        11.2.0
      • setIsDisposable

        public static void setIsDisposable(com.supermap.data.InternalHandleDisposable obj,
                                           boolean disposable)

Copyright © 2021–2024 SuperMap. All rights reserved.