2005年12月27日星期二

探访“集思学院”

在搜索mapserver与ArcIMS的对比资料时发现了集思学院,人气不是太旺但气氛挺好。
注册了用户,在首页也看到了我的用户名,却不知怎得登录不了。:(
获益有二:
一位老兄贴出了用ka-Map制作的站点,其中类似google map中overlay的效果gograss
目前在考虑的,不知是如何实现的,由于不能登录也无法请教楼主;
看到大家对GRASS的热情,顺便去GRASS网站瞄了瞄,有点喜欢它了,毕竟是有“悠久历史”的开源GIS软件。

2005年12月25日星期日

安装MapServer和ka-Map

四个光光凑钱买了瓶好酒和吃食,混过了平安夜。
节日不属于我,但假期属于我,我要好好享受这能够自由支配的时间。:)

在Linux上安装MapServer,可以使用MapServer站点提供的源码进行编译,可以使用RPM包,但最方便最舒服的方法是使用FGS。
MapTools站点下载FGS安装包
运行命令(sh fgs-***.bin),开始安装,选择安装目录(/usr/local/fgs)和端口(8000),解压完毕;
提示信息很友好,安装完毕后介绍如何在机器启动时自动运行服务、如何设置环境变量;
按照提示运行命令echo ". /usr/local/fgs/setenv.sh" >> ~/.bashrc,这样每次启动时自动设置环境变量;
测试,打开页面http://localhost:8000/gmap-demo/,正常。

从MapTools站点下载ka-Map包
解压后将ka-map主目录及其下内容拷贝到FGS应用程序目录下(如/usr/local/fgs/apps/ka-map-0.1.1);
在/usr/local/fgs/www/conf.d目录下创建ka-map应用程序的配置文件ka-map.conf,仿照gmap-demo.conf,定义ka-map应用程序的虚拟路径和实际路径的映射;
重启fgs (fgs stop & fgs start),打开页面http://localhost:8000/ka-map/,错误“unable to load dynamic library /usr/local/fgs/www/lib/php4/php_mapscript_46.so”;
查看/usr/local/fgs/www/lib/php4目录发现只有4.4.1版本的库和两个链接,打开ka-map的配置文件configure.php,修改$szPHPMapScriptModule变量值;
再打开页面http://localhost:8000/ka-map/,OK!

当前MapTools站点提供的ka-Map包是0.1.1release版,此版本中很多脚本都集中在index.html文件,缺乏模块化,理想状态应该是开发为Google Maps API的全接口状态;
用CVS获取ka-Map的最新开发版本可看出,ka-Map正在向模块化、接口化方向发展;
运行命令(
export CVSROOT=:pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot
cvs checkout ka-map
)检出ka-Map的CVS开发版本。

2005年12月22日星期四

XML技术教程阅读所得

W3Schools上有一系列XML相关技术的入门教程,Excellent!
从中学到了不少东西。

XML Tutorial
“XML is a cross-platform, software and hardware independent tool for transmitting information.“
CR(carriage return)和LF(line feed)来源于早期打字机的操作,不同平台的行结束符不同,Windows是CR+LF,UNIX是LF,Mac是CR,XML中使用LF;
属性值可以用单引号或双引号括起来,以处理属性值中包含引号的情形;
格式书写正确的XML文档称为“well formed”,遵循某一个DTD或XSD规则的XML称为“valid”;
命名空间的来历是用前缀区别元素,缺省命名空间是xmlns;
为了避免编码错误,需要使得XML文档保存的编码和文档中指定的编码一致;
能够通过关联CSS或XSLT文档确定XML文档的表现方式。

XHTML Tutorial
遵照XML的语法约定来规范HTML的结果;
文档头部要关联XHTML的DTD约定;
所有标签使用小写字母;
所有标签都要封闭,都要正确嵌套;
目标是取代HTML。

XML DOM Tutorial
“The W3C DOM provides a standard set of objects for representing HTML and XML documents, and a standard interface for accessing and manipulating them.”
分为core dom、xml dom、html dom三部分和level 1、2、3三个层次;
不同浏览器所附带的XML解析器对DOM的支持和使用方法不同。

XSL(XSLT XPath XSL-FO):
CSS是HTML样式表单,XSL是XML样式表单;
XSL包含XSLT、XPath、XSL-FO三部分;
XSLT定义了语句结构,结合XPath的表达式,将XML文档转化成其他的XML文档或HTML文档;
XPath定义了遍历XML文档元素和属性的算子、表达式和语法;
XSL-FO是描述XML文档输出(屏幕、文本、打印机等)的表现形式的语言;
XSL-FO结合XSLT使用能将XSL-FO代码与XML内容剥离;
符合XSL-FO标准似乎也应当是报表系统的未来?很多XSL-FO处理软件基于Apache FOP

