Category Archives: GIS

地球共享网从apache web server到iis的移植

地球共享网从apache web server到iis的移植
tong# cngis.org
 
由于服务器资源有限,地球共享网西北分节点需与我们正开发的西部数据中心同处一个服务器,而西
部数据中心的开发团队熟悉iis,并打算使用 asp.net来开发。因此我们要做的,是将地球共享网从原
来的apache环境移植到win2k3/iis。
1. 移去apache server
2. 将jdk 1.4.2_06移去,升级成jdk 1.4.2_08(这是由于西部数据中心采用的arcims server要求至
少是08以上),jsr升级到 update 6
 
3.0 备份 原tomcat下的webapps/ROOT目录下内容(由于定制主页更改过)。保留c:subCenter目录不
变。
3.1 移去 tomcat 5.0,升级成tomcat 5.5,其中jsr选定最新的 jsr 1.5.0.60(即update 6),安装
成service
3.2 将5.5下的webapps/ROOT改名为tomcat-ROOT,将3.0备份的ROOT全部移进 webapps目录下
 
4. 安装iis 6
5. 新建站点 westdc.geodata.cn,将端口号改为 8087,以后westdc.geodata.cn将通过 8087进行访问,而西部数据中心占用原有的80端口。新站点可以指向任何地方,在实际运行时,通过 jk2导至
tomcat的root目录下。我使用了 wwwroot目录。
 
