惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
V
V2EX
Cloudbric
Cloudbric
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
量子位
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
K
Kaspersky official blog
博客园 - 【当耐特】
T
Tenable Blog
L
Lohrmann on Cybersecurity
The Cloudflare Blog
S
Schneier on Security
A
Arctic Wolf
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
雷峰网
雷峰网
NISL@THU
NISL@THU
人人都是产品经理
人人都是产品经理
月光博客
月光博客
J
Java Code Geeks
V
Visual Studio Blog
S
Security Affairs
博客园 - Franky
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
T
Troy Hunt's Blog
SecWiki News
SecWiki News
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 聂微东

博客园 - GIS小能

利用Simplify进行ArcGIS Server多面合并查询 关于Flex Ant的相关注意事项 ArcGIS KeyGen注册机,五步操作实现ArcGIS9.X与ArcGIS10全模块无时限破解(转载:我是一只牛) Flex开发必知(1) ArcGIS Server 10 问题汇总 ArcGIS Server 10 许可文件 Ecp 基于flex及SVG技术打造交互式地图(数据篇) 将应用程序从Flex 3迁移至Flex 4(转载) ArcGIS 10 破解安装(desktop及ArcGIS Server 10) 基于Geoserver配置多图层地图以及利用uDig来进行样式配置 胡说八道--mate flex 优化原则 flex与flash交互详解 flex调用WMS远程图片所产生安全错误 loder导致的安全沙箱的2122错误 flex一周精选(20100308) 解析MapBar兴趣点加载原理 Flex一周精选(20100301) 浅谈Image和Bitmap
基于ArcGIS Server 10 在flex瓦片客户端叠加瓦片服务
GIS小能 · 2010-10-21 · via 博客园 - GIS小能

1. ArcGIS Server 10 缓存机制

昨天用了ArcGIS 10的时候才发现ArcGIS Server 10引入了新的地图缓存格式,其目的是使得其实用和迁移更加方便。在定义缓存的tiling scheme时,现在可以选择Exploded或者Compact两种格式。

clip_image002

以下信息截取自http://www.gisall.com

Exploded是以前版本ArcGIS Server中的缓存格式,也就是每个tile以一个单独图片文件来存储。

Compact 是AGS10中的新格式。它并不是将缓存文件进行打包或压缩,而是将它们拼装成更大的bundles格式的文件。一个bundle文件最多可以存储16,000个tile。这样就能大大介绍缓存文件夹中文件的个数。如此便能提高缓存的拷贝速度,尤其适用于在一台服务器上生成缓存之后,需要将其迁移到另一台生产服务器上的情景。

compact存储格式还有一个优点,就是不会浪费磁盘空间。windows平台默认情况下,一个文件最少占用4KB磁盘空间(由簇大小决定),不足4KB的文件则会出现浪费情况。对于传统的地图缓存格式,往往有成千上万个图片文件,此时查看文件夹“大小”和“占用空间”可以发现,后者比前者要大许多,多出来的部分即是空间浪费。 采用compact格式后,缓存文件夹的“大小”和“占用空间”基本一致,因为每个bundle文件浪费的磁盘空间不会超过4KB,而bundle文件的个数比采用传统缓存格式的图片文件个数要少得多。

ArcGIS客户端,包括Web API,知道如何读取compact格式的bundle文件。如果你需要自己利用代码从virtual directory中取出tile文件,那么你只能继续使用传统的exploded格式。因为目前没有开放bundle文件格式的读取办法。

2. ArcGIS 瓦片服务准备

1、制作mxd文档;

2、利用arcgis server manager 或者Catalog来发布服务,并生成相关切片;

具体如何 发布服务和瓦片的切图就不回顾了,但我在使用过程中还是出了一些问题, 建立了地图缓存服务, 使用Titled显示地图服务,运行程序的时候提示“Error: E0005E: Invalid tile service”,在网上搜索了一下,给出了答案:

1、在地址栏键入URL: http://<host>:8399/arcgis/rest/admin

注意,如果是.NET Server请键入URL:http://<host>/arcgis/rest/admin

2、在登陆框中键入用户名和密码,该用户名和密码,与ArcGis Server Manager 登陆的账户一样。

3、进去之后,找到“Clear Cache Now” 这个超链接,点击即可。

这三个步骤进行之后,重新切片。客户端正常运行。

3. 自定义flex客户端叠加ArcGIS Server瓦片

叠加ArcGIS的瓦片从原理上分析应该有两种方法:

1、 直接将客户端瓦片地址发布,不经过服务端中转而直接请求瓦片;

2、 根据相关规则请求瓦片至ArcGIS Server服务端,叠加相关瓦片。

下面对第2种方法大体进行一下描述:

在flex中,如何在自已的客户端对ArcIGS Server进行图层叠加呢,其实从原理上来讲,就是两个Canvas的叠加,其中一个Canvas装载的是ArcGIS Server的瓦片,另外一个装载的是我们自己的瓦片,其中ArcGIS Server的瓦片作为底图加载至下面,而我们的瓦片则是透明的图层,这样,两者就能完全的结合起来。那这两者结合的最关键的地方就是两者的位置统一,那么在指定的地图范围以及指定的屏幕大小(即Canvas的大小)加载ArcGis Server的步骤应该是由以下几步组成:

(1)首先根据http://服务地址?f=json 获取相关参数,这个参数主要包括切片大小、起始点坐标、切片的级别;

(2)根据给定的地图范围判断当前应该显示哪个级别的图片,这个涉及到一点算法,主要就是经过一个遍历,循环读取上面获取的切片级别代码的实际长度,看看哪个级别最为符合即可,这样你就可以知道下面应该在哪个级别来获取图片了,在这一步中,就可以算出当前起始点的左上角的图片的获取地址了,比如:

http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer/tile/3/1/2

(3)计算相关的偏移量,这个也容易理解,以上图的图片为例,因为此瓦片的左上角坐标并不一定与我们给定的地图范围重点,因此,要经过一定的偏移,使地图的左上角与指定的地图坐标相重合,具体的算法我就不介绍了。

但有一点,我在叠加两个来自不同地方的瓦片的时候会存在有一定的偏差,也就是说两个相同的图层,经切片后,不能完全吻合在一起,但所幸,这种偏差是线性的,所以可以人为的适当调整。