XML Schema Tutorial
将取代DTD,因为它用XML写成,易扩展,支持数据类型和命名空间。

XQuery Tutorial
“XQuery is to XML what SQL is to database tables.“
建立在XPath的基础上。

Linking in XML
XML中的链接分为XLink和XPointer两部分;
XLink定义了在XML中创建超链接的标准方法(相当于a),XPointer定义了如何让超链接指向XML文档中的确切位置(相当于锚标);
除了常见的两端链接,XLink还定义了多端链接。

RDF Tutorial
语义Web的一部分;
设计目标是使机器能够阅读、理解所描述的内容;
使用属性和属性值来描述资源,用URI定位资源;
RDF Schema是RDF的扩展,定义了构建应用相关类和属性的框架,它定义的类与OO中的类相似;
RDF是元数据,Dublin Core是一组描述文档的预定义属性;
OWL建立在RDF之上,用于描述Web信息及其之间的联系,与RDF有许多共通的性质但具有更丰富的词汇表和更强的语法,更易于被机器理解,也是语义Web的一部分。

SMIL Tutorial
SMIL是一个同步多媒体整合语言;
包括多媒体内容的布局、播放顺序和时间、状态转变;
IE5.5+支持,Firefox还不支持。

SVG Tutorial
可以使用embed或object标签将svg嵌入HTML页面,但embed不能被XHTML支持,object又不能支持脚本,使用iframe能被大多数浏览器支持;
Firefox还不能支持SVG的脚本编程(SVG与外部脚本的交互)、动画、filter,IE+AVS都能支持。

2005年12月19日星期一

关于WMS/WFS等的实现

Refractions使用Google Web API检索方法,给出了调查已实现的各种服务的白皮书

希望实现WMS/WFS/WCS、WMC等规范完全兼容的服务组。
MapServer过于复杂,并且用CGI实现,如果应用系统不用CGI实现的话(比如servlet),势必要求Web地图服务和应用相关服务独立部署;
GeoServer用Java实现了WFS/WMS;
SimpleMapServer,需要支持多种数据源,需要输出SVG
Batik,实现SVG的解析和生成的Java库;

客户端
quickWMS,需要增加PAN动作,对getCapability的支持(版本和图层),平滑显示
ka-Map,需要模块化,需要脱离MapServer支持标准WMS
借鉴google map API
Map Builder实现了WMC
要实现复杂地图应用,需要SVG

客户端,基本熟悉了quickWMS,增加了PAN动作,TO-DO:
  1. GetCapabilities的请求与解析(XML)
  2. 根据图层的SRS和BBOX确定图层是否可以在同一个视图显示
  3. 根据图层所支持的返回格式确定要采用的浏览组件
