今天是玉树地震全国哀吊日,偶不是国家领导人,明星或救援人员,不能去现场慰问或救援,只能默默地祝愿一切都好起来,并向遇难同胞默哀......
现在开始进入正题,偶把宇兵的安装经验总结分享给大家.假如我们现在有多台Windows Server 2008服务器做服务集群,首先考虑的是在各台服务器要安装ArcGIS
Server的哪些东西,当然你可以在所有的服务器上安装ArcGIS Server所有的东西,这虽然不会出什么错误,但这样做一般都是要被鄙视的.
我们首先得选一台服务器,作为管理服务及服务容器的管理器,在这台服务器上安装Server Object Manager,其它的服务器作为服务的容器,安装Server Object
Container(当然你同时也可以在管理器上安装Server Object Container,好像一般也都是这么干的.打个比方吧,比如管理技术人员的技术经理,除了管理自己和其他
技术人员外,也要做和技术人员一样的工作,所以选一台最好的服务器来扮演SOM和SOC的双重角色吧~)。因为我们安装的服务器上不会放供浏览器访问的Web应用程
序,所以Web Appliation及开发框架都不需要安装.
安装完成后就需要进行PostInstall的操作了,ArcGIS Server里面有两种类型的PostInstall,分别是GIS Server Post Install和Web Applications Post Install,
GIS Server Post Install要在每台服务器上进行,Web Applications Post Install是在安装了IIS和Web ADF开发框架的Web服务器上进行了,这里显然不需要进行.
我们知道在GIS Server Post Install的时候,会建立默认名为arcgisManager,ArcGISSOM,ArcGISSOC的三个Windows帐号,第一个帐户大家应该都比较熟悉,它是登
陆ArcGIS Manager页面用于管理服务的帐户,后面的2个帐号我原来的认识也比较肤浅,只知道它们是文档上所说GIS Server使用的帐号.对于单服务器的很多用户
来说,在进行Post操作时,可以用administrator这个已有的系统管理帐号来替换默认的ArcGISSOM和ArcGISSOC用来减少登陆帐户数(arcgisManager也可以用
administrator来替代,偶就是这么干的~)
但对于多台服务器并做服务集群时,这么弄就会有问题,比如你启动一个最少实例数为20的地图服务,并希望把这20个实例分散在多台服务器上运行,我们知道
ArcSOM进程的启动是用户是ArcGISSOM,ArcSOC进程的启动用户是ArcGISSOC(这个都不知道的自己去资源管理器里面看)ArcSOM用来管理ArcSOC.如果多台服务器上
的SOC Account和SOM Account的用户名和密码都不相同,那么服务的管理器SOM怎么来管理呢?服务怎么分布式运行呢?(你可以不用默认的ArcGISSOM和ArcGISSOC
,但你必须保证所有的服务器有相同名字和密码的SOM Account和SOC Account)
说完了用户再来说说组,ArcGIS Server会建立agsadmin和agsusers这两个用户组,它们和ArcGISSOM与ArcGISSOC没有什么关系,但和arcgisManager有关系,
arcgisManager用户是属于agsadmin组的,你可以把管理服务及服务容器的用户加入agsadmin组,把使用服务的用户加入agsusers组(很多人包括原来的偶把
agsadmin和agsusers都赋予管理帐户,其实只需要agsadmin就可以了,大权限已经包含了小权限)
Post完成后,建议重新启动一下电脑,虽然文档上没有这么要求,但个人建议你还是重新启动下~(如果有时你的人品不好,可能需要重新Post和重启)
在每台服务器的基础安装完成后,开始进行文件夹配置,首先配置的是GIS server用到的文件夹,默认位置为C:\arcgisserver,你可以在ArcGIS Manager或ArcCatalog修改GIS server所用文件夹路径。其下面包含了用于cache,jobs和output用途的子文件夹,就拿做地图切片的缓冲文件夹来说,如果路径为
C:\arcgisserver\arcgiscache这个本地路径,那么其它服务器怎么把地图切片存放进来呢?所以第一步就是共享文件夹,让局域网内的其它服务器都能使用该文件
夹,而且在设置GIS server缓存文件夹目录的时候也要修改为"\\mapserver\arcgisserver"的样子。然后还要设置文件夹的共享权限(还是在文件夹属性的共享标签页内),给SOM用户完全控制的权限,给SOC用户更改的权限,如果你搞不清楚或者不想搞清楚,统统都给最高权限拉~(事先申明这样做在用户安全管理和权限控制方面会有问题,如果这块出了问题,不要来找我啊)
我们还要设置NTFS文件夹本身的安全权限,在文件夹属性的安全标签页中,给SOM用户完全控制的权限,给SOC用户读和写的权限,如果搞不清楚,可见上述方法~
然后我们还要共享log文件夹及修改其访问权限,步骤和C:\arcgisserver的设置一样.你可以不进行相关设置,但如果你其它的SOC机器出了问题,那么错误信息就不会记录,这样ERSI技术工程师的售后服务就要大打折扣了~
最后一个文件夹是服务用到的数据文件夹,我们可以采用2种方式,第一种是上述的共享方法,这样做的缺点是其它服务器上的服务访问数据时可能不够快.第二种方法是在本台服务器上的相同位置都放一份数据文件的的拷贝,在设地图服务数据源的时候,可以不用设为共享文件路径("\\mapserver\mxds\test.mxd" ),可以设为如C:\mxds\test.mxd这样的本地路径,这样每个服务器上的服务都使用本地数据源.
本篇是笔述他人的经验总结,如有问题和不够详细的地方,望高手指正!
http://www.cnblogs.com/ECNU-GIS-LIUJIE/
对于原来只玩Windows操作系统得我来说,对IBM小型服务器上AIX操作系统还是比较陌生的,首先简单了解下什么是 AIX ?什么是 UNIX ?两者的关系是什么?UNIX于1969 年由AT&T Bell Labs 发明,是一种健壮、灵活且对开发人员友好的计算环境。UNIX 最初是为 PDP 微型计算机的Digital Equipment Corporation系列编写的,目前它是最受欢迎的多用户通用操作系统,并在所有计算领域——甚至包括曾被大型机垄断的领域——占据主导地位。时至今天,UNIX 已经发展了40 年,它已经成为了最重要的企业级服务器操作系统。同时,它的各个分支系统也在蓬勃的发展着,如Linux,BSD 以及 AIX,都成为了企业级应用的主要基础平台。
AIX 是 Advanced Interactive eXecutive 的缩写,于 1986 年 1 月推出,是 IBM 发布 UNIX 操作系统。最初,AIX 运行在 IBM RT/PC (AIX/RT) 上。自从 1989 年以来,AIX 成为 RS/6000 系列工作站和服务器(AIX/6000)的操作系统。在 AIX 的开发过程中,IBM 和 INTERACTIVE Systems Corporation(同 IBM 签约)将 4.2 BSD 与 4.3BSD 的一些特性加入了 AIX 中。2001 年推出的 AIX 5L 是 AIX 发展史上的重要版本,它基于标准的开放操作系统,符合 The Open Group 的 Single UNIX Specification Version 3 的要求。它为以各种可伸缩性并发运行的 32 位和 64 位应用程序提供完全集成支持。AIX 5L 支持 IBM eServer p5、IBM eServer pSeries、IBM eServer i5 和 IBM RS/6000 服务器产品系列,以及 IntelliStation POWER 和 RS/6000 工作站。2007 年 11 月,伴随着新一代 Power CPU - Power 6 的诞生,IBM 也推出了最新的 AIX 6 操作系统。它在很多方面都进行了革命性的改变和创新,如虚拟化技术、安全架构、开发环境以及持续可用性等方面。
ArcSDE要求AIX为AIX Rev 5.3 64-bit及以上版本,并且要求200MB以上的硬盘空间~
说完了操作系统,再来说说Oracle数据库,对于Oracle本身就不用做什么介绍了,ArcSDE的安装需要Oracle的一个用户名(用户名通过后面说道的createsdeoracle.sql脚本建)及一个表空间,名字都是SDE(你想起个富有诗意的个性化名字吗?不好意思,ESRI没有给你这个机会,你只能用SDE这个名字,反正我的实验结果是这样。不然在POST的过程中会出现“You don't have the database schema"的错误,如果有高手知道深层原因,望解答)
还有一个注意点就是SDE表空间的存放位置,至关重要,本人就是写错了地方,多纠结了一天,还拉上了树彬,汗! 如果你的Oracle只有一个实例(实例好像和Oracle SID一个概念),并且表空间放在Oracle数据库本地,那么很简单,你建立一个400MB左右的名为SDE的自动增长的表空间,存放位置为默认。如果你的Oracle数据库做了负载均衡或者双机热备,比如在多台服务器上分别安装了ESRI1、ESRI2、ESRI3。。。等实例,通过Oracle RAC(real application clusters)作了负载均衡,并通过ESRI这个网络服务名向外提供数据库服务,那么表空间的存放位置一般为多个实例都能访问到的公共磁盘阵列上了,而不是在某台服务器的本地(不然其它服务器上的实例怎么访问呢?)这时候你就需要咨询Oracle的安装人员或者数据库DBA来确定SDE表空间存放的磁盘阵列的位置。
现在我们开始为安装ArcSDE做准备,首先在操作系统中建立一个SDE管理用户,可以通过"/usr/sbin/useradd 用户名 -p 密码"的命令来建,这里我们可以偷懒下,因为安装Oracle数据库后会有oracle这么个用户名,我们直接可以用这个用户名,也便于日后管理~
建立环境变量,这一步可是个细活,需要额外小心,在.profile文件中建立如下环境变量,不同类型的Unix有不同之处:
SDEHOME <location of ArcSDE>
ORACLE_HOME <location of Oracle>
ORACLE_SID <Oracle SID value>
TNS_ADMIN <location of the tnsnames.ora file>
PATH $PATH:$SDEHOME/bin:$ORACLE_HOME/bin
LD_LIBRARY_PATH $SDEHOME/lib:/usr/lib:/lib:$ORACLE_HOME/lib (All platforms except HP and IBM)
SHLIB_PATH $SDEHOME/lib:/usr/lib:/lib:$ORACLE_HOME/lib (for HP only)
LIBPATH $SDEHOME/lib:/usr/lib:/lib:$ORACLE_HOME/lib (for IBM only)
TWO_TASK <value for TWO_TASK> (if ArcSDE and Oracle on different machines即当 ArcSDE 和 Oracle 安装在不同的机器(分布式模式)时与TNS_ADMIN成对使用)
SDEFORCEXDR 1 (needs to be set for all 32-bit clients installed on the same machine as ArcSDE 64-bit)
下面给出我.profile文件中的部分环境变量:
SDEHOME=/oracle/sdeexe93
export SDEHOME
ORACLE_BASE=/oracle
export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_HOME
LIBPATH=$SDEHOME/lib:/usr/lib:/lib:$ORACLE_HOME/lib:$ORACLE_HOME/ctx/lib:$ORACLE_HOME/lib32
export LIBPATH
ORACLE_SID=esri1
export ORACLE_SID
TNS_ADMIN=$ORACLE_HOME/network/admin
export TNS_ADMIN
TWO_TASK=esri
export TWO_TASK
PATH=$SDEHOME/bin:$ORACLE_HOME/bin:$CRS_HOME/bin:/usr/bin:/etc:/usr/lbin:/usr/bin/X11:/usr//bin:/usr/local/bin:.:$PATH
export PATH
.profile文件可以通过FTP下载、修改、再上传,高手可以通过命令行来修改。如果为分布式安装模式时需要在本地配置一个指向oracle数据库的oracle net服务(应该就是上述的网络服务名)。并要求配置$SDEHOME/etc/dbinit.sde文件,(添加set LOCAL=ESRI或者set TWO_TASK=ESRI,这里的ESRI是网络服务名) 该文件需要在安装完ArcSDE后才有,还有createsdeoracle.sql也是在安装完ArcSDE后才有~
现在安装ArcSDE,首先定位到安装文件,如% cd /cdrom/ibm/oracle10g_64,再使用命令行% ./install -load进行加载,这个时候你可能碰到没有权限的提示,可以通过“chmod -R 777 目录”语句把该目录的权限给安装用户,可以详细看下chmod -R命令。 在安装过程还有一个注意的地方是,ESRI会问你是否遵守许可,语句如下:
ESRI is willing to license the software to you only if you accept and agree to the enclosed license agreement. If you have read and agree with the terms in the enclosed license agreement type 'yes' to continue the installation process, if not press <return> or type 'no' to exit installation process. [no]
但由于你屏幕的原因,可能看不全,我就被这个折腾了N久。你只要定位到最后,把no修改为yes就可以了,然后就指定你的安装文件目录和要安装到的地方,如果你上述设置了SDEHOME=/oracle/sdeexe93,那么安装到的地方就是/oracle
如果安装完成后,到安装目录下的etc目录和tools目录中去找dbinit.sde和createsdeoracle.sql文件,进行相应的修改。createsdeoracle.sql的修改如下:
1、为connect语句添加system的用户名和密码,如connect system/oracle@esri (由于我安装的Oracle数据库对外发布了多个网络服务名,所以连接的时候必须指定要连接的网络服务名,如esri,或者也可以指定实例名,如esri1、esri2等)
2、由于我们已经建立了SDE表空间,所以把建立SDE表空间的SQL语句注释掉(这个就不用我说了吧,自己去找!~)默认的安装路径一般肯定是错误的,当然你也可以在这里添加表空间,但建议用户自己去建,不然出了问题,你就悲剧了(如果你非常熟悉Oracle数据库的命令行,可以在做了负载均衡的环境中删除SDE表空间,那就随便你拉~)
执行sql脚本:
sqlplus sys as sydba@ESRI 注意添加网络服务名,如果数据库只有一个网络服务名及一个实例名,这个可以忽略
sql> @createsdeoracle.sql;注意最后加分号
如果一切OK,那么现在可以做PostInstall的操作了,命令行如下:
sdesetup -o install -d ORACLE10G -p sde -u sde -l /oracle/sde.ecp 这里我把ecp许可文件放在了oracle用户目录下了,参数的详细说明如下:
-o install Creates geodatabase tables and procedures ArcSDE requires.
-d Underlying RDBMS used to store the ArcSDE geodatabase
-H Location where ArcSDE files are installed (not required if $SDEHOME is set)
-i Only used for a user-schema geodatabase; consisting of the port number for the master SDE geodatabase followed by the schema name (for example, 5151:tyort).
-l ArcSDE authorization key or location to authorization file
-N No verification
-o Operation
-p DBMS DBA user password
-q Quiet; all titles and warnings are suppressed.
-s Datasource name
-u DBMS DBA user name
最后给出启动、关闭及监控SDE服务的命令:
Sdemon –o start –p sde –i esri_sde
Sdemon –o shutdown –p sde –i esri_sde
Sdemon –o status –i esri_sde
下面部分转Flyingis的分布式部署 ArcSDE 和 Oracle 服务,地址如下http://www.cnblogs.com/flyingis/archive/2007/10/14/924049.html
SDE和Oracle数据库部署在一台服务器上早已是家常便饭,像我的notebook就是一锅出,什么都有,用起来方便,甚至不少最终产品部署的时候都是如此。那么,什么时候需要将两者分开呢?分散服务负载是一种考虑,经典服务器配置理论就是一台服务器一个核心服务,不仅分散服务器的负载,还便于压力测试,方便调试与维护,或是在不同的操作系统平台上进行安装配置,如Oracle数据库在Solaris系统,SDE安装在Windows2003或Suse10企业版上,具体应该如何配置呢?下面给出教条一二三,针对ArcSDE9.x和Oracle9i/10g:
1.首先应该将Oracle安装在单独服务器上并进行dbca,正常监听和启动服务。
2.在SDE服务器上安装Oracle Network Software,以便在SDE服务器上执行sql操控远程Oracle服务器,相对于SDE服务器是Oracle服务器的一个客户端。
3.根据不同的操作系统安装SDE,post时需要做一点调整,在Windows平台上,需手工创建sde服务,因为post无法为远程SDE服务器创建sde服务。
sdeservice -o create -d ORACLE10G,ORACLE_SID -i esri_sde -p password -n
注意,后面要加上参数"-n"!Windows平台上不能分布式部署SDE8.x。
环境变量设置:
SDE服务器只有写入相应的环境变量后,才能让Oracle Network Software找到Oracle服务。Windows系统中,需要设置SDEHOME\etc\dbinit.sde,加入set LOCAL=netservicename,在sde服务创建后写入。Unix系统要在环境变量中添加TWO_TASK,和Oracle双机安装SDE一样,当然少不了TNS_ADMIN。SDE服务启动时,giomgr进程会读取dbinit.sde里的变量值,它们会覆盖.cshrc和.profile中的值,这里需要注意。
OK,这样就配置好了,如果发现服务还是存在问题,多检查环境变量的设置、Oracle Network连通性,最后重启服务器也许就能解决问题,看到这里,当自己有多余服务器时,要不要尝试一把!
转载OVER~
我这里的ArcSDE虽然安装在一台数据库服务器上,当所用到的是ESRI这个虚拟的网络服务名,这个网络服务名对应着多个实例(如ESRI1、ESRI2、ESRI3。。。),试验结果是,如果在dbinit.sde设置为:
ORACLE_SID=ESRI1 或者 ORACLE_SID=ESRI2 或者 ORACLE_SID=ESRI3。。。 那么启动服务没有问题,但应该只用了一个实例,如果设置ORACLE_SID=ESRI(网络服务名),那么服务启动不了
如果要用网络服务名,那么在dbinit.sde必须设置为TWO_TASK=ESRI(网络服务名),试验结果就是这样,虽然文档上和Flyingis都说只有ArcSDE和Oracle分布安装时才用TWO_TASK
可能这里用到的ESRI是一个网络服务名,是一个虚拟化的东西,对应着多台服务器的SID实例,望高手给出正解~
本篇只是个人的一个安装备忘,由于能力有限,可能某些地方说的不够清楚,请见谅,如果有说的不对的地方,望高手指正!
http://www.cnblogs.com/ECNU-GIS-LIUJIE/
ArcGIS Mobile SDK提供的GPS library从某一个连接到GPS模块(或者GPS接收器)的COM端口读取并解析GPS位置信息.COM端口可以是一个物理串行端口、一个通过蓝牙或USB绑定GPS接收设备的虚拟COM端口、或者一个程序端口(比如Windows Mobile设备上的GPS intermediate driver驱动程序,GPS intermediate driver允许多个应用程序在同一时间访问GPS).
ArcGIS Mobile GPS library只支持NMEA协议的GPS信号,你可以利用第三方工具把GPS接收器输出的GPS位置信息转换成NMEA格式(比如为Trimble的GPS接收器提供转换的Trimble GPS Controller).你应该确保GPS接收器已正确配置,在开始运行ArcGIS Mobile应用程序之前应该确定你想用的COM端口,并且连接到你的GPS接收机.
有必要先了解下Windows Mobile对GPS的支持,在Windows Mobile 5.0的时候引入了上面提到的GPS Intermediate Driver(GPS 中间驱动程序,以下简称 GPSID),它使开发基于GPS的 Windows Mobile应用程序变得简单多了。因为它在开发人员编写的应用程序和 GPS 设备之间加入了一个中间层,使开发人员不需要通过串口直接访问 GPS 设备,而是访问 GPSID 提供的 API 函数,GPSID 再去访问 GPS 设备。这样一来,编写出来的 GPS 应用程序具有设备无关性。另外,GPSID 还有下面两个好处:
1. 多个应用程序可以同时访问同一个 GPS 设备,因为你访问的是 GPSID
2. 不需要去解析 NMEA 命令,GPSID 帮你解析好了
Windows Mobile 6.0 SDK 之前利用模拟器Emulator~进行移动程序开发,很多和设备相关的功能无法调试和验证(比如GPS),Windows Mobile 6.0 Professional SDK提供了Fake GPS和GPS Settings 这两个针对模拟器和GPSID开发和使用的辅助工具,可以在C:\Program Files\Windows Mobile 6 SDK\Tools\GPS 目录下找到它们.
Fake GPS主要用于你想开发运行在Windows Mobile上GPS应用程序,但找不到GPS设备用来调试.或者在室内调试程序,GPS设备接收不到卫星信号.GPSID 的所有配置信息都保存在注册表中,可以通过修改注册表来更改 GPSID 的配置,其中有一个设置可以让 GPSID 从一个包含 NMEA 命令的 .txt 文件读取 GPS 数据,而不需要从 GPS 设备读取数据。Fake GPS 的工作原理就是修改设备注册表的GPSID配置,让GPSID 从一个文本文件读取 GPS 数据。对于我们开发的应用程序来说,跟访问真实的设备并没有两样。
在C:\Program Files\Windows Mobile 6 SDK\Tools\GPS下的FakeGPS.cab就是FakeGPS的安装文件。然后我们就把Emulator的share folder设置为该目录,或者把该文件拷贝到仿真器里.单击FakeGPS.cab文件进行安装,安装完成以后我们打开Programs里面的Fake GPS项,将第一参数的”Disable”改为”Enable”,现在可以在第二个输入框中选择从哪个文件读取 GPS 数据。Fake GPS 默认带了两个测试文件,fakegpsdata.txt 在打开后会让 GPSID 马上接收到位置信息,而 dixies.txt 需要等待一段时间才能接收到位置信息。点击”Done”,这样就完成Fake GPS的安装和设置。
我们可以在设备的”MyDevice\Programs\FakeGPS\GPSFiles”下,找到”FakeGPSData.txt”和”dixies.txt”文件,其中的数据所遵循的就是NEMA协议.什么是NEMA?请联系Google或Baidu.如果你想使用自己的测试数据,可以将编写好的 .txt 文件复制到 \Program Files\FakeGPS\GPSFiles 目录下,在重新运行Fake GPS 就可以在 NMEA File 列表中看到了。在C:\Program Files\Windows Mobile 6 SDK\Samples\PocketPC\CS\GPS下有一个解决方案,打开Gps.sln,选择Windows Mobile 6.0 Professional Emulator进行调试。
GPS Settings:在 Windows Mobile操作系统中自带了一个GPSID 的配置程序,在 Windows Mobile 6 Professional 中可以通过选择“Start-->Settings-->System-->External GPS”打开。
现在我们回到ArcGIS Mobile,在其SDK中提供了3个.Net组件用于GPS功能的开发:
1 GPS Serial Port Connection
2 GPS File Connection
3 GPS Display
它们设计用来管理和GPS接收器的连接,解析遵循NMEA协议的GPS语句,在地图上展现GPS位置信息,并且为其它应用程序提供利用GPS语句的接口.
SerialPortGpsConnection
SerialPortGpsConnection组件旨在直接从设备的某个指定串口获取GPS信息,与GPS设备连接后使用SerialPortGpsConnection通信协议.由于GPS设备triangulate定位信息,通过这个连接来分发和接收这些信息(it is broadcast and received via this connection).SerialPortGpsConnection对该定位信息进行解码,进行打包并通过一个有含义的事件参数依次分发解码后的定位信息.若要使用该组件,你必须首先指定GPS设备所使用的端口名.
FileGpsConnection
FileGpsConnection组件旨在模拟野外使用的GPS,它读取一个包含位置信息的二进制文件(位置信息以前通过GPS设备获得),读取文件里定位信息的时间间隔由用户指定.文件里的定位信息通过FileGpsConnection和解码后,通过内部有含义的事件参数进行分发传递.当定位语句被接收到的事件触发后,NMEASentenceEventArgs参数可以用来获取GPS信息.如果正确设定GPSDisplay和FileGpsConnection连接后,GPSDisplay组件将自动获得GPS的信息.若要使用FileGpsConnection组件,你必须先指定一个有效的包含遵循NMEA协议的GPS定位信息的文件.
GpsDisplay
GpsDisplay组件用来同步GpsConnection中解码了的定位信息,并在地图空间中进行显示.若要使用该组件,你必须先定义关联的Map组件和GpsConnection组件(SerialPortGpsConnection或者FileGpsConnection).该组件包含了所有的属性和配置信息用来控制GPS定位信息在地图上的显示方式.在应用程序中使用GPS组件使你的GPS开发工作变得更加简单.
在ArcGIS Mobile应用程序中添加FileGpsConnection(或SerialPortGpsConnection)和GpsDisplay组件,并在属性框中进行上述的一些必要设置后,就可以开启GPS连接和使用GPS定位数据了,相关代码如下:
代码
更多关于ArcGIS Mobile的开发:http://www.cnblogs.com/ECNU-GIS-LIUJIE
GIS数据及数据模型是功能操作的基础,移动GIS应用程序也不例外。你是不是碰到过这样的情况,实现某一功能的代码肯定没有问题(从帮助文档里Copy来的怎么会有问题~),但就是得不到预期的效果,这时候就应该考虑一下所用的数据了,本篇主要介绍如何建立有效的用于野外数据采集的数据模型。ArcGIS Mobile的数据编辑框架整合了功能强大的Geodatabase地理数据和事务处理模型,用来满足各种野外数据编辑解决方案和工作流。在确定如何最好地支持ArcGIS Mobile应用程序的野外数据编辑时,充分考虑支持什么数据,不支持什么数据是很重要的。
多用户地理数据库
你可能已经建立了移动应用程序,这些移动程序直接连接移动地图服务或者使用地图服务本地缓存,移动地图服务是用ArcGIS地图文档发布的,其数据源来自于不同的地方,包含多种格式,如SHP,CAD或Geodatabase。ArcGIS Mobile的数据编辑只支持ArcSDE地理数据库,你的移动地图数据可以包含其它数据源,但如果你想添加新要素或更新现有要素,那么对不起,这个层的数据必须来自于ArcSDE Geodatabase中。用于ArcGIS Mobile数据编辑的要求如下:
1 数据存储在多用户的ArcSDE Geodatabase中 2 图层数据必须包含一个Global ID列
ArcGIS Mobile不支持新建一个地图图层或者更改图层现有的属性字段,地图的架构必须已存在于ArcSDE地理数据库中,这就意味着你必须事先设计并创建一个适当的数据库,用于野外数据的采集和编辑。
如果你预期需要采集的数据并不存在于现有的数据模型中,或者你需要采集非结构化的信息,建议你在地理数据库中创建一个额外的要素类用于满足该数据的存储。
移动地理数据库
在建立野外解决方案的重要一步是地理数据库信息模型的设计,用于最好的支持您的野外工作流。您可以执行下列操作之一:
1 通过地理数据库复制功能来利用现有的信息模型 2 通过提取,转换和加载(ETL)来改变现有的信息模型
充分考虑野外工作人员如何描述他们所采集的信息是采用何种方法的关键,你描述野外信息的方式和建立在地理数据库中的模型有时会有很大的不同。很多时候,野外采集的空间信息是不连续的。比如:在一个城市公园采集信息,工作人员从公园的某个角落开始走遍整个公园。他们可能会先采集部分湖的沿线,然后暂停并收集了公园的长椅信息,然后恢复再采集湖岸线。在数据模型中,湖泊一般表示为多边形要素,但是,在野外采集的时候通常当作线要素(湖的岸线),因此有必要为湖建立一个独立的用于野外数据采集的岸线地理数据模型。你也可以定义用于转化数据库模型和野外数据模型的流程,这个流程就是所谓的ETL,对于上述例子,你可以定义一个流程,在移动地理数据库向ArcSDE地理数据库同步数据时,拼接和转化岸线要素到多边形的湖要素。
1) 地理数据库复制模型
你可以为野外数据编辑,简单的发布地理数据库的部分内容,并且使用版本来隔离野外的数据编辑和室内的编辑,但是这种方式会存在某些潜在问题。比如:如果你需要在野外同步数据,那么你必须要穿过公司的防火墙来访问服务器上的业务地理数据库。但对于大多数公司来说,出于安全考虑这个是不可能的。一个更好的办法是使用地理数据库复制来隔离业务的信息采集和室内服务器地理数据库的不断更新。 利用地理数据库复制技术,你可以创建一个单独的地理数据库版本用来存储野外的编辑,并且定期的和地理数据库母版本同步数据。使用这种方法,你只需要复制部分野外工作所需要的数据(不需要整个信息模型)。地理数据库复制技术可以用在很多地方,比如一个分布式系统,子节点的野外工作人员不能连接到主节点;或者一个车载的笔记本电脑包含一个地理数据库的复制版本,野外所做的编辑工作将在设备停靠到车辆时进行。
2) ETL模型
很多时候在地理数据库中表述空间信息的模型和野外创建和更新地理要素所用的模型有很大的不同,一个例子是把多边形的湖建模为岸线(线类型),这样可以更方便的采集要素;还有一个例子是连接企业数据库的多个数据表或多个字段,存储到野外数据库的一个表或一个字段中,比如街道属性信息的存储,通常街道的全名存储在多个字段中(数字\前缀\名称\后缀等)。在ArcMap中,你可以使用一个表达式标签来显示街道全名。如果你想在移动设备上显示全面,那么必须把上述的多个字段加入一个字段属性中。
你可以使用地理处理模式来管理移动地理数据库和服务器地理数据库的ETL过程,也可以使用ArcGIS的数据互操作扩展来可视化的设计这些转化过程。需要注意的是你所定义的转化过程可能不是双向的,所以需要定义一组地理处理转化策略用于把数据转换到移动设备上,同时还需要把野外采集的数据转换到服务器地理数据库所采用的模型。
移动事务处理模型
一旦你建立了最适合野外编辑工作的地理数据库模型,接下来就需要定义一个适当的用来管理野外数据更新的事务处理模型。在某种程度上,这由你定义的数据模型来决定,但同时也要考虑野外数据采集或编辑的小组数和怎么隔离他们的编辑工作。在建立事务处理数据库或者发布地图服务前,需要从地理数据库的角度来理解特定事务处理模型的工作方式以及移动编辑应用程序如何同步更新。下面讨论在设计野外地理数据库时需要考虑的一些关键因素。
1) 编辑地理数据库
如果你有较少的野外编辑人员并执行简单的编辑任务(例如更新属性字段),并且很少或不可能同时更新野外的同一个要素,那么一个无版本(non-versioned)的事务处理模型可能最适合你的需要。这种方式的一个潜在问题是对于编辑人员来说直接的数据更新上传是唯一的选择,如果由于某些原因数据同步不够完整,那么这次同步就会成为一个大问题。如果使用版本,你的野外同步更新工作将会更加灵活。使用一个有版本的事务处理模型,你可以隔离野外数据编辑,添加额外的后续处理,上传更新前可以确保数据质量。
根据你要如何隔离野外数据编辑,你可以建立一个单一的版本用来存储所有的野外编辑,或者你可以为每个野外编辑人员创建一个独立的版本。 如果你为每个野外编辑创建一个版本,你需要为每个编辑人员发布一个移动地图服务(you will need to publish a mobile map service for each editor)。一旦野外数据采集人员完成数据采集和修改,并且需要同步更新到地理数据库中时,ArcGIS Desktop用来协同多个编辑的版本和母版本同步时的冲突(ArcGIS Desktop is needed to reconcile the version edits with the parent version)
2)ArcGIS Mobile客户编辑框架
ArcGIS Mobile应用程序没有ArcMap中所谓的开始编辑,结束编辑和保存编辑的概念。每次数据编辑都保存在设备上的移动地图服务缓存中,直到你主动的决定需要和服务器进行同步更新。你可以取消在应用程序中所做的编辑工作,这将回滚所有的野外编辑工作,并且恢复到编辑前的原始状态,但你不能一次只撤销一个要素的编辑工作。
野外所做的采集、编辑、更新都存储在移动设备的地图服务本地缓存中,野外工作人员不能保证始终都可以和服务器保持连接,或者需要关机充电,这样可以保证更新不会丢失。当与服务器建立连接后,你可以与服务器同步缓存中存储的更新。当从移动设备上传更新时,只有改变的部分被发送到服务器。比如你改变了一个要素的属性,只记录特定字段的改变,而不是整个记录。当在野外更新数据的时候,带宽和容量必须尽可能得到保护。根据你预期的数据编辑总量和与服务器的连接类型(比如GPRS),你也许希望能够在返回到办公室后再把更新的内容上传到服务器,这样可以保证稳定高速的网络连接。
更多关于ArcGIS Mobile的开发:http://www.cnblogs.com/ECNU-GIS-LIUJIE
在野外执行的地图浏览及数据编辑任务和室内相比有很大的不同。移动设备的硬件因素(包括显示分辨率、按键、摇杆和手写笔)、设备内存及存储限制、野外的环境状况(比如强烈的日光、阴雨天暗淡)都会影响到你设计的移动地图的实际使用效果。因此,充分考虑该移动地图的使用目的、考虑任务的工作流程、考虑具体什么型号的设备使用地图是非常重要的。下面我们来具体探讨下移动地图设计考虑的关键点以及ArcGIS Mobile Applications中如何利用好ArcGIS Desktop中的地图符号:
一、设计野外使用的地图
在设计移动地图的时候,考虑野外工作的任务和流程是至关重要的,应用程序在何时何地使用(工作环境因素),野外工作人员会使用到什么样的专业术语或专业应用,所有这些因素都将决定野外工作中哪些图层的可视化、导航和信息收集是非常重要的。在设计移动地图的时候,还应该考虑它在野外工作中将如何部署和管理,大多数手机地图是由基础图层和业务层两部分构成的。
基础图层主要提供用于浏览和导航的参考信息(航空图形、街道地图、区域分界等),基础地图不需要进行数据同步,所以它可以作为一个独立的部分提供给一个特定的野外项目。业务图层指在野外工作中信息需要更新的图层以及提供的信息可能会改变的图层,业务地图图层作为一个地图服务进行发布,它在服务器和移动设备之间能够进行同步。使用ArcGIS Mobile,你可以把自己在野外所做的信息修改上传到GIS服务器,你也可以从服务器上下载最新的信息,这些信息可能被室内或在野外工作的其他成员更新过。
不管你是否一开始就拥有一张现有地图或你从头开始创建一个新地图,你都需要考虑工作环境因素、设备显示分辨率和方向(横向或纵向)、要素的符合表示(移动设备并不支持ArcGIS Desktop提供的所有符号和风格)和图层规模。
二、工作环境条件
野外的实地环境可能包含烈日、雨淋、降雪等天气。光照条件对移动地图设计时选择的颜色和符号有直接影响。在办公室你是在理想条件下的设计地图,办公室的光照条件和大屏幕显示器可以使你广泛的使用各种颜色和符号,这些颜色和符号在野外的使用是不是也有室内的效果?不幸的是,这是需要你不断的试错和实际的经验。
作为一般准则,设计背景层尽可能透明。设计一个成功的移动地图的关键是简单性和对比性。如果您有展示面状地块或地区信息作为背景资料,请尽量不要填充区域多边形;如果需要,尽量使用简单的颜色。尽可能多地使用灰色色调并且尽量限制您需要显示的文本量,请记住,在办公室台式电脑上显示的良好效果在野外移动设备上可能并不好看(移动地图如中图)



