ArcIMS架构

1. ArcIMS架构包括Presentation Tier, Business Logic Tier, Data Tier。 还提供
了一些管理应用程序来管理Business logic tier。

2. ArcIMS工作于Java环境。 运行ArcIMS还包括一个Web server, Java VM,和servlet
engine。servlet engine是Java VM的扩展,建立Java VM和Web server间的连接

3. Business Logic Tier包括Application Server Connectors, ArcIMS Application
Server, 和ArcIMS Spatial Server。Connectors在Web Server和Application Server
间建立连接。在Business logic tier间的通讯通过ArcXML。
3.1 Application Server只接收ArcXML格式的请求。因此connectors的作用就是将直接
ArcXML请求(ArcIMS servlet connector)递交到application server、或从
coldFusion、ASP、.NET、JSP(ColdFusion connector, activex connector, .net
link, java connector)形成ArcXML然后再递交到application server
3.2 ArcIMS Servlet Connector是默认的connector,用于将客户端产生(如Html
Viewer)的ArcXML递交到application server。arcims servlet connector还包括一个
wms connector,允许兼容于wms的客户端可以访问arcims服务
3.3 使用java的connectors(arcims servlet connector和java connector)必须在底
层使用servlet engine,以在web server和java vm间建立关系
3.4 spatial server包括image server, feature server, query server, extract
server, geocode server和metadata server(此6个server可以共存于一个spatial
server上),以及arcmap server(一个spatial server只能存在一个arcmap
server)。前6个server接收arcxml请求,arcmap server接收arcmap mxd文档。
3.5 spatail server的实例(instance)和service。一个实例可以认为是一个线程。除
arcmap server,其它server默认情况下启动2个instances。arcmap server由两个
spatial server启动,一个spatial server只能启动一个arcmap server。arcims提供
四种service,即image service, feature service, metadata service, 和arcmap
image service。每个service由一个或多个server共同完成。
3.6 在一个arcims站点上,可以有多个spatial server,可以在一台机器上,也可以分
布在不同机器。在管理的时候,多个spatial server上的各种server type实际上形成
虚拟的server type,由applicaiton server来具体管理这些虚拟的server type是如何
对应到实际的server type上去。

4 arcims可以使用arcsde 作为后台的数据库。在通常情况下,到arcsde的连接等于
instances的数目。比如,如果只有一个spatial server,默认情况下建立一个image
service,将建立2个image server instances和2个query server instances, 这时到
arcsde的连接数等于4。如果部署了2个spatial server,这时一个image service到
arcsde的连接数等于8。但当再建立一个image service的时候,arcims会重用已有这些
的instances和已有的相同连接。
4.1 arcims到arcsde的连接可以是无限的,不受限于arcsde的license限制。但arcims
也支持连接的pooling,以提高连接效率。

5 表示层。HTML viewer, Java viewer(包括可定制和不可定制两种), 使用各种
connector定制的viewers.

关于swig和boost

刚听冯m讲过这两个东西,以前都不知道,孤陋寡闻了。swig可将c/c++的代码转换成如
python, tck等脚本,也可以转换成c#等代码。据说象gdal就是通过swig将原有代码转
换成.net代码的。boost是一套c++库,看起来好象有包含了很强大的功能。

基金委

昨天(5.11)在基金委送材料的时候,碰到张lx老师了,打了个招呼,但他有急事,没
聊上话就离开了,真是遗憾。真是特别感激他以前给我的帮忙,总在感觉对不起他。

没有啥事的话,我今天就坐回兰州的最后一个航班回兰州了,干呆在等那边的消息也不
是办法,按想应当没有啥大的问题了,而且计划书的电子版已经给肖老师发过去了。最
主要的是后面盖章的那页已经给了,其它的页面即便需要改动,也可以在电子版上改了
后,再打印就好。

五一一回来就又忙乎开了