找一些Free Data用于开发测试:(如Frida
svg客户端的例子songsvg
能够返回svg格式的WMS:mapserver geotools deegree geoserver?
Firefox SVG 相关文档

2005年12月18日星期日

安装PostGIS

下载PostGIS,解压到PostgreSQL源码中的contrib目录中
下载Proj4,编译安装,默认安装在/usr/local
由于安装GEOS需要链接C++库编译PostgreSQL,麻烦,暂时不装
修改PostGIS目录中的Makefile.config,将USE_PROJ设置为1
在PostGIS目录下make & make install
su登录为postgres用户,
启动PostgreSQL数据库服务,
creatlang plpgsql *** (***是你要为之安装PL/pgSQL过程语言的数据库)
psql -f lwpostgis.sql -d *** (这里可能出错误,如果的话,以root身份执行ldconfig -v)
进入psql环境,查看***数据库,可看到多出两个空间相关的表

参考资料:
PostGIS ReadMe
PostgreSQL文档

2005年12月17日星期六

在FC4上安装PostgreSQL的过程

PostgreSQL的官方网站上发布了FC4上的RPM安装包,但用RPM包安装会将安装内容分散在很多文件夹中,所以我选择下载源码编译安装。

首先,在我的用户名登录下,
编译安装:./configure & make & make install
(默认安装在/usr/local/pgsql目录)

接下来,su转为超级用户,
添加postgres用户:adduser postgres (此用户负责维护PostgreSQL数据库和服务器)
改变PostgreSQL安装目录的拥有者:chown -R postgres.postgres /usr/local/pgsql/

然后,su转为postgres用户,
创建数据库簇存储目录:mkdir ~/data (在postgres用户主目录之下)
设置一些路径信息:vi ~/.bash_profile
PGLIB=/usr/local/pgsql/lib
PGDATA=$HOME/data
PATH=$PATH:/usr/local/pgsql/bin
MANPATH=$MANPATH:/usr/local/pgsql/man
初始化数据库簇:initdb (有许多参数可以指定,包括locale和字符集)
启动服务器:pg_ctl -l logfile start (日志记录在logfile文件中)
(由于已在配置文件中指定PGDATA,所以initdb和pg_ctl可不必指定-D ~/data)
创建一个数据库:createdb mydb1 (OK!)

PostgreSQL 8.1版本之前有用户和组之分,但现在只有角色的概念。
SQL客户端程序是psql,运行psql时默认使用与当前系统用户名相同的数据库角色进入与当前系统用户名相同的数据库,否则需要指定“-d 数据库名 -U 数据库用户名”。
在postgres用户下,
进入SQL客户端运行环境:psql  (以postgres用户身份进入postgres数据库)
执行SQL命令创建我的角色:create role *** with login password '***' createdb;
在我的用户下,
创建与我的系统用户名相同的数据库:createdb ***
进入SQL客户端运行环境:psql (以***用户身份进入***数据库)
然后执行sql创建表和数据等动作,OK!

参考资料:
LAMP站点上的《在Linux上安装PostgreSQL
PostgreSQL文档

2005年12月16日星期五

开源GIS。

一、参考refractions一篇调研开源GIS当前状态的白皮书《The State of Open Source GIS》,至此日止,此文档最后更新于2005-2-2。
1 文档首先划清了开源的界限,用以下几个问题来评估一个项目是否属于OSS —— “是否有良好的文档,开发团队是否透明,软件是否模块化,开发社区的广泛度如何,用户社区的广泛度如何”。
2 按照实现语言,开源GIS项目开发人员可分为C语言部落和Java语言部落,C语言部落包括参与Mapserver、GRASS、GDAL、OSSIM、 Proj4、GEOS、PostGIS、qGIS、Thuban和OpenEV的开发人员,同时也包括使用易于绑定到C语言的脚本语言(如Perl、 Phython、PHP)的开发人员;Java语言部落包括参与GeoServer、GeoTools、JTS、JUMP/JCS、DeeGree项目的 开发人员。
不同语言实现的软件之间也有交互,如用JDBC访问PostGIS,通过JNI使用MapServer。
另外也有不属于这两类语言的项目,如Web应用,提供基于浏览器接口的工具集和Web服务。

3 C语言开源项目如下图,其中灰色块表示的是用于多个应用软件的共享库:

4 Java语言开源项目如下图,其中灰色块表示的是用于多个应用软件的共享库:

5 C/Java开源GIS项目简介:
GDAL/OGR,GDAL为栅格数据或模块提供读写多种栅格格式的抽象库,OGR为矢量数据或模块提供读写多种矢量格式的抽象库;
Proj4,一个负责坐标投影的库;
GEOS,JTS拓扑库的C++实现,实现了OpenGIS简单要素规范中的要素类型;
OpenEV,最初为Linux开发的GIS桌面应用程序,现也有Windows版本,使用OpenGL图形库,能够快速浏览较大图形文件,结合DEM文件能够创建3D显示;
Mapserver,UMN开发的Web地图服务器;
GRASS,本来是1982年启动的一个美国军方项目,1999年开源,具有栅格、矢量分析能力,是具有较长历史的建模分析工具,拥有大量的模型;
OSSIM,栅格处理工具链,最初由ImageLink公司开发并应用到其软件产品中,OSSIM将图像处理任务切分成多个独立、可并行执行的组件,这些组件能够重组成不同的处理流软件并可以并行运行在机群上来获得提高计算能力;
QGIS,使用QT图形工具包开发的GIS桌面应用程序;
Thuban,使用Phython开发的GIS桌面应用程序,使用WxWindows跨平台图形工具包;
TerraLib,一个GIS功能类和函数的库,实现了元数据模型、空间模型、应用模型、地理编码模型、空间统计模型等数据和服务模块,源自巴西,文档是参杂部分英文的葡萄牙语写成的;
GMT,被设计成一组数据处理和图形生成的小程序,而这些小程序能够串起来用脚本粘接成复杂的数据处理链;
PostGIS,为PostgreSQL数据库添加了空间数据库的功能,扩展内容包括空间对象、空间索引、简单的分析功能、谓词和算子(GEOS)、坐标系统元数据、坐标投影支持(Proj4)、数据导入和导出工具;

GeoAPI,为执行各种地理操作提供标准方法的Java接口库,与ISO和OpenGIS相应规范呼应,希望将GIS的所有Java项目统一在单个接口规范之下;
WKB4J,Java语言实现的WKB(well known binary)解析库,提供Java和WKB格式空间数据源之间的高速互连;
JTS,实现了OpenGIS的简单要素规范,实现了健壮的空间谓词(拓扑关系判定),也包括空间算子(差、并、缓冲等);
Geotools,目标是要开发一个框架中的Java对象核心集,能够使得其他人较容易地开发OGC兼容的服务,包括核心接口API和接口的缺省实现,具有良好的模块化结构,各个OGC规范和数据源都用独立的模块来支持;
GeoServer,WFS规范的J2EE实现,建立在GeoTools之上,还支持Z39.50目录服务(OGC目录服务的一部分);
DeeGree, 消息传递系统的体系结构,实现了WMS 和WFS服务器,GTS、GCS等部分实现,独特的体系结构同时也增大了代码理解的难度,作为CITE项目的一部分,GeoTools和DeeGree协 调开发底层数据模型,将DeeGree的功能(如WMS)带入GeoTools/GeoServer;
JUMP,用于“JCS Conflation Suite”解决数据整合问题的可视化和用户界面工具集,设计能够嵌入空间对象合并算法的可插入环境;
gvSIG,西班牙的一个项目,要提供一个应用开放标准、平台独立的开源工具,设计目标是模块化、互操作性、开源、基于标准、较低开发成本、跨平台;
OpenMap,建造空间应用程序的Java语言组件库,代码有些老化;
uDig, 代表“User-friendly Desktop Internet GIS”,接合GeoTools的设计、数据结构、标准优势,JUMP的用户界面、渲染、互操作优势和Eclipse富客户端平台的可扩展性、工业开发标 准的优势,生成一个新的桌面GIS编辑器,并能够与广泛的本地、网络数据源交互。
6 Web项目
Chameleon,开发Web地图应用的分布式、可配置环境,基于WMS和WMT Viewer Context标准,包括一组能够放置于HTML模板文件中的提供特定功能的组件,并可以配置组件的表现形式;
Community Map Builder,用JavaScript实现了Web Map Context规范,能够显示和控制来自不同WMS服务的不同map;
Mapbender,提供显示、导航和查询WMS相兼容地图服务的能力,其框架包含用户和组管理、访问WMS所生成地图等功能的接口,下一步将支持WFS和目录服务;
quickWMS,WMS客户端的轻巧实现,JavaScript类组,容易使用但功能简单且有较多的错误;
ka-Map,JavaScript实现的Ajax Web Map客户端,包括基于MapServer的服务端支持代码,客户端显示流畅,但和MapServer关联很紧,客户端和服务端代码关联太紧,不是纯粹的WMS客户端。

7 开源GIS项目在体系结构上的分布图:

可见,当前的开源GIS软件已覆盖从底层到桌面应用到Web应用的方方面面。

二、开源GIS项目的聚集站点
SourceForge,拥有OpenEV、GeoAPI、GeoServer、DeeGree、Map Builder、quickWMS等
MapTools,拥有Chameleon、ka-Map等
Refractions,拥有GEOS、PostGIS、uDig等
RemoteSensing,拥有GDAL、Proj4等

FreeGISOpenSourceGIS,汇总GIS开放软件和数据的信息,维护开放GIS项目的索引列表

2005年12月15日星期四

Google Maps API以远

Google提供了Google Maps API,使得Web开发人员能在自己的页面中嵌入Google Map的功能。我想这也应当是我们的WebGIS的一个努力目标,认识Google Maps API能辅助我们的WebGIS设计。
Google Maps API为处理地图显示、地图操作控制、地图标记、异步数据请求、XML数据解析与转换,定义了GMap、GMarker、GPolyline、 GIcon、GEvent、GXmlHttp、GXml、GXslt、GPoint、GSize、GBounds等一套类体系。API文档中有对这些类的详细描述。
Google Maps API带给我很多启示,比如Ajax的应用,比如其API文档中推荐使用标准兼容的XHTML以规范浏览器解析的方法,比如GPolyline的实现中VML的应用,等等。
VML是微软提出的矢量图形的XML表示语言,首先在IE5中实现,并提交W3C作为Web上矢量图形的标准,但随着SVG标 准的出现VML的前景并不太好,至少在标准上是这样。SVG出现的目的同VML差不多,也是利用XML将显示矢量图形的能力纳入Web,但SVG比VML 定义了更丰富的元素,比如交互和动画、关联与查询等。在浏览器的支持上,起初IE不用任何插件支持VML,需要下载Adobe的插件才能查看SVG,而现 在情况大有改观,Firefox1.0以上的版本也能支持VML,并且见到一篇Blog说Firefox1.5能够不用插件支持SVG。广泛支持SVG是大势所趋。已经有很多WebGIS项目是基于SVG实现的,比如GISDevelopment上的一篇文章描述的。
另外,W3C上见到消息说创建了两个富客户端相关的工作组,Web APIs工作组Web Application Format工作组。Web APIs工作组致力于为客户端Web应用开发设计一组标准的API,使得Web富客户端的开发标准化、简单化,其中包括已有的XMLHttpRequest。我想这里面也有Google Maps API的刺激作用。

2005年12月12日星期一

又是Ajax。

以前的帖子中已经介绍了一些关于Ajax技术的或深或浅的文章,这里又有一篇介绍性文章,虽然又不少重复内容,但思路清晰、文笔明确,值得一读。

2005年12月8日星期四

泼向Ajax的冷水。

通过slashdot上找到一篇揭露Ajax缺点的文章
看看作者对Ajax局限性的系统总结,有利于合理使用这个当前几近烫手的技术。
作者提到的Ajax缺点主要有:
Ajax的异步性破坏了Web的原有统一模型,导航无法工作,也使得URL失去了明确的意义;
部分浏览器欠缺对Ajax的支持,部分浏览器欠缺对Ajax部分特性的支持;
许多浏览器不能适当地打印Ajax页面;
Ajax难以学习掌握;
搜索引擎难以索引Ajax页面;
一些网站发现用户更喜爱不使用Ajax技术的设计。

但Web的发展势必要求突破Tim Berner-Lee的原始定义,用户要求更丰富的界面、灵活的操作。
即使Ajax不是改革Web的最终武器,也唤醒了更多人对Web发展的思考。

2005年12月7日星期三

一个德国城市向开源的转变计划

在ZDNet上看到一则12月5日的top news:One city's move to Open Source
从感性上说,解气(嘿嘿),因为我喜欢开放,讨厌微软。
从理性上说,负责这项计划的管理人员有理有据的阐述了逃离微软的必要性和可行性,可能遇到的危险及对应措施,以及一些注意事项。

成思危:自主创新与现代化

成思危先生在电视主题演讲节目《中国经济大讲堂》中, 阐述了自主创新的一些问题1 2 3
简单总结如下:

主持人从我国企业由于缺少核心技术,每生产一台29美元的DVD机需要交纳20美元的专利费,而出口一台DVD机器的纯利润为1.5美元这一事实开场。

创新理论最早由奥地利经济学家雄比德1912年在《经济发展理论》中提出,原始定义为“企业家对生产要素的组合,包括开发新产品、提出新方法、开辟新市场、获得或者控制原料的新来源、采用新的组织形式”,指出这五种新都是创新。
创新的概念随经近百年的发展,但其基本定义没有变:就是指引入或者产生某种新事物而造成变化。

三种类型:技术创新、管理创新和制度创新。技术创新:把新产品、工艺和服务引入市场,实现其商业价值的过程;管理创新:把新思想、方法、手段或新的组织形式引入企业和国家的管理中,并取得相应效果的过程;制度创新:把新关系、体制、机制引入社会和经济活动中,并推动社会和经济发展。
技术创新的三种类型:跟随创新(韩国引入美国CDMA核心技术而开发外围技术专利);集成创新(复印机);原始创新。创新来源:企业的研究开发费用一般占销售额的3%到百分之十几,企业对市场需求的敏感性。
管理的发展:经验管理、科学管理、文化管理。科学管理的发展过程中,由于细分工多层次的方法使得个人创新积极性、组织运行效率低下,经济学家提出重组业务流程,让每个人都有一个独立自主的管理层次,提高个人创新积极性,组织形式改进为扁平结构的组织形式,提高组织运行效率。文化管理的理念中,用共同的企业价值观代替监控机制提高员工凝聚力,这也是创新。
制度创新的作用(切蛋糕的例子,独立董事和监事会共同存在的例子)。

知识产权的重要性日益突出。与知识有关的成本,如专利费、技术使用费、技术服务费等所占的比重越来越高(20%-40%,甚至更高)。
“头脑国家”产生知识、输出知识,“躯干国家”接受知识、应用知识。
我国GDP占世界4%,而消耗的石油、钢铁和水泥却占到20%、20%和40%。

需要国家在立法和政策上支持创新。

风险投资是知识资本和金融资本的结合。风险投资的存在需要:靠近高校和科研单位;靠近工业和企业基地;有制度和政策保障。北京中关村、上海张江园区、深圳。
企业要敢于冒险(要有长远的眼光)、善于冒险(合理确定目标)。
学生需要求实(扎实学习前人经验)、善疑(提问题创新)。既要学,也要问。

2005年12月6日星期二

代码维护中的一点教训。

以前都是我一个人负责整个工程或一个完整模块的开发,自己能够随意地分别保存开发代码的当前编辑版本、测试发布版本和发布版本,可以方便地保证系统的正常演进。
而在有其他人参与开发时,需要各自维护各自的当前编辑版本,并测试发布,然后提交给最终发布环境,在最终发布环境的测试发布区测试完毕再纳入发布版本。在这些过程中问题变得复杂,也伴随着很多潜在的危险。
比如,各自在开发过程中的测试需要与最终发布环境一致的环境,搭建环境并不总是一帆风顺(在Windows系统上部署能够使用JDBC连接的SQL Server 2000就可能出现很多问题);而如果使用最终发布环境作为当前编辑时的调试环境的话,比如对于JavaBean来说,每次更新就需要服务器重启,开发者自己不方便也可能影响到其他人;在最终提交时,某个人的代码可能会因为依赖另外的代码而出现错误。
这几天的开发过程中的教训主要是没有在最终发布服务环境中区分测试发布版本和最终发布版本,以至于差一点丢失了一天的工作。

四世同堂。

昨天刚读完《四世同堂》第一部《惶惑 》,脑中还盘绕着“羊圈胡同”内外形形色色的人物在北平被日本鬼子占领之后形神的变化。
像祁瑞丰、蓝东阳、冠晓荷这等无聊、无耻的人物,不愿多想多说。
印象最深的是瑞宣和钱默吟两位书生。想起瑞宣来就感觉憋闷,他虽有报国的志气和才能,却因四世同堂的大家庭所累,不能像三弟瑞全一样投笔从戎,而只能以保持清白的方式沉默地抵抗敌人的淫威。隐忍的斗士所承受的责任和痛苦并不逊于暴力抗敌的英雄。钱默吟老先生本是一位钟情于花草书画、流连于陶诗的槛外诗人,在妻、子被害,自身受刑之后,脱离抽象的宇宙而融入了复仇保国的大“气”。特别是看到最后摔杯叩头,将后事托付给金三爷的一段情景,直感觉到一股掷碎枷锁后的书生意气,豪爽、坚定又有些悲壮。

2005年12月4日星期日

第一次出游。

周六终于如了心愿,一大早随车去了长城。
同学早就告诉说会降温、有大风,但由于早有了打算,便刹不住念头和腿脚了。
早上七八点出发到下午五点,转了十三陵水库、明皇宫、居庸关长城和定陵,定陵门票太贵没舍得进去。十三陵水库(包括九龙游乐园)没什么可玩的,但听导游简单讲述了“毛主席挥挥手,四十万工农跟着走,不花国家一分钱建造水库”的掌故,另外第一次 感受了动感电影,还好,但缺付立体眼镜。明皇宫里的26个蜡像场景,简单再现了明朝二百多年历史中的重要事件,蜡像很逼真,据导游说其中的一匹蜡像马的表 层是用十几匹真马的皮补缀而成,一个人物的造价在几万元,一个水果的造价在几百元。
最怀念的还是爬长城。没想到爬长城和登山差不多,事先没有心理准备,差点坚持不下来。开始的时候遇到一个印度人,才爬了一个垛口的高度就说坚持不了回去 了,跟他聊天更让我怀疑了我的英语听说能力。上爬的过程中遇到很多外国游客,一位同志对我伸出拇指笑着说“Great”,感觉很友善,后来遇到外国同志, 我也伸出拇指微笑着说“Great”。交流总是让人愉快的,即使是很简单的方式。
随公交旅游车出游省心一些,但要跟着车走遍他们安排的所有景点,即使不喜欢去,而在喜欢的景点的活动时间又太少。
(照片随后附上)