6. 从tomcat.apache.org下载jakarta-tomcat-connectors-jk2.0.4-win32-IIS.zip(使用了jk2——
由于它的配置复杂,已经不被tomcat官方支持——是由于jk2支持不同端口的uri映射,如6.2
workers2.properties [uri:*:8087/*]所示,至少现在我不知道如何使用jk来达到同样的目的)
6.1 将zip包里的 isapi_redirector2.dll和install4iis.js 复制到 tomcat 5.5的bin目录下
6.2 将 tomcat 5.5/conf下的 workers2.properties改成 workers2.properties-bak,创建新的
workers2.properties,内容如下:
[channel.socket:localhost:8009]
port=8009
host=127.0.0.1
 
[ajp13:localhost:8009]
channel=channel.socket:localhost:8009
 
[uri:*:8087/*]
worker=ajp13:localhost:8009
[uri:/tomcat-docs/*]
worker=ajp13:localhost:8009
 
7. 将westdc.geodata.cn网站暂时改名为 Default Web Site,然后cmd进入命令窗口,cd到 tomcat
5.5/bin下,执行cscript install4iis.js,将为 jk2创建必要的配置。将Default Web Site重新改回
westdc.geodata.cn。(我测试的时候,使用了 install4iis.js -s命令指定网站名,没有成功,所以
使用其缺少的网站名,创建可以成功)。创建结束后请检查如下内容:
7.1 注册表项应包括如下内容:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINESOFTWAREApache Software FoundationJakarta Isapi Redirector2.0]
"extensionUri"="/jakarta/isapi_redirector2.dll"
"serverRoot"="C:Program FilesApache Software FoundationTomcat 5.5"
"workersFile"="C:Program FilesApache Software FoundationTomcat 5.5
confworkers2.properties"
"authComplete"="0"
"threadPool"="20"
(路径根据 tomcat所在目录不同可能不同)
7.2 在westdc.geodata.cn的属性isapi tab里应该加了 一项指向 isapi_redirector2.dll条目,名字
可以随便,比如 Jakarta Filter等
7.3 在westdc.geodata.cn下创建了一个名为 jakarta的虚拟目录,权限为脚本和可执行
7.4 在iis 6里的服务扩展里添加了 isapi_redirector2.dll,命名任意
 
8. 打开C:Program FilesApache Software FoundationTomcat 5.5webappsROOTWEB-INFclassesconfsecInfo.xml,将里面的原先的 本机ip改成 ip:8087字样
 
9. 在tomcat 5.5 /conf下的 server.xml里的 localhost Host下,添加:
 <Context path="/DCenterWebService" docBase="C:subCenterDCenterWebService" />
  
 <Context path="/Metadata" docBase="C:subCenterWebShare" />
 <Context path="/Manage" docBase="C:subCenterDataCenterM" />
 
10. 重启www服务
11. 检查 http://localhost:8087,应该已经搞定,iis从8087上收到的request会被redirect到 tomcat的 8009执行
 
12. 西部数据中心也加载了isapi_redirector2.dll(由于西部数据中心将采用arcims,而arcims是需要 jsp的支持),现在使用 80端口,且 localhost/tomcat-docs 也会被redirect tomcat下面。所以,如果没有 jk2根据端口的pattern match,那么来自任何端口的虚拟server的根目录都会被重定位到 westdc.geodata.cn下,这不是我们想要的。

arcims .net link的几种方式

至少有三种方式可以实现:
1. 通过servlet,asp.net其实是生成了servlet的url get串所需的参数。网上可以找
到一个例子,.net primer的实现就是基于这种方式。效率可能有点低。
2. arcims自身提供的.net link dll,链接进vs project refences。未在asp.net 2下
测试,未必与2.0兼容。
3. 一个意大利人开发的 .net connector 2.14,他自称是支持asp.net 2,刚才用对象
查看器检查了一下,发现对image service等几个有比较好的支持,已经实现了一些便
利的比如取得地图等方法。缺少文档,仅有的一点也是意大利文,metadata没有实现的
支持,但可通过sendrequesttoservice方法来进行get_metadata和 publish_metadata

Unable to create ArcIMS metadata service

arcims 9 + sql 2k
在创建metadata service前一定要注意先配置sql 2k,为了支持xml column,需要创建
fulltext catalog,默认是 SDE_DEFAULT_CAT;如果忘了这个次序,立刻创建meta
service,可能就遇到我最近遇上的问题,花了整整一天的时间来解决问题,
administrator会提示缺少xml column,这时就想起来要去配置 全文目录,在sde数据
库里配置后,再到administrator,发现提示 unable to connect the database错误。
但image service等都是好的。message console则提示 sde connection broken等。
搜索网上没有好的解决方案。
一个笨办法,重新arcims post installation一次,可以通过custom选项,去掉
connector的配置,这样可以省掉又要重新配置 esri_mapprop

[转]ArcIMS Spatial Servers are not available?

 
arcims卸载再重装之后,在Administrator中 login 时,出现[WRN0402] ArcIMS Spatial Servers are not available on one or more machines这样的警告!
原因:以前的一些配置实例没有彻底删除!
解决办法: 
  1. 进入 Administrator移除 associated services and server instances
  2. 执行:
    1. java com.esri.aims.admincore.cmd.Exec <machine name> <admin username> <admin password> cmd REMOVEUNAVAILABLEMONITORS
    2. java com.esri.aims.admincore.cmd.Exec <machine name> <admin username> <admin password> cmd SAVE
  3. 注意 <machine name>是 http://localhost 格式

arcgis的iso, fgdc标准的xml实现

昨天一直在考虑如果在iso 19115的基础上扩展生态元数据的问题。突然想到是否可以
看看esri是如何统一iso和fgdc的标准,一看吓一跳。esir的iso和fgdc标准其实是实现
在同一个xml里,换句话说这个xml里既包括了iso的要素,也包括了fgdc的要素。
catalog提供的iso editor和fgdc editor其实只是一个界面,生成的并非是独立的fgdc
或iso。比如用iso editor生成一个abstract,是放在这个xml的某要素下面,再用fgdc
editor生成一个fgdc的abstract(fgdc的要素有更高的优先级,比如iso和fgdc都具备
了一个title,你要搜索title的时候,metadata service返回给你的是fgdc的title;
当然如果查询是使用了TAG xpath方式,则返回对应tag下的内容,不存在优先级的问
题),也在放在同一个xml里,不过就是用了不同的element。郁闷,esri居然用了这样
一个四不像的xml组织方式。而且esri没有提供iso xml的parser或import/export的功
能。
看来我们也只能接下去对这个四不像的esri profile of FGDC,进行扩展了。本来还想
着应该是生成一个比较标准的fgdc或iso xml呢!

关于ArcCatalog里的iso和fgdc元数据标准的一些要点

1. If you are exclusively adding documentation using the ISO metadata
metadata editor and you will be publishing your metadata to an ArcIMS
Metadata Service, you must turn off the FGDC synchronizer and the Geography
Network synchronizer and remove all FGDC XML elements from the metadata.
2. To remove FGDC information from the metadata, you can use a VBA script
that is available with the ArcGIS Desktop Developer Kit and from ArcGIS
Developer Online at Samples > Metadata
3. ArcCatalog的验证的五项,其实是为Metadata Explorer服务的,并不元数据标准的
验证
4. ArcCatalog的Synchronizer(3种,包括iso, fgdc, geography network)是通过增
加xml elements的Sync="TRUE" or "FALSE"来实现的
5.在搜索的时候,FGDC的elements先被搜索,对应的iso elements不会被搜索到(只有
在对应的FGDC elments缺省的情况下才可能被搜索到),所以一定要记得做iso
metadata的时候,将fgdc的关闭掉
6. 很多州和地方根据FGDC CSDGM制定自己的专规(Profile),如the European
Committee for Standardization,和 the Australia New Zealand Land information
Council (ANZLIC)等
7. FGDC最终会采用 ISO 19139(19115的实施方案)来代替CSDGM
8. 可以定制 synchronizer,创建新的 stylesheets,自己的metadata editors
9. ArcCatalog实际上在一份XML里维护了FGDC和ISO两套标准,还支持扩展。而这整个
XML在publish的时候要放到sde的metadata的xml column里

元数据iso与国标的比较

1. 国标在iso的基础上,增加了MD_ImageIdentification specific class,其下包括
数据单元标识符 ,卫星,仪器,时间标识,分幅标识,和轨道编号。详见国家元数据
标准2.pdf
2. iso的Representative fraction information在国标里用string替代了
MD_RepresentativeFraction class
3. 国标里的数据质量,数据志(lineage)做了极大的简化,感觉不是很好
4. 国标里的投影一些必要的参数也没有,不完善
5. 在contentinfo package里的MD_ImageDescription只包括了cloud cover
percentage,国标的简化 可能不满足实际的需要
6. 国标里的citation datatype被很大程度简化
7. 国标根据中国情况,特化了大地坐标参照系,包括54北京,80西安等,和垂向坐标
参照系,如黄海 高程基准等
8. 在MD_字符集代码里增加了“GB18030”,域代码为030
9. B.5.11改成 未分级,秘密,机密和绝密
10. B.5.18增加按旬,代码013
更详细的对比见iso pdf的批注。总体感觉,该版本的国标草稿简化了一些应该说是很
有必要的信息(特别是投影信息,和数据质量信 息等),不一定是好事情。新增加的
codeList的elements是不错的补充。

Gdal v1.13

默认的Gdal 1.13 submake.bat utility是执行/MD,而默认启来的vc 7.1项目的debug
下是/MDd,这时可能在GDALClose()时会出现异常。可以不理,也可以将/MDd改成 /MD
另外,如果要更改Gdal的编译选项,在Gdal 1.13下找到 nmake.opt,更改对应选项即

Gdal与Qt的连接,暂时还有一个问题没有解决,即在Gdal回call自己的
GDALProcessFunc(一个函数指针,原型是typedef int (CPL_STDCALL
*GDALProgressFunc)(double,const char *, void *);)时,如何将c++类里的
function赋给这个函数指针);目前只能在全局level上才能回call,但这样就不能使
用Qt强大的emit功能了。

ArcIMS 9 with Tomcat 5 安装的一个补充

作为对以前那个ArcIMS 9安装的一个补充,
按以上步骤完成后,执行诊断不能通过(提示找不到页),别担心,
在tomcat菜单下找到 tomcat manager,进去后,点击  application list,看/servlet是否已经起来,如果起来就是正确的。另一个检查的法子是,在ie里键入 http://localhost:8080/servlet/是否好用,如果好用证明tomcat安装正确了,只是redirector没有起作用。
 
打开 redirector下的conf (我的位置是 C:Program FilesApacheJakarta Isapi Redirectorconf),找到 uriworkermap.properties,打开,添加 /servlet/*=wlb
保存,重启 tomcat (?,可能不是必需),重启 iis admin service,和www publishing service
再试你的diagnoise,看test 1和2是否好了!