Openlayers + Python = tilecache 项目总结

摘要


一:海图矢量数据文件S57相关细节
二:配置 IIS6.0 + TileCache
三:发布WMS
      A、利用ARCGIS软件
      B、利用DEEGREE软件
四:EPSG 及 PROJ.4初探


详细内容

一: 海图文件

S-57把ISO/IEC 8211 国际标准(信息交换数据文件技要求)用封装数据的技术方法,通常后缀名“.000"。

二:配置IIS + TileCache 


TileCache: 用于缓存地图瓦片,即生成一系列PNG图片,用于快速记取地图图片。 
关于如何安装配置TileCache这方面的资料较多,可参考http://www.hmgis.cn/post/301.html 
具体步骤: 
1:安装Python ,并配置IIS使其能够解析Python脚本

“计算机管理”--“默认网站 属性”---“主目录”---“配置”---“添加”  ---"D:\Program Files\Python\python.exe" %s %s 扩展名为“.py"

2:下载TileCache,并将其布署在IIS上

3:利用IIS 管理脚本实用程序进行配置 cmd ---c:\inetpub\adminscripts 目录下
输入命令:

adsutil set w3wvc/AllowPathInfoForScriptMappings  True      

adsutil setw3svc/1/AllowPathInfoForScriptMappings True

      4:将安装的TileCahe文件目录下的 tileCache.cgi文件重命名为tileCache.py
      5:编辑TileCache.py文件 删除第一行代码:#!/user/bin/env python 将Service.Load的参数修改为tilecache.cfg的当前绝对路径
      6:新建Cache文件夹,并使其具“可写”权限,用于保存生成的瓦片集合
      7:编辑 tileCache.cfg文件
            [base]
            type=DiskCache
            base=新建用于保存瓦片集合文件夹的绝对路径(修改行)
            [basic] 指定的缓存图层名称
            type=WMSLayer
            url=WMS调用路径
            layers=指定WMS中的图层名称
            bbox= 显示的指定范围
      8:编辑tileCache文件夹下的index.html
            layer =new OpenLayers.Layer.WMS("新建的图层名称(任意)""tilecahe.py?",{layers:'与[basic]指定的缓存名一致', format:'image/png'})
      9:浏览index.html,如果可以调用到OpenLayers上WMS,说明配置正确,并可在新建的Cache文件夹中查看到缓存的瓦片集合
      10:使用python命令进行切割图片 Usage:tilecahe_seed.py <layer> [<zoom start><zoom stop>]

如:python “C:\Inetpub\wwwroot\tilecache\tilecache_seed.py”basic 0 2  

三:发布WMS


A、ARCGIS发布:
1:需安装ARCGIS SERVER + ARCGISDESTOP ,安装文件积很大,在5G左右,且需要license支持。

2:在ARCGISSERVER ,需用 ARCGISSOC用户,发布WMS;数据源为.mxd文件。
a:利用ARCGISSERVER发布WMS的数据源需要MXD文件,而ARCMAP不能读取S57类型文件,使用FME软件转换为SHP。利用ARCMAP将SHP文件保存为 MXD,用于发布WMS,在转化为MXD文件后发现ARCGIS并不支持S-52的标准显示,于是找到ENC FOR ARCGIS 9.3 plugin 用于支持S-52显示


b:ENCFOR ARCGIS 9.3 plugin 可以支持S-52的图标显示,从NOAA网站上下载的S57文件转化后的基,但物标符号与标准并不一致,再加之国内的S57文件不够标准,转化的图片基本不可用

c:至此,一周半的ARCGIS摸索就此终结,鉴于其为非开源软件,重新走上Deegree发布WMS之路。

B、DEEGRE发布WMS

利用DEEGREE发布WMS,主要步骤为:将地理图片集合(图片+头文件)利用RTB切分成金字塔形图片库,发布至WCS, 再通过WCS发布WMS。

1、准确地理图片集合,关键是是生成地理头文件。如果图片是JPG,那头文件为JGW,以此为例:

             LINE 1: 栅格图X方向每一个象素所占的纬度值

             LINE 2: 旋转度

             LINE 3: 旋转度(默认为0)

             LINE 4: 栅格图Y方向每一个象素所占的经度值*(-1)

             LINE 5: 左上角的经度值(即此区域内最小的经度值) 不限定使用何种EPSG,通常使用的是ESPG:4326即 WGS84

             LINE 6: 左上角的纬度值(即此区域内的最大的纬度值)

范例:

            0.00461334845906599

            0.000000

            0.000000

            -0.00462935397439714

            115.466666666667

            2.95

关于地理头文件的描述有多种描述,这只是其中一种,我测试正确的一种方式。检测地理头文件是否正确有一种简单方式, 即将生成的JPG文件拖放到ARCMAP中是否能够自动生成出金字塔的图片。

2、将生成的地理图片集合利用RTB切图,将其发布至WCS,配置XML文件发布WMS。

四、EPSG 与 PROJ.4          

EPSG 全称 Europen Petroleum Survey Group, 一个从事大地测量,测绘和制图的石油勘探,由欧洲石油行业专家组成的科学组织。

EPSG 4326 是一种常见的坐标系统,依据WGS84(经纬度)作为坐标点,以格林伪威治作为中央子午线。

WGS84:World Geodetic System 1984,是为全球定位系统使用而建立的坐标系统。

GB73:Nation Imagery and Mapping Agency(NIAA)为美国国防部建立的一个新的坐标系统。

PROJ.4 -CartographicProjections Library

我用到的命令行是CS2CS.EXE  用于实现EPSG之间坐标的转换。

语法参数为:CS2CS [-eEfIirstvwW [args ] ] [ +opts [=args]][+to [opts[=args]] file[s]

举例: 将EPSG 26912 转换成 EPSG 4326的命令行为:

 cs2cs-I +proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666666+lat_0=40.16666666666666 +lon_0=-74    
                  +x_0=300000+y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs  +to +proj=latlong+datum=WGS84
posted @ 2009-08-15 16:33  guzufeng  阅读(1794)  评论(0编辑  收藏  举报