ArcGIS影像切片

标签: 无 分类: 未分类 创建时间:2023-04-06 02:53:34 更新时间:2025-09-26 04:44:38

前言

ArcGIS 的影像切片是一种比较通用的切片数据格式,主要包括:_alllayers、conf.cdi 和 Conf.xml 几个文件, _allayers文件夹中包括了从L01到L12等几个不同级别的文件夹,每个文件夹里面包括了:.bundle 和 .bundlx 文件,这就是一个 “紧凑型” 的文件格式类型。

“紧凑型” 存储最主要的两种文件是 bundle 和 bundlx 文件,其中bundle文件用以存储切片数据,bundlx是bundle文件中切片数据的索引文件。

一个bundle文件中最多可以存储128128(16384)个切片,但是创建切片缓存并不是一张张切片单独生成,而是以4096像素(无抗锯齿)或2048像素(有抗锯齿)为边长渲染的,如果我们选择的切片边长为256像素并开启了抗锯齿,那么每次ArcSOC进程创建的是一张以88(64)个切片拼接成的大图,然后切割后存入bundle文件中。

参考文章:
【1】.将切片添加到缓存的方法 在ArcGIS Server中创建缓存切片
【2】.ArcGIS 切片缓存紧凑文件格式分析与使用 这里说了紧凑型的文件格式的说明,并写了一个java代码进行数据的访问。从上面的分析,我们如果知道了一个切片的级别、行号、列号,就可以通过bundlx首先找到bundle中切片内容的偏移,然后从bundle文件中取出4个字节的长度数据,再随后根据这个长度读取真实的切片数据。关于如何计算切片的行号、列号,以及bundle文件的命名方式
【3】.GIS开发:Arcgis的切片格式
【4】.1.10. X. WMTS-切片地图 Web 服务
【5】.什么是影像服务缓存?

配置文件

切片之后的缓存文件夹里面,有一个 Conf.xml 文件,里面记录了切片的配置,比如将数据切成 7-20 级数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?xml version="1.0" encoding="utf-8"?>

<CacheInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/10.1" xsi:type="typens:CacheInfo">
<TileCacheInfo xsi:type="typens:TileCacheInfo">
<SpatialReference xsi:type="typens:GeographicCoordinateSystem">
<WKT>GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_unknown",SPHEROID["Unknown",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]</WKT>
<XOrigin>-400</XOrigin>
<YOrigin>-400</YOrigin>
<XYScale>11258999068426.24</XYScale>
<ZOrigin>-100000</ZOrigin>
<ZScale>10000</ZScale>
<MOrigin>-100000</MOrigin>
<MScale>10000</MScale>
<XYTolerance>8.9831528411952133e-009</XYTolerance>
<ZTolerance>0.001</ZTolerance>
<MTolerance>0.001</MTolerance>
<HighPrecision>true</HighPrecision>
<LeftLongitude>-180</LeftLongitude>
</SpatialReference>
<TileOrigin xsi:type="typens:PointN">
<X>-180</X>
<Y>90</Y>
</TileOrigin>
<TileCols>256</TileCols>
<TileRows>256</TileRows>
<DPI>96</DPI>
<PreciseDPI>96</PreciseDPI>
<LODInfos xsi:type="typens:ArrayOfLODInfo">
<LODInfo xsi:type="typens:LODInfo">
<LevelID>7</LevelID>
<Scale>4617149.7423495166</Scale>
<Resolution>0.01098632777</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>8</LevelID>
<Scale>2308574.8711747583</Scale>
<Resolution>0.0054931638850000001</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>9</LevelID>
<Scale>1154287.4357975107</Scale>
<Resolution>0.0027465819429999998</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>10</LevelID>
<Scale>577143.7176886237</Scale>
<Resolution>0.0013732909709999999</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>11</LevelID>
<Scale>288571.85905444348</Scale>
<Resolution>0.00068664548599999995</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>12</LevelID>
<Scale>144285.92952722174</Scale>
<Resolution>0.00034332274299999998</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>13</LevelID>
<Scale>72142.964553479251</Scale>
<Resolution>0.00017166137099999999</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>14</LevelID>
<Scale>36071.482486871253</Scale>
<Resolution>8.5830686000000007e-005</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>15</LevelID>
<Scale>18035.741243435627</Scale>
<Resolution>4.2915343000000003e-005</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>16</LevelID>
<Scale>9017.870411586191</Scale>
<Resolution>2.1457671e-005</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>17</LevelID>
<Scale>4508.9354159247168</Scale>
<Resolution>1.0728836e-005</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>18</LevelID>
<Scale>2254.4677079623584</Scale>
<Resolution>5.3644179999999999e-006</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>19</LevelID>
<Scale>1127.2338539811792</Scale>
<Resolution>2.682209e-006</Resolution>
</LODInfo>
<LODInfo xsi:type="typens:LODInfo">
<LevelID>20</LevelID>
<Scale>563.61671685896795</Scale>
<Resolution>1.3411040000000001e-006</Resolution>
</LODInfo>
</LODInfos>
</TileCacheInfo>
<TileImageInfo xsi:type="typens:TileImageInfo">
<CacheTileFormat>MIXED</CacheTileFormat>
<CompressionQuality>75</CompressionQuality>
<Antialiasing>false</Antialiasing>
</TileImageInfo>
<CacheStorageInfo xsi:type="typens:CacheStorageInfo">
<StorageFormat>esriMapCacheStorageModeCompact</StorageFormat>
<PacketSize>128</PacketSize>
</CacheStorageInfo>
</CacheInfo>

