`
刘燕宝宝鱼
  • 浏览: 26631 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

iOS 读取arcgis bundle,bundlx文件算法。

 
阅读更多

       前段时间做了arcgis bundle压缩地图数据的读取,方法如下,使用object C 

+ (NSData *)getCompressedTile:(NSString *)filepath
                                   x:(NSString *)x
                                   y:(NSString *)y
                                   z:(NSString *)z {
    filepath = [NSString stringWithFormat:@"%@%@", filepath, @"Layers/_alllayers"];
    NSString *bundlepath=filepath;
    bundlepath=[filepath stringByAppendingString:bundlepath];
    NSString *lpadding = @"00";
    NSString *lz=[NSString stringWithFormat:@"%@%@", lpadding, z];
    NSString *l = [NSString stringWithFormat:@"L%@",[lz substringFromIndex:[lz length] - 2]];
    int row = [y intValue];
    int col = [x intValue];
    int rGroup = 128 * (row / 128);
    NSString *r = [[NSString alloc] initWithFormat:@"%1x",rGroup];
    while ([r hasPrefix:@"0"]) {
        r = [r substringFromIndex:1];
    }
    int rLength = [r length];
    if (rLength < 4) {
        r = [NSString stringWithFormat:@"0000%@", r];
        
        r = [r substringFromIndex:[r length] - 4];
    }
    r = [NSString stringWithFormat:@"R%@", r];
    int cGroup = 128 * (col / 128);
    NSString *c =  [[NSString alloc] initWithFormat:@"%1x",cGroup];
    while ([c hasPrefix:@"0"]) {
        c =[c substringFromIndex:1];
    }
    int cLength = [c length];
    if (cLength < 4) {
        c = [NSString stringWithFormat:@"0000%@", c];
        c = [c substringFromIndex:[c length] - 4];
    }
    c = [NSString stringWithFormat:@"C%@", c];//@"R0a00" @"C3480"
    
    NSString *bundleBase = [NSString stringWithFormat:@"%@/%@/%@%@", filepath , l,r ,c];
    NSString *bundlxFileName = [NSString stringWithFormat:@"%@.bundlx", bundleBase];
    NSString *bundleFileName = [NSString stringWithFormat:@"%@.bundle", bundleBase];
    NSFileManager *filemanager=[NSFileManager defaultManager];
    //NSLog(@"bundle%@,bundlx%@,bundlx %@,%@,%@,%@",bundleFileName,bundlxFileName,c,l,r,bundleBase);
//    NSLog(@"bundle------:%@",bundleFileName);
//    NSLog(@"bundlx------:%@",bundlxFileName);
    if (![filemanager fileExistsAtPath:bundleFileName]||![filemanager fileExistsAtPath:bundlxFileName]) {
//        NSLog(@"地图bundle文件或bundlx文件不存在!");
        return nil;
    }
    int index = 128 * (col - cGroup) + (row - rGroup);
    
    NSFileHandle* lxfileHandle=[NSFileHandle fileHandleForReadingAtPath:bundlxFileName];
    [lxfileHandle seekToFileOffset: 16 + 5 * index];
    Byte bufferbundlx[5];
    NSData *data=[lxfileHandle readDataOfLength:5];
    [data getBytes:bufferbundlx];
    
    long offset = (long ) (bufferbundlx[0] & 0xff)
    + (long) (bufferbundlx[1] & 0xff) * 256
    + (long) (bufferbundlx[2] & 0xff) * 65536
    + (long) (bufferbundlx[3] & 0xff) * 16777216
    + (long) (bufferbundlx[4] & 0xff) * 4294967296LL;   
    
   // NSLog(@"%ld",offset);    
    NSFileHandle *lefileHandle=[NSFileHandle fileHandleForReadingAtPath:bundleFileName];
    [lefileHandle seekToFileOffset:offset];
    Byte bufferbundle[4];
    NSData *bundleIndex=[lefileHandle readDataOfLength:4];
    [bundleIndex getBytes:bufferbundle];    
    int length = (int) (bufferbundle[0]& 0xff)
    + (int) (bufferbundle[1] &  0xff) * 256
    + (int) (bufferbundle[2] &  0xff) * 65536
    + (int) (bufferbundle[3] &  0xff) * 16777216;
   // NSLog(@"dddddddddd%d",length);    
    NSData *result=[lefileHandle readDataOfLength:length];
    //关闭文件流
    [lxfileHandle closeFile];
    [lefileHandle closeFile];
    
    return result;
}

 

分享到:
评论

相关推荐

    Java读取ArcGIS切片包数据

    首先,要读取.bundlx文件,这是一种二进制文件,包含有每个切片的元数据,如切片的位置、大小等信息。在Java中,我们可以使用`java.nio`包中的类,如`ByteBuffer`和`FileChannel`来读取和解析这些二进制数据。`...

    ArcGIS Server Bundle读取程序(C#)

    利用C#实现的读取ARCGIS SERVER 紧凑型缓冲文件BUNDLE的类。

    Java解析ArcGIS切片包(更新版)

    1. **读取TPK文件**:使用Java的I/O流读取TPK文件,通常是一个压缩的ZIP文件,可以使用`java.util.zip`包中的类进行解压。 2. **解析镶嵌定义XML**:读取并解析XML文件,获取切片的层级、范围和每个级别的切片索引。...

    C#读取arcgis紧凑格式数据

    本文将深入探讨如何使用C# 2010编程语言来读取ArcGIS 10.2的紧凑格式数据,并将其转换为Base64编码,这对于处理地图切片数据尤其有用。 首先,我们需要理解ArcGIS紧凑格式数据的特性。这种格式是为了提高空间数据的...

    ArcGIS 安卓和IOS客户端读取ArcGIS Server 后台服务配置

    在安卓和 iOS 平台上,ArcGIS 客户端应用程序可以用来读取和利用 ArcGIS Server 上发布的服务。本文将详细介绍如何配置 ArcGIS Server 后台服务,以便于 ArcGIS 客户端在移动设备上访问。 首先,发布 ArcGIS Server...

    Arcgis 10.3 破解文件

    Arcgis 10.3破解文件,使用方法: 1、自行安装lm,关闭服务,拷贝破解文件①② 2、自行安装desktop,拷贝破解文件③,启动lm服务。 破解覆盖文件所在路径: ①service.txt---&gt;C:\Program Files (x86)\ArcGIS\...

    天地图如何转成ARCGIS紧凑型切片

    - **bundlx**: 存储各个图片文件在bundle文件中的偏移量。 **4. 命名规则** - **bundle**: 命名为`R数字C数字`,其中`R`表示起始行,`C`表示起始列,采用十六进制表示。 - **bundlx**: 文件结构固定为81,952字节,...

    arcgis for ios demo 官方例子

    《ArcGIS for iOS官方示例解析》 ArcGIS for iOS是一款由Esri公司开发的用于构建iOS设备上的地理信息系统(GIS)应用的SDK。这款强大的工具集为开发者提供了丰富的功能,帮助他们创建具有地图显示、地理编码、地理...

    ArcGIS10.2破解文件

    ArcGIS10.2 破解文件

    arcgis 加载tif文件

    本文将深入探讨如何在ArcGIS中加载TIFF(Tagged Image File Format)文件,这是一种常见的栅格图像格式,常用于遥感和地理空间数据。 首先,加载TIFF文件至ArcGIS是为了展示或分析地理空间图像。TIFF格式支持多光谱...

    基于java的ArcGIS切片解析

    ArcGIS切片通常指的是地图服务的预计算图像切片,这些切片存储为紧凑型文件,可以快速加载到Web地图中,提高地图性能。它们是由ArcGIS Server生成的,包含了多个不同分辨率的图像,用于支持不同级别的缩放操作。切片...

    Arcgis10.2.2破解文件

    Arcgis10.2.2破解文件

    ArcGIS 10.2 许可文件

    ArcGIS 10.2, 许可文件, ArcGIS 10.2 ArcGIS全模块的许可文件

    ArcGIS 10.1 破解文件

    ArcGIS 10.1 破解文件

    ARCGIS enterprise授权文件(含server和portal)

    《全面解析ARCGIS Enterprise授权文件:服务器与Portal的整合应用》 ARCGIS Enterprise是Esri公司推出的全面地理信息系统解决方案,它集成了多种组件,包括Server、Portal和Data Store等,为企业级用户提供强大的...

    arcgis runtime for iOS加载天地图

    《ArcGIS Runtime for iOS加载天地图的实现与详解》 在移动GIS开发领域,ArcGIS Runtime SDK for iOS是一个强大的工具,它允许开发者构建能够在iOS设备上运行的地图应用程序。本篇文章将详细探讨如何利用该SDK加载...

    arcgis server 10.2.2许可文件.zip

    《ArcGIS Server 10.2.2 许可文件详解》 ArcGIS Server是Esri公司开发的一款强大的地理信息系统(GIS)服务器软件,它允许用户在互联网、内联网或局域网环境下发布、管理和共享地理空间数据。在这个场景中,我们...

    最新arcgis iOS sdk 10.2.4将天地图做为底图

    网上目前针对IOS的arcgis的将天地图作为底图的,都是老的,而且里面有很多错误,调整之后加载出来的图的都是偏移的,这个是我调整后的,在xcode5下,arcgis ios sdk 10.2.4环境下显示正常的。2015年最新的。

    ArcGIS API For iOS 2.2.1及26个例程源代码

    ArcGIS API For iOS 2.2.1及26个例程源代码 ArcGIS API for iOS 使您可使用 Objective C 构建多种应用程序(这些应用程序将运用 ArcGIS Server 提供的强大制图、地理编码、地理处理和自定义功能)并将它们部署到 ...

Global site tag (gtag.js) - Google Analytics