三、设备框架因素
你需要考虑部署应用程序的移动设备的外形因素以及地图的朝向(纵向或横向)问题。大多数Pocket PC设备的屏幕是320 × 240,但不同品牌或型号间差别可能很大。你设计移动地图使用的显示器屏幕分辨率为1024 × 780或1280 x 1024或更高,地图的设计很大程度上会受到屏幕大小的影响。在设计地图的过程中充分考虑到屏幕的大小会促使你只把真正需要用到的内容添加到地图中来,这可以提供移动地图的清晰度,更为重要的是可以减少你绘制地图花费的时间。
你应该为每一个图层设置其需要显示的比例尺范围,需要注意的是,ArcGIS Mobile应用程序并不遵照你在地图中设置的参考比例,所以你的地图符号不会随着比例的变化而放大或缩小。当为某个设备设计移动地图时,建议你缩小ArcMap的地图显示窗口,保持和移动设备屏幕一样的大小,然后再设置相关的参考比例,还需要考虑到适当的标记符号的大小和线要素的宽度。
四、地图符号
您所选择的用于显示地理信息的符号将决定移动应用中地图的使用效率。如果你正在重建现有的应用程序或在野外还在使用纸质地图,如果可能话,尝试使用野外工作流程中熟悉的指示符号。让你选择的符合简单、容易记,并且可以传达有效的地理信息是非常重要的。ArcGIS的符号可分为象标记符号、线符号、填充符号和文字符号。 ArcGIS Mobile支持的是ArcGIS Desktop符号集的子集。那哪些支持哪些不支持呢?定义如下:
1 标记符号
移动框架在服务器上对标记符号进行栅格化并把位图传递到客户端设备缓存中,这就意味着所有的标记符号类型移动设备都能够支持。然而,必须指出的是由于上述方式,使地图的参考比例得不到支持,所以你必须指定标记要素的可显比例范围。
2 线符号
当使用线符合时,需要注意你选用的符号应保持地图的简洁性,包括地图的清晰和展现效率。ArcGIS Mobile支持简单的线条符号、字符线符号和哈希线符号,但它不支持的标记线符合和装饰线符合(比如在先的端点有箭头)

3 填充符号
如果可能的话,应该尽量避免多边形使用填充符号,在移动设备上它往往并不一定需要且它会增加地图的复杂性。ArcGIS Mobile 只支持简单的填充符号,它支持的多边形符号的轮廓线还可以是哈希线符号或字符线符号。框架不支持其他类型的填充符号(图片填充符号、标记填写符号、线条符号)

4 文字符号
ArcGIS Mobile的移动地图支持图层的标签和存储在GDB中的注释,ArcGIS Mobile does not support the justification properties for a map layer, and it does not support labeling using an expression,你的标注必须直接来源于单一字段。In the example below, the text that is not supported is an expression that concatenates several fields together to form a street address. To accomplish this, you will need to create a new field and calculate the value of the field equal to the concatenation of the existing fields.简单的说,就是你用来标注的字段不可以是通过其它几个字段经过计算得来的。


更多关于ArcGIS Mobile的开发:http://www.cnblogs.com/ECNU-GIS-LIUJIE