投影变换

这里有一点需要说明的就是,根据上面的配置文件说明,如果数据不是经纬度坐标系,将无法进行切片。

下面的就是投影坐标系,而不是地理坐标系。

选择 “数据管理工具”->投影和变换, 然后选择 “栅格”->投影栅格,可以将栅格的坐标系进行重新投影,这个好像还是挺费时间的。

建议就是输出栅格直接填入 .tif 格式,这样生成的栅格就是tif格式的了。

参考文章:
【1】.ArcGIS进行自定义投影转换 数据管理->投影和变换->栅格->投影栅格,可以将栅格数据重新定义投影。
【2】.3、ArcGIS Pro中的地理处理 工具的类别与类型:内置工具、脚本工具、模型工具。使用工具对话框执行工具。
【3】.Arcgis栅格数据投影 注意“输出栅格数据集”在文件名最后手动加上“.tif”即可以tif形式导出数据
【4】.栅格影像WGS84转CGCS2000坐标
【5】.像元大小 默认输出分辨率将由输入栅格数据集中最粗糙的输入确定。
【6】.ArcGIS教程:栅格像元大小和重采样 1.最邻近分配法:因为最邻近分配法不会更改输入像元的值,它是用于离散(分类)数据的重采样技术。2.双线性插值法:双线性插值法使用四个最邻近输入像元中心的值来确定输出栅格上的值。3.三次卷积插值法:三次卷积插值法与双线性插值法类似,它是通过 16 个最邻近输入像元中心及其值来计算加权平均值。不应对分类数据使用双线性插值法或三次卷积插值法,因为输出栅格数据集中不会保留类别。但是,这三种技术均可用于连续数据,其中最邻近法将生成块状输出,双线性插值法将生成更平滑的结果,三次卷积插值法将生成最清晰的数据。

数据量

关于数据量我需要说明一下,从原始数据中,获取到的img遥感影像,文件夹大小是500多G,但是进行投影变换之后,文件夹大小,只有180多个G了,但是在查看影像数据的时候,为压缩大小确实为391G。

这里其实也合理的,在原始影像文件夹中,存储了一百多个G的金字塔数据,加上未压缩的391个G,差不多就是原始文件夹的大小了。进行投影变换之后文件的大小变成了186G,也说明了在影像数据被压缩之后,就是这么大了,为压缩之前是391个G。根据上面的信息来判断,至于切片之后的第20级,应该会有180G左右。

1.ArcGIS Map 切片

使用 ArcGIS Map 进行切片,就是创建离线的缓存,方法和使用 ArcGIS Server 进行切片差不多。

参考文章:
【1】.arcgis 影像切片,不需要发布服务(生成png格式或者.bundle格式都可以)、可不是生成切片包哦 打开arcmap,加载需要切片的影像图——>打开数据管理工具->切片缓存->生成切片缓存方案,这样就可以进行切片了。
【2】.arcgis server地图服务切片(10.4.1) 1.打开arctoolbox,打开【创建地图服务器缓存】工具,开始切片的配置。输入服务:要切片的服务,服务缓存目录、比例类型、缓存切片格式、存储格式:EXPLODED=切片文件不压缩,以一个个图片文件形式存在,如果切片需要在tomcat(或者http server)发布,就只能这种方式,但确定是文件数量多,切片压缩解压都满。COMPACT=切片文件压缩,切片按arcgis只有的格式压缩成一些大文件,优缺点跟上述相关。2.arctoolbox找到工具【管理地图服务缓存切片】,当进行了上一步创建了切片配置,就可以用此工具创建切片

1.生成切片方案

打开arcmap,加载需要切片的影像图——>打开如下图工具: 数据管理工具 -> 切片缓存 -> 生成切片缓存方案

在高级选项中,可以选择切片格式

2.创建切片

数据管理工具 -> 切片缓存 -> 管理切片缓存,可以选择保存缓存位置、名称、倒入缓存切片,最小最大比例等参数,主要就是 “输入切片方案(可选)” 中选择 IMPORT_SCHEME,这样就可以选择自己创建的缓存方案了。

3.问题

(1) 输入数据源空间参考和切片方案空间参考之间没有可用的基准面变换
正确的数据

错误的数据

【解决方案】

  • (1)选择与数据源使用同一坐标系的切片方案,通过修改 切片方案文件进行处理。
  • (2)或者是先用数据源生成一个切片方案,然后直接修改方案文件里面的信息。
    1
    2
    3
    4
    <!-- 将4490 -->
    <WKT>GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_unknown",SPHEROID["Unknown",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]</WKT>
    <!-- 改为4326 -->
    <WKT>GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433],AUTHORITY["EPSG",4326]]</WKT>

参考文章:
【1】.001529: 输入数据源空间参考和切片方案空间参考之间没有可用的基准面变换。

(2) 无法启动配置RasterCommander.ImageServer

【解决方法】
在相应工具中选择“环境”,并行处理因素,输入“0”,此后可以正常运行,其他工具出现同样错误也可以用这种方法。