数据中心的事还没开展开,基金委又让交计划书了,又向北京跑了一趟,原来以往我们
都整错了。
人员是个很大的问题,现在主要的问题是缺人,有项目了让谁做呀,做gis其实是种劳
动密集型的工作。而且来人后整个工资待遇也成问题,主要是不能给别人位置,没法子
安定人心,而且除了这么点钱,再没有任何东西了,比如奖金,比如福利,比如保险等
等等。站在他人的位置上,咱们都得理解。赞同小吴讲的,能做的也是趁现在项目上还
有点点钱,能给大家多少就给多少,争取不能亏了大家。
而且,更可怕的是,即便找下人了,一下子很难让人马上就能上手做东西,毕竟我们做
的都是别人没有做过的,我们也是一边摸索一边做。这样给人掏工资,最怕就是等人稍
一上手了(也许已经是一年后了),就想着走人,真是亏大了,倒不是怕这个钱给亏
了,主要是整个项目的进度都会受到很大影响。

五一回丈人家一趟

已经很长时间没有在夏天的时候回南方了,那绿色也久违了。
看到门前的一片绿色,呼吸着清新的空气,暂时将自己周边的事情先搁置一下,心情真
是不错,尽管这些天被朵朵的水土不服整的心情有点烦燥。
朵朵又要打针了,真是担心,我特别不赞同动不动就打针,而且对于农村里的医生,真
是没有一点信心,老担心出点啥问题就糟糕了。
这次五一怎么跑出来玩了,有空了?回来后老有人问。虱子多了不痒,事情永远是做不
完的。还为要做的项目犯愁呢,哪有空,但不出去换换心情,老呆着也未必就能有更高
的效率。

关于qt国际化

qt对国际化有很好的支持。但默认的是unicode编码。中文系统下默认的并非unicode,
而是比如gbk或gb2312。所以在进行const char*参数传递和显示时必须特别注意。
比如在默认情况下
QMessageBox::information(this, "Test", "这是一个测试");
中文字符无法正确显式
又如
bool connect(const char * connectString);
你如果输入
QString str("一个测试");
connect((const char*)str);
默认是调用QString.latin1()方法,是直接从Unicode的QString返回latin-1字符表示
集。在中文系统下有时不是你想要的。
解决方案:在main.cpp里增加
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
这时涉及到QString/QCString到const char*的转换将使用本地的编码集。
类似的还有setCodecForTr()方法。

NOTE: 这跟qt使用unicode进行内部通讯、显示并不冲突。当显示一个const char*时,
qt会将const char*再行转成unicode。

win server 2003下windows程序安装不了的问题

给程老师安装biblioscape的时候(windows server 2003 enterprise edition英文系
统),发现双击安装文件,提示类似c:windowssystem32autoexec.nt. The system
file is not suitable for running MS-DOS and Microsoft Windows applications.
Choose "Close" to terminate the application. 无论半击Close还是Ignore,安装无
法进行。
以前没遇到过。后来搜索了一下c盘上的autoexec.nt,发现在repaire目录下有一
autoexec.nt,将之拷贝到c:windowssystem32以面。再双击安装,正常通过。
这应该是以前误删除autoexec.nt造成的。

Migrating TerraLib 3.0 from vc6 to vc7.1

TerraLib 3源代码里提供了vc6的项目文件,在vc7里编译通不过。需要做一些更改:
1. STLport 4.x不支持vc 7,需要从stlport网站下载最新的5.0 rc2(现时),编译成static library后,将include文件和library都替换成5.0的
2. vc6项目里的include列表需要重新设置,去掉不必要的,用分号(;)分开
3. 将TeGeosWrapper.cpp/.h从项目里去掉,它们需要geos.h,在terralib 3里没有包括这个头文件
4. 在checkvec.h里的
     typedef typename checkedVector::size_type size_type;
     typedef typename checkedVector::iterator iterator;
     typedef typename checkedVector::difference_type difference_type;
     typedef typename checkedVector::reference reference;
     typedef typename checkedVector::const_reference const_reference;
注释掉,否则将提示“fatal error C1202: 递归类型或函数依赖项上下文太复杂”。
5. 再编译通过。连接的问题还没涉及到,遇到再描述。

积温内插算法

积温内插算法断续做了1个多月,终以失败告终。科研是允许失败的,只能这样安慰自
己。
事情太多,头绪太乱,有点找不着感觉了。象小冉讲的,很少能睡个安稳觉,梦里也总
是还萦绕着白天的事情。