精华内容
下载资源
问答
  • 瓦片时空数据库——切片数据读取三(ArcGIS紧凑型v2)
    千次阅读
    2019-01-30 14:35:47

     ArcGIS 10.3开始,启动了一种新的切片管理方式。将缓存的索引信息.bundlx包含在了缓存的切片文件.bundle中。
     利用C#对新的缓存数据进行读取的方式如下:

            /// <summary>
            /// 从本地切片文件读取相应的层行列对应的切片,针对Arcgis v2.0切片数据格式
            /// </summary>
            /// <param name="level"></param>
            /// <param name="row"></param>
            /// <param name="column"></param>
            /// <returns></returns>
            public byte[] GetTileBytesDot3(int mLevel, int mRow, int mColumn)
            {
                int size = 128;
                byte[] tileBytes = null;
                FileStream isBundle = null;
                string bundlesDir = input_path + "\\_alllayers";
                try
                {
                    string level = mLevel.ToString();
                    int levelLength = level.Length;
                    if (levelLength == 1)
                    {
                        level = "0" + level;
                    }
                    level = "L" + level;
                    int rowGroup = 128 * (mRow / 128);
                    string row = rowGroup.ToString("X");
                    int rowLength = row.Length;
                    if (rowLength < 4)
                    {
                        for (int i = 0; i < 4 - rowLength; i++)
                        {
                            row = "0" + row;
                        }
                    }
                    row = "R" + row;
                    int columnGroup = 128 * (mColumn / 128);
                    string column = columnGroup.ToString("X");
                    int columnLength = column.Length;
                    if (columnLength < 4)
                    {
                        for (int i = 0; i < 4 - columnLength; i++)
                        {
                            column = "0" + column;
                        }
                    }
                    column = "C" + column;
                    string bundleName = bundlesDir + "\\" + level + "\\" + row + column + ".bundle";
                    int index = 128 * (mRow - rowGroup) + (mColumn - columnGroup);
                    if (!File.Exists(bundleName) )
                        return null;
                    isBundle = new FileStream(bundleName, FileMode.Open, FileAccess.Read);
                    isBundle.Seek(64 + 8 * index, SeekOrigin.Begin);
                    //获取位置索引并计算切片位置偏移量
                    byte[] indexBytes = new byte[4];
                    isBundle.Read(indexBytes, 0, 4);
                    long offset = (long)(indexBytes[0] & 0xff) + (long)(indexBytes[1] & 0xff) * 256 + (long)(indexBytes[2] & 0xff) * 65536
                                    + (long)(indexBytes[3] & 0xff) * 16777216;
                    //获取切片长度索引并计算切片长度
                    long startOffset = offset - 4;
                    isBundle.Seek(startOffset, SeekOrigin.Begin);
                    byte[] lengthBytes = new byte[4];
                    isBundle.Read(lengthBytes, 0, 4);
                    int length = (int)(lengthBytes[0] & 0xff) + (int)(lengthBytes[1] & 0xff) * 256 + (int)(lengthBytes[2] & 0xff) * 65536
                                + (int)(lengthBytes[3] & 0xff) * 16777216;
                    //根据切片位置和切片长度获取切片
                    // ByteArrayOutputStream bos = new ByteArrayOutputStream();
                    tileBytes = new byte[length];
                    int bytesRead = 0;
                    if (length > 4)
                    {
                        bytesRead = isBundle.Read(tileBytes, 0, tileBytes.Length);
                    }
                    else
                    {
                        tileBytes = null;
                    }
                }
                catch (Exception ex)
                {
                    return null;
                }
                finally
                {
                    if (isBundle != null)
                    {
                        isBundle.Close();
                    }
                }
                return tileBytes;
            }
    
    更多相关内容
  • 倾斜摄影测试数据,s3m切片数据
  • 基于工业CT切片数据的CAD模型重构.pdf
  • 将ArcGIS10切片数据加载到SQLlite数据库,经过测试10G数据运行时间20分钟。
  • 脑肿瘤切片分类数据集-提供tensorflow代码和教程,结合作者录制的b站视频,快速掌握不是梦。数据集详细信息请看https://blog.csdn.net/ECHOSON/article/details/117964438
  • 针对基于特征的反求工程中,各种曲面特征处理技术的研究已经比较深入,平面切片数据的特征处理技术研究相对不足的现状,研究并实现了处理切片数据的离散曲率分析、数据分段、特征识别和基于连续性约束的断面特征曲线...
  • 提出一种基于最小生成树的切片数据点排序算法,该算法建立散乱点云空间索引结构,基于该结构快速获取切片邻域数据,依据邻域数据与切片的位置关系将其划分为正负2个区域,通过正负邻域配对点连线与切片求交获取切片数据...
  • 为此提出了一种对截面切片数据进行自动细化的算法.对点云进行切片后,得到截面轮廓点云束,根据点云束密度预估前进半径,并随机选取点云束的一点作为细化的起点,采用近似轮廓跟踪算法确定新点,由初始点和初始方向...
  • 在刚开始使用pandas DataFrame的时候,对于数据的选取,修改和切片经常困惑,这里总结了一些常用的操作。 pandas主要提供了三种属性用来选取行/列数据: 属性名 属性 ix 根据整数索引或者行标签选取数据 ...
  • 建议使用其他功能生成切片轮廓数据。 (例如Sunil Bhandari创建的函数slice_stl_create_pa th(triangles,slice_height)) [xy_points] = add_features(轮廓_xy_points,shell_layers,shell_thickness,base_...
  • 批量修改文件名植得农业影像切片数据处理工具.rar
  • 针对虚拟人切片数据量大、解剖结构复杂等特点,对分割虚拟人切片图像的基于二叉树SVM 多类分割方法进行研究。基于二叉树的SVM多类分割方法较其他SVM多分类方法更符合人们分割虚拟人切片图像的习惯,而且能获得较高的...
  • 为了提高虚拟人切片数据分割的自动化程度,提出了基于支持向量机的虚拟人切片数据分割方法。给出了分割策略、分割步骤,并讨论了切片数据分割中的支持向量机核及相关参数的选择。实验证明,利用虚拟人切片数据的空间...
  • 针对虚拟人切片数据量大、解剖结构复杂等特点,对分割虚拟人切片图像的基于二叉树SVM多类分割方法进行研究。基于二叉树的SVM多类分割方法较其他SVM多分类方法更符合人们分割虚拟人切片图像的习惯,而且能获得较高的...
  • GIS开发:arcgis server切片数据和wmts

    千次阅读 2020-04-04 21:51:55
    arcgis server能够将矢量(vector)数据,发布成wms的服务形式,并能够进行相应的切片,发布wmts服务,在客户端能够以切片的形式进行访问使用。 arcmap直接连上arcgis server,就能够进行数据发布,在File上选择...

    arcgis server能够将矢量(vector)数据,发布成wms的服务形式,并能够进行相应的切片,发布wmts服务,在客户端能够以切片的形式进行访问使用。

    arcmap直接连上arcgis server,就能够进行数据发布,在File上选择share as ,选择service,就会弹出发布的步骤。
    在这里插入图片描述
    要想发布通用的web墨卡托的切片,需要先将arcmap的坐标系设置成对应的坐标系,可以搜索3857设置,之后添加相应的数据。

    按照配置界面的操作,一步一步的进行设置,在capability的界面里,要选择wms的服务,直接矢量的服务,要选择wfs。
    在这里插入图片描述
    在caching的页面里,设置图层的切片信息,设置为arcgis online/bing的切片格式,选择切片的级别,按照需要进行选择,切片等级越高,切片时间越长,发布的速度也就越慢。
    在这里插入图片描述
    设置完成后,即可进行数据的发布,发布完成后,打开arcgis server的管理界面,选择相应发布的图层,编辑图层,选择缓存的菜单,就能看到数据的缓存格式。
    在这里插入图片描述
    在OGC的菜单下,选择显示wmts的服务,就能看到对应发布的切片服务了,在客户端连接wmts,一般的地图类库都能进行支持。
    在这里插入图片描述
    更多文章请关注公众号:
    在这里插入图片描述

    展开全文
  • 本代码能够处理分割后的.raw格式图像,将图像中有分割数据切片提取出来,以便进行下一步的提patch等等处理。提patch代码见我csdn的其他资源。 %该函数输入.raw图像的路径filename %输出一个由带数据切片叠成的三...
  • 本小节主要讲基于GeoWebCache的切片数据格式 1 概述 &nbsp;&nbsp;&nbsp;&nbsp;在GeoServer阵营中,可以选择UDig和QGIS进行数据的符号化。并将符号化后的sld符号文件导入到GeoServer中,进行数据发布...

        在栅格切片方面,目前主要的还是GeoServer和ArcGIS两大阵营。本小节主要讲基于GeoWebCache的切片数据格式

    1 概述

        在GeoServer阵营中,可以选择UDig和QGIS进行数据的符号化。并将符号化后的sld符号文件导入到GeoServer中,进行数据发布。切片默认路径在“GeoServer<版本号>\data_dir\gwc\”文件夹中。可以在“GeoServer <版本号>\webapps\geoserver\WEB-INF\web.xml”文件中,重新配置缓存地址路径。例如:

    <context-param>
       <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
       <param-value>C:\temp</param-value>
    </context-param>
    

        其中,GeoWebCache分别在<data_dir> / gwc-layers /目录中存储了每个GeoServer切片图层的配置。每个切片层都有一个XML文件。这些文件包含与独立版本中的语法不同的语法。可以在“Tile Layers”页面或通过GeoWebCache REST API配置切片图层。
        数据发布完成后,点击首页“Tile Layers”,点击切图的图层组后面“Seed/Truncate”,点击“submit”即可开始切图,点击“Refresh list”可刷新查看切片状态。 数据将存放在配置的切片路径下。

    2 数据存储格式

        历史上,GeoWebCache有三种存储方式,负责tile和tile元数据处理:blob存储,Metastore和磁盘配额子系统。
    1) blobstore是tile的存储机制,其默认实现基于文件系统。
    2) Metastore是一个可选的基于H2的存储机制,用于关于切片的元信息,例如切片创建时间,大小和请求参数的使用。
    3) 磁盘配额机制使用nosql嵌入式数据库来跟踪切片磁盘的使用情况,并根据用户设置的策略使切片到期。
    从GeoWebCache 1.4.0开始,Metastore被基于完整文件系统的解决方案所取代,使得blobstore负责先前由Metastore跟踪的信息。默认情况下,这两个存储的存储位置是servlet容器指定的临时存储目录(将在那里创建名为geowebcache的目录)。如果此目录不可用,GeoWebCache将尝试在TEMP环境变量指定的位置创建新目录。内部将有一个磁盘配额目录(默认情况下称为diskquota_page_store),以及以每个缓存层命名的blobstore目录(例如topp_states用于图层topp:states)。

    2.1 松散型切片数据格式

        在GeoServer中,使用GeoWebCache默认生成的数据格式为松散型切片文件,其切片的数据结构如下图所示:
    在这里插入图片描述
        这里,ESPG_4326_13表示TileMatrix=EPSG:4326:13。后面的表示/{TileRow}/{TileCol}。所以在这里,只需要按照指定的路径将数据存储到Mongo数据库中即可。

    2.2 文件Blob(persistent storage mechanisms)存储方式

        除了松散型切片数据格式以外,GeoWebCache还提供了一种永久性的blob存储机制,即“blobstore”。“blobstore”是一种软件组件,它提供了在给定存储机制中存储和检索切片的操作。
    从版本1.8.0开始,tile有两种类型的BlobStore存储机制:
    1)文件blob存储:将tile存储在目录结构中,该目录结构由按层和缩放级别组织的各种图像文件组成。
    2)S3 blob store:将磁贴存储在Amazon Simple Storage Service存储桶中,作为遵循类似TMS的密钥结构的单个“对象”。
    可以在配置文件中配置零个或多个blobstore,以在不同位置和不同存储后端存储切片。 其中一个已配置的blobstores将是默认值。 这意味着它将用于存储其配置未明确指示应使用哪个blobstore的每个层的切片。

    2.3 MBTiles Blob存储方式

        这个blob存储允许我们使用MBTiles规范(版本    1.1)存储切片,该规范定义了一个用于在SQLite数据库中存储切片的模式,其中包含有关切片格式和投影的一些限制。MBTiles规范仅支持JPEG和PNG格式,并且假设EPSG:3857。实现的blob存储将读取和写入符合规范的MBTiles文件,但也能够写入和读取使用其他格式和投影的MBTiles文件。使用MBTiles blob存储将带来一些好处,但代价是性能损失。 MBTiles存储使用的文件数量明显减少,从而可以更轻松地处理数据(例如,备份,在环境之间移动切片)。在某些情况下,存储的数据将更紧凑,减少了磁盘上数据的大小。与文件blob存储区相比,此存储有两个限制:
    1) 此存储未与磁盘配额集成,这是使用数据库文件的结果。
    2) 无法在多个GeoWebCache实例之间共享此存储。
    MBTiles文件对应于SQLite数据库文件。 为了限制每个单个数据库文件的争用量,系统允许用户决定数据库文件的粒度。 当GeoWebCache需要将切片映射到数据库文件时,它只会检索数据库文件路径,而不会考虑MBTiles元数据(这就是为什么这个存储能够处理其他格式和投影)。
        基于默认的文件模板将属于某个图层的所有图块存储在单个文件夹中,该文件夹将包含每个给定格式,投影和参数集的子文件夹,并将在SQLite中对具有相同缩放级别,列范围和行范围的图块进行分组。 列和行范围值通过配置传递,默认情况下为250。提供的文件路径模板将始终被视为相对于作为配置选项提供的根目录。
    下面是使用默认路径模板时blob存储根目录结构的示例:

    .
    |-- nurc_Pk50095
    |   `-- EPSG_4326image_pngnull
    |       |-- 11_2000_1500.sqlite
    |       `-- 12_4250_3000.sqlite
    `-- topp_states
        |-- EPSG_900913image_jpeg7510004a12f49fdd49a2ba366e9c4594be7e4358
        |   |-- 6_250_500.sqlite
        |   `-- 7_0_0.sqlite
        `-- EPSG_900913image_jpegnull
            |-- 3_500_0.sqlite
            |-- 4_0_250.sqlite
            `-- 8_750_500.sqlite
    

    如果没有提供参数,将使用空字符串。 最好定义避免冲突的文件路径模板。可以在文件路径模板中使用的变量名称包括:

    grid:网格集id
    layer:图层的名称
    format:图块的图像格式
    params:参数唯一哈希值
    x:列范围,基于列范围计数配置属性计算
    y:行范围,基于行范围计数配置属性计算
    z:缩放级别
    

    有效的MBTiles文件同时也需要元数据信息,在创建MBTiles文件时将,系统会自动添加图像格式和图层名称。
    元数据模板如下:

    <layerName>.metadata
    

    参考资料:
    1)https://www.geowebcache.org/docs/current/configuration/storage.html#mbtiles-blob-store
    2) https://www.geowebcache.org/docs/current/configuration/index.html
    3) https://docs.geoserver.org/stable/en/user/geowebcache/index.html#gwc
    4) https://www.geowebcache.org/docs/current/configuration/storage.html

    展开全文
  • DataFrame类型由共用相同索引的...DataFrame常用于表达二维数据,但可以表达多维数据。 可以由如下类型创建: ①二维ndarray对象。 ②由一维ndarray,列表,字典,元祖或series构成的字典 ③series类型 ④...

    DataFrame类型由共用相同索引的一组列组成,就是最熟悉的表格类型。
    纵向的索引叫做index(axis=0),横向的叫做columns(axis=1),既有行索引,也有列索引。
    这里写图片描述
    DataFrame常用于表达二维数据,但可以表达多维数据。
    可以由如下类型创建:
    ①二维ndarray对象。
    ②由一维ndarray,列表,字典,元祖或series构成的字典
    ③series类型
    ④其他Dataframe类型


    ①二维ndarray对象创建
    这里写图片描述
    2行5列的np,DataFrame自动添加了行索引和列索引。
    ②一维ndarray对象字典创建
    这里写图片描述
    不知道为什么,one的值变成了浮点数。
    再看看dt的情况:
    这里写图片描述
    dt是字典,通过DataFrame类型创建好像变成了一个“漂亮的表格”。
    通过字典方式创建,key成为了列索引,行索引是字典中指定的index。
    也可以在创建的时候,显示指定index和columns,注意这种指定不是在随意起名,而是要与字典的key-values对应。
    这里写图片描述
    字典dt中并没有’three’这个key,所以生成的DataFrame‘three’列也是NaN。
    ####总结:我感觉字典的表现出的格式和DataFrame格式是向右旋转了90度,然后再把表翻过来,所以对于一个表格外观,两者要“倒过来构思”。
    这里写图片描述
    假设DataFrame要形成这样的表格结构,那么‘城市’,‘环比’,‘同比’,‘定基’就要作为字典的key,对应的部分作为values。

    di={'城市':['北京','上海','广州','深圳','沈阳'],'环比':[101.5,101.2,101.3,102.0,100.1],'同比':[120.7,127.3,119.4,140.9,101.4],'定基':[121.4,127.8,120.0,145.5,101.6]}
    
    df=pd.DataFrame(di)
    

    这里写图片描述
    为什么df的格式和预想的不同呢,列的顺序乱了,这是因为字典类型di生成的时候,字典元素是无序的。
    这里写图片描述
    我们其实最关心的是df数据的values部分,使用df.values就能看见一个array类型
    这里写图片描述
    ####总结:DataFrame的本质就是索引+数据,也即索引+array,二维带‘标签’的数组。
    在建立好DataFrame类型之后,如何获取数据?
    给出列索引,获取一列
    这里写图片描述
    这样的一列就相当于一个series,它有名字,名字就是其对应的列索引。
    但是DataFrame对象是没有name属性的
    这里写图片描述
    如何获取一行呢?直接用df[1]是错误滴!
    必须用df.ix[]形式,结果用教学视频方式:
    这里写图片描述
    .ix方式虽然也输出了一行,但是反对这种用法,请用.loc或者.iloc
    这里写图片描述
    想要获取多行,多列:
    这里写图片描述
    这里写图片描述

    #####总结:获取一列可以直接用df[],获取一行要用df.loc[],获取多行多列要用两个[[,]]形式,如果要通过行和列来精确某一个位置的数据,可以使用df[列索引][行索引],并且不能把顺序搞反。
    这里写图片描述
    #####对于行数据,也可以使用数字切片方法:
    这里写图片描述
    #####事实上,.loc和.iloc都可以用来行和列的切片操作。
    虽然标准的Python/Numpy的选择和设置表达式都能够直接派上用场,但是作为工程使用的代码,我们推荐使用经过优化的pandas数据访问方式: .at, .iat, .loc, .iloc
    loc是指location的意思,iloc中的i是指integer。这两者的原意是标签定位,区别如下:

    loc works on labels in the index.
    iloc works on the positions in the index (so it only takes integers).
    也就是说,loc是能够工作在自定义的index标签,而iloc是工作在默认的index标签数字。
    第一个区别示例:
    这里写图片描述
    对于redf,自定义了行索引,此时.ioc和.iloc的结果:
    这里写图片描述
    可见.ioc以用户自定义的行标签为参考,.iloc依然使用系统默认。

    第二个区别的示例,loc[]是包括了]最右边,而iloc跟python设定相同,不包括]最右边。
    在行索引上使用loc或iloc效果不一样:
    这里写图片描述
    可见传统df[0:3]与df.iloc[0:3]相同。


    如果切出城市和环比两个列,loc第一个参数说明取所有行:
    这里写图片描述
    如果想要连续切片城市,定基,环比 3个列,因为自定义了行标签,无法使用loc数字切片,可以用.iloc,或者老老实实的写完3个行标签。

    df.loc[:,1:3]      #错误写法,行标签已经自定义了
    df.iloc[:,1:4]      #正确写法
    df.loc[:,['城市':'环比']] #错误写法
    df.loc[:,'城市':'环比']   #正确写法,切片不加[]符号
    df.loc[:,['城市','定基','环比']] #正确写法,多个标签成为列表,要加[]
    df[['城市','定基','环比']]      #正确写法
    
    

    这里写图片描述
    总结:对任意行列切片都可以使用.loc和.iloc,但是要注意写法细节。.iloc缺点是要去数行列,纯数字也不直观;.loc使用用户自定义标签,非常直观,自己以后用这个,要注意包涵关系和切片不加[]符号。

    展开全文
  • 为提高地图浏览速度,需要配置好地图模板并发布,然后进行切片处理。当需求变化时,需要对地图模板重新配置并切片更新,本方法适合初学者使用。
  • 数据切片定义

    千次阅读 2020-10-28 16:09:09
    很多语言都有切片切片严格来说是一种概念,并不是一种明确的数据结构。树、哈希表是一种明确的数据结构。 切片不管怎么实现,实际上是引用数组一个片段,要么是整个数组,要么是局部数组。引用局部的话必须有长度...
  • 近来,常使用一款谷歌地图下载器下载卫星影像数据,该下载器可以直接将下载的谷歌影像数据导出为arcserver切片,其实这也比较容易实现,只要将谷歌切片的行列号命名方式改成arcserver切片的命名方式即可,...
  • ArcGis for silverlight 加载 Google Maps 切片数据 很简陋 参照例子做的
  • 在ArcGIS Mobile 10中新增命名空间ESRI.ArcGIS.Mobile.DataProducts.RasterData :专门用于提供显示栅格数据的类。下面我们就来看一下,如何应用该类在Mobile中加载栅格数据。   首先要试验的栅格数据是将我们...
  • 使用geoserver发布arcgis的切片文件,整个流程的相关介绍。
  • 离线单独加载GeoWebCache的切片
  • Mapbox 加载百度切片

    2018-05-06 12:10:00
    用Mapbox 加载百度地图,使用网上找的js解决坐标便宜问题。有需要的可以试一下,有什么建议的话欢迎交流
  • % 指定切片的位置在xyz轴 h = slice(x,y,z,v,[-1 -.75 -.5],[],[0]); set(h,'EdgeColor','none',... 'FaceColor','interp',... 'FaceAlpha','interp') alpha('color') alphamap('rampdown') alphamap('increase',.1...
  • 数据切片在ML系统中很重要,因为可以在数据子集中更好地理解和验证经过训练的模型(例如,模型在整个数据集上表现良好,但是对于数据的特定子集却惨败)。 实际上,这通常是由事先知道重要数据切片的人类策展人完成...
  • 栅格数据切片方法

    千次阅读 2020-09-28 11:24:05
    这里写目录标题前提1、 确定切片方案1.1用谷歌、百度之类网络设定的切片方案1.2 制作XML数据作为切片方案2、建立镶嵌数据集3、切片3.1 在本机切片3.2 将镶嵌数据集发布在服务(ArcGIS server)上再切片3.2.1 发布...
  • 高德数据下载工具是一款免费的可以用于下载高德POI数据、道路数据、切片数据的软件,并自动将数据下载生成SHP文件,而且对矢量数据坐标自动进行了校正(数据坐标系为WGS84)。 如您对数据下载有其它需求和建议,请...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 169,331
精华内容 67,732
关键字:

切片数据