参考文章:
【1】.[ArcGIS常见错误集:2] AcrGIS 无法启动配置 RasterCommander.ImageServer 这个可以解决问题。
【2】.ArcPro应用01、并行处理因子设置与测试 1.空——让各工具决定使用进程的数量,这是默认设置。2.0——不跨进程多个进程进行操作。3.n——可以指定进程的数量。4.n%——使用百分比计算进程数量:进程数量=系统核数量*n/100

(3) 不会针对比例生成缓存切片,它不在最大最小范围内
在执行切片的时候,出现了这个问题,不知道是什么原因。

【解决方法】
后来发现,是坐标系的问题,切片方案坐标系是地理坐标系,但是数据是投影坐标系。需要做的就是将栅格数据重投影为地理坐标系。

(4) 崩溃
每当我选择切片方案文件夹的时候,总是会出现这个问题,不知道什么原因。

(5) .img转为tif格式
本来我以为无法切片的原因,是因为 .img 格式无法进行切片,于是我把它转成了 tif 格式,结果并不是这个原因。

参考文章:
【1】.ArcGIS中把img图层文件转成tif图层文件的方法
【2】.ArcGIS中的一些影像格式:.ige .img .rde .rrd img文件就成了索引文件了,rrd还是金字塔文件,ige则实际用来存储栅格数据,rde文件:在某些情况下,金字塔文件(rrd)也会超过2GB,这时会创建rde文件来存储这些信息

2.ArcGIS Server 切片

(1) 右键数据,选择 共享为服务

(2) 选择发布为服务,连接 ArcGIS Server

(3) 选择文件夹

(4) 在打开的属性框中,选择 缓存,进行高级设置。

(5) 可以设置比例尺

