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–2025 SuperMap. All rights reserved.