参考文章:
【1】.(十二)ArcGIS Server发布松散型切片服务 这里说了如何使用arcgis server 进行切片的步骤。
【2】.将切片添加到缓存的方法 将切片添加到缓存的方法有多种:1.发布服务时自动构建缓存。2.发布服务后使用管理地图服务器缓存切片地理处理工具手动构建缓存。3.用户首次访问时按需构建切片。
【3】.ArcGIS 切片问题小结
【4】.管理和迁移ArcGIS Server服务之–切片服务(TileServer缓存服务)(二
【5】.网站地图服务发布(一)发布arcgis切片服务
【6】.ArcGIS Server 这是官方对地图服务发布以及缓存的相关说明。
【7】.ArcGIS Server 自定义比例尺切图 这个有图有真相,可以作为参考资料。1.选中需要进行发布的mxd文件,然后鼠标右击,在弹出的菜单中选择Share As Service。2.在弹出的Share as Service对话框中选择Publish a service单选按钮。3.在打开的窗口中选择一个进行地图发布的服务,并指定这个地图服务的名称。3.在打开的Service Editor窗口中,我们开始进行缓存切片操作,先点击左侧列表中的Caching项,右边窗口会出现Caching的一些设置,由于要进行切片缓存,所以我们需要勾选Using tiles from a cache的单选按钮,然后在Tiling Schema的下拉列表中选择Suggest,在弹出的Scale Levels对话框中随意输入一个级别,默认亦可,因为后面会自定义切图比例尺,此时设置的比例尺并不会作为最后真正切图的比例尺,然后单击OK按钮。4.单击Caching选项下面的Advanced Setting命令,选中默认的比例尺,然后单击右边的Delete按钮,删除所有的默认比例尺。5.默认比例尺删除完毕后,下面开始自定义比例尺,我们在显示比例尺列表上方的文本框中输入切图比例尺(比例尺的分母,如1:50000,直接输入50000即可),然后单击Add按钮
【8】.如何输出ArcGIS Server瓦片格式并发布地图服务 通过91卫图助手下载谷歌卫星影像,直接进行ArcGIS Server影像切片的发布。
【9】.Arcgis格式的切片发布 在arcmap的file菜单,打开下拉的share as,可直接将打开的数据,发布到arcgis server中。

1.加载数据

使用ArcMap打开我们要发布的数据,打开影像数据。

2.共享服务

点击文件->共享于->服务打开共享为服务面板,点击发布服务,创建服务目录和存储位置。这里我放到了 F:\arcgisserver\directories\arcgiscache 文件夹中。

3.选择切片方案

进入服务编辑页面,点击缓存,在这里我使用软件建议切片方案。或者使用导入切片文件,这个我尝试了,发现无法选择切片,结果就只能是自己手动创建比例尺了。点击高级设置,可以手动创建切片方案,还可以查看切片缓存大小。

4.设置存储格式

点击高级设置,将图片类型设置为PNG,将存储格式选择为Exploded,切片高度选择为256*256,还可以进行比例尺的配置

5.点击发布,发布成功

在目录窗格,选中服务,可以查看服务状态。右键服务名称,然后点击查看服务状态,可以打开服务状态查看。(这一点其实也是比ArcPro好的地方,因为ArcPro无法查看整个的缓存进度。)

6.查看缓存

进入到缓存文件夹,进入ArcGIS Server缓存文件夹(在安装ArcGIS Server的时候设置的缓存目录。)

参考文章:
【1】.为本地缓存生成配置目录
【2】.在 ArcGIS Server Manager 中编辑服务缓存属性 可打开服务器缓存目录以检查缓存切片和切片方案文件 conf.xml。 另一个文件 conf.cdi 包含服务的默认范围信息,在 ArcMap 中以栅格数据集形式查看缓存时需要使用它。 名为 status.gdb 的地理数据库包含 ArcGIS 在其缓存状态报告中显示的信息。

问题

(1) 图层的数据源未注册到服务器

【解决方案】
将鼠标悬停在分析器消息上。 单击出现的选项按钮 选项,然后单击将数据源注册到服务器。 在添加数据存储对话框上,完成所需信息,然后单击创建。 有关详细信息,请参阅管理注册的数据存储。

参考文章:
【1】.24011:数据源未注册到服务器,则此数据将被复制到服务器
【2】.管理注册的数据存储

3.ArcGIS Pro切片

经过尝试,终于算是找到了使用 ArcGIS Pro 进行切片的方法,我这里用了一个 杭州的 7 到 20 级的切片进行了测试。

  • 1.数据处理
    将水经注下载的切片进行合并,然后进行掩膜提取,这部分内容在其他地方写过了,只要找到相应的工具,就可以操作了。

  • 2.投影变换
    使用 “数据管理” -> “投影变换” -> “投影栅格”,将 4326 的影像数据,投影为 4490 的经纬度投影,其他的都是默认就行了。

  • 3.生成切片方案
    使用 “数据管理” -> “切片缓存” -> “生成切片缓存切片方案”,选择15级,选中向元大小,高级里面的 256 x 256,切片格式选择 MIXED 压缩,存储格式选择 “压缩”,生成切片缓存方案

  • 4.修改切片方案
    将生成的切片方案 xml 进行修改,

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    <?xml version="1.0" encoding="utf-8"?>

    <CacheInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:typens="http://www.esri.com/schemas/ArcGIS/3.0.0" xsi:type="typens:CacheInfo">
    <TileCacheInfo xsi:type="typens:TileCacheInfo">
    <SpatialReference xsi:type="typens:GeographicCoordinateSystem">
    <WKT>GEOGCS["GCS_China_Geodetic_Coordinate_System_2000",DATUM["D_China_2000",SPHEROID["CGCS2000",6378137.0,298.257222101]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433],AUTHORITY["EPSG",4490]]</WKT>
    <XOrigin>-400</XOrigin>
    <YOrigin>-400</YOrigin>
    <XYScale>11258999068426.24</XYScale>
    <ZOrigin>-100000</ZOrigin>
    <ZScale>10000</ZScale>
    <MOrigin>-100000</MOrigin>
    <MScale>10000</MScale>
    <XYTolerance>8.9831528411952133e-09</XYTolerance>
    <ZTolerance>0.001</ZTolerance>
    <MTolerance>0.001</MTolerance>
    <HighPrecision>true</HighPrecision>
    <LeftLongitude>-180</LeftLongitude>
    <WKID>4490</WKID>
    <LatestWKID>4490</LatestWKID>
    </SpatialReference>
    <TileOrigin xsi:type="typens:PointN">
    <X>-180</X>
    <Y>90</Y>
    </TileOrigin>
    <TileCols>256</TileCols>
    <TileRows>256</TileRows>
    <DPI>96</DPI>
    <LODInfos xsi:type="typens:ArrayOfLODInfo">
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>7</LevelID>
    <Scale>4617149.7423495166</Scale>
    <Resolution>0.01098632777</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>8</LevelID>
    <Scale>2308574.8711747583</Scale>
    <Resolution>0.0054931638850000001</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>9</LevelID>
    <Scale>1154287.4357975107</Scale>
    <Resolution>0.0027465819429999998</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>10</LevelID>
    <Scale>577143.7176886237</Scale>
    <Resolution>0.0013732909709999999</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>11</LevelID>
    <Scale>288571.85905444348</Scale>
    <Resolution>0.00068664548599999995</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>12</LevelID>
    <Scale>144285.92952722174</Scale>
    <Resolution>0.00034332274299999998</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>13</LevelID>
    <Scale>72142.964553479251</Scale>
    <Resolution>0.00017166137099999999</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>14</LevelID>
    <Scale>36071.482486871253</Scale>
    <Resolution>8.5830686000000007e-005</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>15</LevelID>
    <Scale>18035.741243435627</Scale>
    <Resolution>4.2915343000000003e-005</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>16</LevelID>
    <Scale>9017.870411586191</Scale>
    <Resolution>2.1457671e-005</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>17</LevelID>
    <Scale>4508.9354159247168</Scale>
    <Resolution>1.0728836e-005</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>18</LevelID>
    <Scale>2254.4677079623584</Scale>
    <Resolution>5.3644179999999999e-006</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>19</LevelID>
    <Scale>1127.2338539811792</Scale>
    <Resolution>2.682209e-006</Resolution>
    </LODInfo>
    <LODInfo xsi:type="typens:LODInfo">
    <LevelID>20</LevelID>
    <Scale>563.61671685896795</Scale>
    <Resolution>1.3411040000000001e-006</Resolution>
    </LODInfo>
    </LODInfos>
    <PreciseDPI>96</PreciseDPI>
    </TileCacheInfo>
    <TileImageInfo xsi:type="typens:TileImageInfo">
    <CacheTileFormat>MIXED</CacheTileFormat>
    <CompressionQuality>75</CompressionQuality>
    <Antialiasing>false</Antialiasing>
    <BandCount>1</BandCount>
    <LERCError>0</LERCError>
    </TileImageInfo>
    <CacheStorageInfo xsi:type="typens:CacheStorageInfo">
    <StorageFormat>esriMapCacheStorageModeCompact</StorageFormat>
    <PacketSize>128</PacketSize>
    </CacheStorageInfo>
    </CacheInfo>
  • 3.执行切片
    使用 “数据管理” -> “切片缓存” -> ”管理切片缓存“,输入缓存位置、缓存名称、数据源、导入切片方案,选择 “环境” 选项,将 “并行因子” 设置为 0,然后点击运行之后,就可以进行切片了。

总结:
(1) 在进行切片的时候,没有显示进度条的地方,虽然显示了已经是100%,但是没有显示已经切片完成了,那就是还没有切片完成,

(2) 生成的默认的切片方案中的存储格式为 esriMapCacheStorageModeCompactV2,索引文件 .bundlx 合并到了 .bundle 文件中了 ,需要修改为 esriMapCacheStorageModeCompact 才能生成 .bundle 和 .bundlx 文件。这个地方我卡了很久了,测试了很久了,还是没有处理好。

(3) 修改切片方案的时候,我一般都是先把生成的切片方案,使用 xml格式化工具,进行格式化,然后按需取修改其中的部分属性,比如 StorageFormat、LODInfos、TileOrigin、XOrigin、YOrigin等参数。

参考文章:
【1】.从 ArcGIS Pro 连接到 ArcGIS Server 在使用 ArcGIS Pro 时,您可以直接连接到 ArcGIS Server 站点。 这样您就能够使用其中的内容;且如果您有相应的凭据,则可发布服务和执行各种管理任务。
【2】.ArcGIS Pro发布影像切片的方法 大多数用户习惯于使用ArcMap在客户端生成切片,然后再发布的过程。此方法很占时间。今天介绍一种tpk(tile package)离线包发布切片的方式。经过两个步骤:1.生成切片缓存方案。2.管理切片缓存,生成完毕后会在指定目录下输出各级的切片方案。还可以 输出切片缓存,生成 tpk 切片包。
【3】.教程:创建离线场景 离线数据通常需要进行预处理。 此工作流将介绍如何创建切片包作为高程源,以便在创建移动场景包地理处理工具中使用。 但是,它也可以用于根据航空影像创建切片包。 支持将引用栅格数据集的航空图像作为创建移动场景包工具的输入。选项 1:在 WebMercatorAuxiliarySphere 中为地面高程源创建切片包。选项 2:在 WGS84 中为地面高程源创建切片包。选项 3:共享 Web 场景或 Web 图层。
【4】.ArcGIS 发布服务的那些事儿——(2)切片服务(A篇) 这篇文章讲了使用 ArcGIS Server进行切片和使用ArcGIS Pro进行切片。对于涉及较大地理范围或较大地图比例的缓存,此工具可能会需要较长的运行时间。如果取消此工具,将停止切片创建,但不删除现有切片。这意味着,如果您的时间不足,可以先取消工具,随后再通过将更新模式参数设置为重新创建空切片(Python 中为 update_mode=“RECREATE_EMPTY_TILES”),来在同一缓存上重新运行该工具。其中update_mode选择RECREATE_EMPTY_TILES,则可开始创建切片,运行完该工具后,会有一个jobid,在Catalog中找到相应服务,右键>查看切片状态,切换到Job Status选项,即可看到切片的状态。
【5】.arcgis切片紧凑型_ArcGIS知识集:[4]ArcGIS切片规划
【6】.地理处理历史记录 请在分析功能区的地理处理组中,单击历史记录按钮

1.生成切片缓存切片方案

(1) 打开菜单栏Analysis->Tools -> 右侧打开 Geoprocessing。

(2) 选择 Data Management Tools (数据管理) -> Tile Cache -> Generate Tile Cache Tilling Scheme,打开方案创建工具。

(3) 针对需要的参数进行填入,可以选择要生成的比例级别。

参考文章:
【1】.切片缓存工具集概述 1.导出切片缓存:将切片从现有切片缓存导出到新切片缓存或切片包中。2.生成切片缓存切片方案:生成用于定义比例级别、切片尺寸以及其他切片缓存属性的 XML 切片方案文件。3.导入切片缓存:将切片从某个切片缓存导入另一个切片缓存。4.管理切片缓存:在现有切片缓存中创建和更新切片。
【2】.生成切片缓存切片方案 (数据管理) 可以通过对话框的形式和arcpy的形式进行数据切片

2.创建切片缓存

(1) 打开菜单栏Analysis->Tools -> 右侧打开 Geoprocessing。

(2) Data Management Tools -> Tile Cache -> Manage Tile Cache,打开缓存管理工具。

(3) 选择缓存存储位置,缓存名称、Manage Mode 、Input Data Source,选择 Input Tiling Scheme 为 import scheme,这样就可以选择自己刚刚创建的切片方案了。

优化参数之后,就可以执行切片了。

(4) 创建完成
经过43小时的切片,最后生成了 159G 的切片数据,从7级到20级。

参考文章:
【1】.管理切片缓存 (数据管理)

现有方案文件 (.xml) 的路径或从现有影像服务或地图服务中导入的切片方案。

3.创建地图服务器缓存 (服务器)

(1) 打开菜单栏Analysis->Tools -> 右侧打开 Geoprocessing

(2) Server Tools -> Caching -> Create Map Server Cache 工具,这个工具是使用的服务进行切片,也不是使用的tiff格式的数据进行的切片。

参考文章:
【1】.生成地图服务器缓存切片方案 (服务器)
【2】.创建地图服务器缓存 (服务器) 使用情况:1.此工具只适用于 ArcGIS Server 地图或影像服务。2.此工具只适用于 ArcGIS Enterprise 中的地图和影像图层以及 ArcGIS Server 中的地图和影像服务。3.栅格数据最适合使用 JPEG 或 MIXED 图像格式进行发布。 使用 JPEG 或 MIXED 格式的矢量地图时,应使用高压缩质量值(如 90),从而减轻线和文本的模糊程度。 也可使用 PNG 格式发布矢量数据。4.缓存一旦生成,就无法对缓存图像格式进行更改。 必须先删除缓存,然后才能将其切换到其他格式。

4.创建地图切片包(数据管理)

这个工具创建的是 .tpk 或者是 .tpkx 格式的文件。

(1) 打开菜单栏Analysis->Tools -> 右侧打开 Geoprocessing

(2) Data Management Tools -> Package -> Create Map Tile Package,创建地图切片包。

参考文章:
【1】.创建地图切片包
【2】..tpk格式文件简介
【3】.ArcGIS Pro 自定义矢量切片比例尺、级别

5.发布为Web图层

右键单击需要发布的图层,选择分享,选择发布为 WebLayer 图层,因为我这里是破解版本的,没有登录,于是这个 “Share As Web Layer” 是灰色的,无法选择。

参考文章:
【1】.在 ArcGIS Pro 中发布服务 在 ArcGIS Pro 中存在两种基础共享模型。 第一个模型将 Web 内容共享到活动门户,该门户可以是 ArcGIS Enterprise 门户或 ArcGIS Online。 第二个模型直接将服务发布到独立 ArcGIS Server 站点(不与门户联合的站点)。
【2】.发布影像服务

6.紧凑型 compact 切片

我发现就是切片切出来的不是 .bundle 和 .bundlx 文件,而是 .bundle 和 .bundle.done 文件。更加让我心寒的是,这个 .bundle.done 文件的大小,竟然是 0 字节,所以我这几天的切片都是白切了,根本就没有用。

【解决方案】
根据参考文章,在 10.3 及其以后,出现了 compactv2 版本,这个版本的 .bundlx 和 .bundle 文件进行了合并。

(1) 在紧凑型缓存的初始版本中(称为 compact),该格式也包含扩展名为 .bundlx 的单独索引文件。 当缓存托管在网络共享或云存储中时,包含的单独 .bundlx 文件会对性能产生负面影响,因此 10.3 版本中引入了第二个版本的紧凑型缓存 (compactv2)。 在目前创建缓存时默认使用的此版本中,.bundlx 文件包含在 .bundle 文件中。 此举可大幅减少客户端需要对缓存进行的调用次数,从而提升从网络共享或云存储中使用和提供缓存时的性能。

(2) 创建缓存时,可能会在缓存文件夹中看到临时 .lock 文件和 .done 文件。 .lock 文件使得 ArcGIS Server 能够追踪当前所创建的包;存在 .lock 文件并不代表客户端无法访问包。 同样,.done 文件使得 ArcGIS Server 能够追踪已经创建的包。 缓存工作完成后,所有的 .lock 和 .done 文件都会被删除。

(3) 如果要将运行 10.3 或更高版本的站点所生成的紧凑型缓存(采用 compactv2 格式)传输到运行 10.0 至 10.2.2 版本的站点,请使用 ArcGIS Pro 中的导出地图服务器缓存工具。 此工具在早期版本中生成紧凑型缓存(带有单独的 .bundlx 文件)。 然后,您可以将导出的缓存发送到收件人服务器站点。 您还可以使用此工具导出松散缓存,以供 10.0 及更早版本使用。

(4)经过长时间的尝试,竟然找到了缓存切片存储为 .bundlx 文件的解决方法,直接在切片的时候,就直接生成了.bundlx文件。在创建切片的时候,找到创建的切片方案文件,将其中的 esriMapCacheStorageModeCompactV2, 改为 esriMapCacheStorageModeCompact。

1
2
3
4
5
6
7
8
9
10
<!--修改前-->
<CacheStorageInfo xsi:type="typens:CacheStorageInfo">
<StorageFormat>esriMapCacheStorageModeCompactV2</StorageFormat>
<PacketSize>128</PacketSize>
</CacheStorageInfo>
<!--修改后-->
<CacheStorageInfo xsi:type="typens:CacheStorageInfo">
<StorageFormat>esriMapCacheStorageModeCompact</StorageFormat>
<PacketSize>128</PacketSize>
</CacheStorageInfo>

这样就可以直接生成带 .bundlx 文件的切片格式了。但是实际上在使用导出切片缓存工具的时候,还是会出现文件夹为空的情况,如果你存储的时候选择了 esriMapCacheStorageModeCompact 格式,那么导出的时候,就只能选择导出为 “紧凑型”,这样就可以在导出文件夹中查看到数据,并且格式还是原先的格式 “紧凑型“ 或者是 “紧凑型v2” ,导出为其他的类型,都是没有数据的。如果你存储为 esriMapCacheStorageModeCompactV2 版本,那么导出的切片类型中就只能选择 “紧凑型V2” ,结果文件夹中才会有数据,就算你改了存储格式,结果还是不会一样的。

参考文章:
【1】.紧凑缓存 ArcGIS Server的说明文档。这里有 .done文件和 .bundlx 文件的说明。紧凑型缓存的 compactv2 版本只能用于 ArcGIS Server 10.3 及更高版本。 该格式为开放规范。
【2】.复制缓存 需要借助工具进行低版本的缓存转换。
【3】.导出地图服务器缓存
【4】.无法浏览ArcMap10.6发布的缓存切片服务的解决 在切片数据中,找到的切片方案文件conf.xml,紧凑型文件的存储格式为esriMapCacheStorageModeCompact,而通过ARCMap10.6发布的是esriMapCacheStorageModeCompactV2类型,导致无法读取原始文件。缓存地图服务的缓存路径下,找到对应服务的切片方案文件,将esriMapCacheStorageModeCompactV2修改为esriMapCacheStorageModeCompact

问题

(1) No datum transformations are available between input data source spatial reference and tiling scheme spatial reference
这个问题就是说选择的数据格式,不适合选择的切片方案。

(2) 生成的切片文件夹为空
这个问题就是使用切片的方案进行切片的时候,总是生成空的文件夹,里面没有什么东西。

这个原因其实也很简单,就是其实在 ArcGIS Pro 中,虽然显示的是完成了,但是其实还是在不断的进行处理中,这个让我本来就非常的疑惑的,后来通过不断的查看才能弄清楚了这个东西,把鼠标放到文件夹上,文件夹的大小还是在不断的增长的,我确信还是没有运行完整个的切片,毕竟数据量还是挺大的。

还有就是虽然显示切片成功了,但是无法生成切片的内容,加载到地图中的切片,是一片空白的,文件夹也只有两个,只有08级和20级的文件夹,其他的文件夹都没有了。

【解决方案】
经过我不断的对并行因子进行调整,从 “空”,到 “6” 到 “100%”,到 “0” ,只有当并行因子为 “0” 的时候,才会出现的没有很快结束,程序在不断运行,不断进行切片的情况。

但是让我无法理解的就是,这个并行因子不应该是程序处理的线程数吗,为什么会出现导致程序最终结果运行不成功的问题呢?这个真是让人非常的疑惑。

参考文章:
【1】.关于ArcGis发布切片服务切片失败,切片率为0 1.转坐标系为web墨卡托包括数据框坐标。2.修改\directories\arcgiscache文件夹的权限信息,添加ArcGis登陆用户完全控制。3.发布不切片的服务。4.修改服务缓存部分,定义切片级别。5.先不选择按需创建切片,保存并重新启动后,查看切pain是否成功。6.不成功,点击按需创建切片,保存并重新启动。
【2】.ArcGIS Pro 2.1并行处理因子(环境设置)

(3) 一个或多个比例超出了最小和最大缓存比例范围
这个问题就是说配置的切片方案,有一部分超出了范围。这个问题也是让我非常的烦,就是明明我的切片方案是对的,但是就是无法进行,或者20级的切片文件夹总是空的。

【解决方法】
请更改管理切片缓存工具中的最小缓存比例和最大缓存比例参数值以包含输入中提供的所有比例。~~这是官方给的解决方案,但是我查看了原始的数据,之所以出现这样的结果,就是因为我原始数据大小是500G,但是经过栅格重投影之后,数据量急剧的减少了,只有180G了,自然在大的比例尺下,就无法生成切片了。~~

这个主要就是调整上面的最大和最小缓存比例就可以了。

参考文章:
【1】.001521: 一个或多个比例位于“最小缓存比例”和“最大缓存比例”范围之外 请更改管理切片缓存工具中的最小缓存比例和最大缓存比例参数值以包含输入中提供的所有比例。
【2】.影像和栅格数据的像素大小

(4) ERROR 001517: 无法对 影像 生成切片
由于以下原因,管理切片缓存工具未生成缓存:

  • 未在缓存目录中创建切片。
  • 出现数据访问问题。

【解决方案】
1.确保您对缓存目录具有写入访问权限。 确认存储缓存目录的磁盘具有足够的可用磁盘空间。

2.确保您对镶嵌数据集或地图文档的数据源具有读取权限。 如果正在通过 UNC 共享访问数据,请确保该共享仍然可用。 确认远程计算机的插头连接良好。

3.如果是通过数据库访问数据,确保数据库服务正常且处于运行中。

参考文章:
【1】.001517: 无法为 生成切片。

(5) 001473: 为以下比例导出缓存失败:<值>。
这是一个警告,指定比例的缓存可能不存在于输入切片缓存中。但是我还是遇到了,明明就是从缓存中直接导出的,结果还是显示不存在。

【解决方案】
导出切片缓存时,取消选中失败的比例级别。

参考文章:
【1】.为以下比例导出缓存失败

(4) 导出缓存为空
在我工具箱->数据管理工具->切片缓存,使用 “导出缓存工具” 进行切片格式转换的时候,结果虽然运行成功了,但是结果文件夹为空,这真是令人沮丧。

【尝试方案】
1.如果是导出切片包的时候,就会出现这个问题:Tiles may not be present at scale

2.我尝试了其他的方法,修改方案名称,只能导出 “紧凑型v2” 的切片格式,不能导出 “紧凑型” 的切片格式,这样在早期的 ArcGIS Server上就无法运行了。

【解决方案】
说是解决了导出缓存为空的问题,其实没有解决缓存为空的问题。我尝试了很多遍,总是不成功,但是我不断的尝试,不断的尝试,同样的操作,同样的参数,最后竟然有一次成功了,这就让我更加的郁闷了。我从 “紧凑型v2” 导出了 “紧凑型” 和 “松散型” 。

环境设置中的 “并行处理因子” 一定要设置为0 只有设置为 0,输出的文件夹才不会为空,这个问题我尝试了很久,算是解决了。

参考文章:
【1】.Cache tiles not present at determined scale 这里有说是使用整数进行配置。

3.ArcPy进行切片

(1) 管理切片
因为使用工具进行切片的时候,经过测试,并不能配置切片的 ”并行处理因子“,也就是一次只能一个进程处理切片,如果需要多几个进程进行切片,可能需要多个ArcPro进程,或者使用 工具代码进行切片。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25

import arcpy

## 缓存文件夹
folder = "C:/Workspace/CacheDatasets/Manage"
## 缓存模式
mode = "RECREATE_ALL_TILES"
## 在缓存位置中待创建的缓存数据集的名称
cacheName = "Test"
## 栅格数据集、镶嵌数据集或地图文档
dataSource = "C:/Workspace/Cache.gdb/md"
## 指定将使用的切片方案。
method = "IMPORT_SCHEME"
tilingScheme = "C:/Workspace/Schemes/Tilingscheme.xml"
scales = "16000;8000;4000;2000;1000"
areaofinterest = "#"
maxcellsize = "#"
mincachedscale = "8000"
maxcachedscale = "2000"
## 定义并行处理因子
arcpy.env.parallelProcessingFactor = "0"

arcpy.ManageTileCache_management(
folder, mode, cacheName, dataSource, method, tilingScheme,
scales, areaofinterest, maxcellsize, mincachedscale, maxcachedscale)

参考文章:
【1】.管理切片缓存 这里有简单的python代码。
【2】.并行处理因子(环境设置) 定义并行处理因子

(2) 多进程版本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import arcpy
from multiprocessing import Pool
import os


folder = r"F:/huancun"
mode = "RECREATE_EMPTY_TILES"
dataSource = r"F:/重投影/hangzhou.tif"
method = "IMPORT_SCHEME"
tilingScheme = r"F:/huancun/hangzhou.xml"
scales = ["4617149.7423495166","2308574.8711747583","1154287.4357975107","577143.7176886237","288571.85905444348","144285.92952722174","72142.964553479251",
"36071.482486871253","18035.741243435627","9017.870411586191","4508.9354159247168","2254.4677079623584","1127.2338539811792","563.61671685896795"]
mincachedscale = "4617149.7423495166"
maxcachedscale = "563.616716858968"

## 定义并行处理因子
arcpy.env.parallelProcessingFactor = "0"

# 子进程要执行的代码
def run_proc(cacheName,scale):
print('Run task %s (%s)...' % (cacheName, os.getpid()))
arcpy.ManageTileCache_management(
folder, mode, cacheName, dataSource, method, tilingScheme,
scale, mincachedscale, maxcachedscale)

if __name__=='__main__':
scaleCount=len(scales)
p=Pool(scaleCount)
for i in range(0, scaleCount):
cacheName= "HangZhou_"+str(i)
scale=scales[i]
p.apply_async(run_proc, args=(cacheName,scale))
print('Waiting for all subprocesses done...')
p.close()
p.join()

参考文章:
【1】.多进程

(2) 导出切片
理论上使用下面的方法就可以生成 “紧凑型” 的切片,但是结果并不如人意,主要就是因为无论怎么修改 storageFormat 存储格式,最后的结果文件中,都是原样保存了 原始的存储格式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import arcpy
## 定义并行处理因子
arcpy.env.parallelProcessingFactor = "0"

## 要导出的现有切片缓存
cacheSource = r"F:/huancun/hz"
## 要将切片缓存或切片包导出到其中的输出文件夹
cacheTarget = r"F:/huancun"
## 已导出的切片缓存或切片包的名称
cacheName = r"hzv1"
## 指定是将缓存导出为切片缓存还是切片包
cacheType = "TILE_CACHE"
## 确定切片的存储格式
storageFormat = "COMPACT"
## 比例
scales = "4617149.7423495166"


arcpy.ExportTileCache_management(cacheSource, cacheTarget, cacheName,
cacheType, storageFormat,scales)

参考文章:
【1】.导出切片缓存 ArcPro的设置
【2】.导出切片缓存 ArcMap的设置

4.其他工具切片

参考文章:
【1】.GIS数据处理-栅格切片工具 1.MapTiler:把 GDAL2Tiles 工具做了个图形化界面,使用更方便。暂时只支持栅格图片;2.Google Maps Image Cutter:顾名思义,基本上来说专门为Google Maps 提供Overlay的;3.MapCruncher:主要是为微软Bing Maps提供的切图工具。
【2】.GeoTIFF 切片小工具,解决栅格数据可视化数据量大问题 使用的是 rastertile 工具

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件(ititchuan@gmail.com)通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
ititchuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。