arcgisc主要功能有那些啊?

arcgisc主要功能有那些啊?,第1张

ArcGIS 作为一个可伸缩的平台,无论是在桌面、服务器、野外还是通过Web 应用,为个人用户也为群体用户提供GIS 的功能。它包含了四个主要的部署GIS 的框架:

桌面GIS——专业GIS 应用的软件包,包括ArcReader,ArcView,ArcEditor,ArcInfo和ArcGIS 扩展模块;

服务器GIS——ArcIMS,ArcGIS Server 和ArcGIS Image Server;

移动GIS——ArcPad 以及ArcGIS Mobile;

开发GIS——为开发者提供的用于扩展GIS 桌面,定制基于桌面和基于Web 的应用,创建移动解决方案的组件;

1. 桌面GIS(C/S结构)

桌面GIS(ArcGIS Desktop)是GIS 专业人士用于创建、编辑、设计和使用地理信息的主要应用程序,是一系列可扩展的软件家族产品,包括:ArcReader、ArcView、ArcEditor、ArcInfo,以及ArcGIS 扩展模块。虽然每一个产品都是独立的,但是它们却具有相同的核心程序、用户界面以及开发环境。产品的功能从ArcReader、ArcView、ArcEditor 到ArcInfo 依次增强。可用性和互 *** 作能力的提高为最终用户提供了灵活的部署能力。

ArcReader:只包含了免费的地图数据浏览、查询以及打印。

ArcView:地图的显示以及分析以及简单的数据编辑和空间处理工具。

ArcEditor:高级的地理编辑和数据的创建。

ArcInfo:完整的GIS 桌面应用包含复杂GIS 的功能和丰富的空间处理工具(其实包含全部的功能)。

以上只是安装时产品级别的区别,价格不同,对于用户来讲直接能看见的都是ArcMap,ArcCatalog,ArcToolbox 以及ArcGlobe.前3种基本上只有界面上的区别,本质还是一样的。

ArcMap 用来浏览、编辑地图,以及基于地图的分析。

ArcCatalog 是管理空间数据存储和数据库设计,以及进行元数据的记录,预览和管理的应用程序。

ArcToolbox 是将所有工具有组织的集成在一起的工具箱。

ArcGlobe是桌面产品中3D分析扩展模块的一部分,提供对海量地理数据的交互式浏览

2. 服务器GIS(B/S结构)

和上面桌面的4种产品一样,ArcGIS 针对不同用户也提供了三种服务器产品。

ArcIMS:是一个可伸缩的高性能的地图网络发布软件。ArcIMS 基于开放的Internet协议,动态地发布地图、数据和元数据目录,为GIS 网络发布提供了高度可扩展的框架,从而满足用户通过网络共享GIS 信息的需求。

ArcGIS Server:功能强大的基于服务器的GIS 产品,用于构建集中管理的、支持多用户的、具备高级GIS 功能的企业级GIS 应用与服务,如:空间数据管理、二维三维地图可视化、数据编辑、空间分析等即拿即用的应用和类型丰富的服务。ArcGIS Server 支持桌面,定制的应用,移动设备以及基于浏览器的客户端的访问。ArcGIS Server 包含了ArcSDE 空间数据管理技术,用于通过多种关系型数据库来管理基于多用户和事务的地理数据库。

ArcGIS Image Server:基于网络的、提供动态的影像处理服务的服务器端软件,可以按照访问者需要完成海量影像数据的快速访问和可视化。在大量并发用户使用的情况下,无需对数据进行预处理,也无需将数据加载到数据库中,能够实现快速高效的海量影像数据显示。Image Server 是ESRI 影像解决方案中的一个组成部分,提供了一种新的方法用来存储、管理、处理和分发空间影像数据,并用于进一步构建基于Web 服务的解决方案。

ArcGIS Server功能最全,其次是ArcIMS再次是ArcGIS Image Server.ESRI很会赚钱,一样的东西剥开来卖,呵呵。而且就是最全的ArcGIS Server也分为Workgroup版和Enterprise版。

3. 移动GIS(未曾用过,不是很了解)

ArcPad:将GIS 带到野外的移动GIS 应用程序。ArcPad 以GIS 为中心并专注于需要简单GIS 工具就可以完成的野外任务。这些任务通常是通过手持计算机(运行Mircosoft Windows CE 或者是Pocket PC)来完成的。目前ArcPad 已经得到了广泛的应用。

ArcGIS的其他产品也有支持移动GIS的功能在此不再一一叙述。

4. 开发GIS

ArcGIS Engine 和EDN(ESRI Developer Network),另外还为开发者提供核心的ArcObjects 软件组件库。AO好象在9.2之后就不提供了。

ArcObjects 软件组件库

ArcGIS 开发的核心是ArcObjects 软件组件库。ArcObjects 是跨平台GIS 软件组件的集合。这套共享的ArcObjects 库为ArcGIS Desktop、ArcGIS Engine、ArcGIS Server 提供共同开发组件。它提供了模块,可伸缩,跨平台的结合和通用的API,如C++,。NET 和Java. ArcObjects 可以部署在不同的框架下。

ArcGIS ENGINE

ArcGIS Engine 是ArcObjects 组件跨平台应用的核心集合,它提供多种开发的接口,可以适应。NET,Java,VB 和C++等开发环境。开发者可以使用这些组件来开发定制的GIS和地图应用。应用程序可以建立并且在部署在Microsoft Windows,Sun Solaris 和Linux 等通用平台上。这些应用程序包括从简单的地图浏览到各种定制的GIS 编辑程序。

AE又有Developer和Runtime两种扩展版本

1.SQLite数据库特点(1)SQLite数据库是开源的嵌入式数据库,无需独立的数据库引擎,直接嵌入到应用程序进程中,因此,通过API,应用程序可以直接 *** 作它。(2)事务的处理是原子的,一致的,独立的,可持久化的(ACID),即使在系统崩溃和掉电后。(3)SQLite数据库通过独占性与共享锁来实现事务的独立处理。(4)一个单独的跨平台的磁盘文件就能够存储一个数据库。(5)能支持2TB级的数据。(6)自包含,无外部依赖性。(7)支持NULL,INTEGER,NUMERIC,REAL,TEXT和BLOG等数据类型。(8)SQLite数据库没有用户帐户的概念。数据库的权限仅依赖于文件系统。2.SQLite数据库的基本 *** 作(1)建立数据库sqlite3data.sqlite3在当前目录下建立了名为data.sqlite3的数据库。(2)建立数据表createtablecall_list(idINTEGERPRIMARYKEY,typeNUMERIC,telnumNUMERIC,bttimeTEXT,tcountNUMERIC,charge_rateNUMERIC,charge_sumNUMERIC)建立了名为call_list的数据表,有7个字段,分别为id,type,telnum,bttime,tcount,charge_sum.charge_rate.(3)向数据表中插入数据insertintocall_listvalues($num,1,2,'new',4,5,6)(4)查询数据表中的数据select*fromcall_list(5)修改call_list表中的数据updatecall_listsetid=00001000whereid=10001(6)删除表中的数据记录deletefromcall_listwhereid=1000(7)SQlite中的其它常用命令.tables-列出所有的数据库中的数据表.schematablename-列出指定数据表的结构.quit-离开数据库(8)SQLite数据库的导入与导出a.将data.sqlite数据库的数据全部导出:sqlite3data.sqlite>.outputdd.sql>.dump这样,数据就保存在dd.sql的文件中,注意这个文件不是数据库,而是SQL语句。然后再把这些数据导入到另外一个数据库data1.sqlite数据库中。sqlite3data1.sqlite>.readdd.sql这样,数据就从data.sqlite数据库复制到data1.sqlite数据库中去了。b.将数据表中的数据导出到a.txt中去.outputa.txt//输出重定向到a.txtselect*fromcall_listc.将导出的表中的数据导入到另一个数据库的新建的表中去如:当从data.sqlite中的call_list表中导出了数据,再导入到另外一个数据库表call中去。首先建立表call.然后.importa.txtcall即可。3.C语言 *** 作Sqlite数据库API:intsqlite3_open(constchar*filename,sqlite3**ppdb)第一个参数用来指定数据库文件名。第二个参数是一个数据库标识符指针。如果打开数据库成功,则返回0,否则返回一个错误代码。intsqlite3_close(sqlite3*)传递的参数是数据库标识符指针用来关闭数据库, *** 作成功是返回0,否则返回一个错误代码。intsqlite3_errcode(sqlite3*db)constchar*sqlite3_errmsg(sqlite3*db)constchar*sqlite3_errmsg16(sqlite3*db)这三个函数都是返回错误信息,第一个函数返回的是最近调用数据库接口的错误代码,第二,第三个函数是返回最近调用数据库接口的错误信息。第二个函数返回的错误信息是用UTF-8编码的,第三个函数返回的错误信息是用UTF-16编码的。intsqlite3_exec(sqlite3*,constchar*sql,int(*callback)(void*,int,char**,char**),void*,**errmsg)这个函数非常重用,是用来执行SQLite数据库的SQL语句的。第一个参数是sqlite数据库标识符指针。第二个参数是要执行的SQL语句。第三个参数是一个回调函数,在执行查询 *** 作时用到,其它的 *** 作可以传空值即NULL。第四个参数是传递给回调函数第一个参数的实参。第五个参数是一个错误信息。回调函数:intcallback(void*,intargc,char**argv,char**cname)第一个参数是从sqlite3_exec传递过来的参数,可以为任意的类型。第二个参数是查询的列数。第三个参数是查询结果集的值。第四个参数是列名。intsqlite3_get_table(sqlite3*db,constchar*sql,char***result,int*row,int*col,char**errmsg)这个函数主要是用来查询的。第一个参数是数据库描述符指针第二个参数是SQL语句。第三个参数是查询的结果集。第四个参数是结果集中的行数。第五个参数是结果集中的列数。第六个参数是错误信息。它查询出的行数是从字段名开始的。即第0行是字段名。实例:/**本例主要实现用Sqlite的回调函数进行查询intsqlite3_exec(sqlite3*,constchar*sql,int(*callback)(void*,int,char**,char**),void*,errmsg)第一个参数是数据库标识符第二个参数是要执行的sql命令第三个参数是回调函数第四个参数是回调函数的第一个参数第五个参数是用于指示错误信息其中回调函数的形式:int_sql_callback(void*arg,intargc,char**argv,char**cname)第二个参数指示结果集中的列数第三个参数是保存结果集的字符串第四个参数是结果集中的列名**/#include#include#include#include#include#includeint_call_back(void*arg,intargc,char**argv,char**cname)intmain(){intresconstchar*dbfile="data.sqlite1"char*errmsg=NULLsqlite3*dbres=sqlite3_open(dbfile,&db)if(res!=0){perror("数据库打开失败")exit(EXIT_FAILURE)}//创建一张数据表constchar*sqlcreate="createtablecall_list(idINTEGERPRIMARYKEY,typeNUMERIC,telnumNUMERIC,bttimeTEXT,tcountNUMERIC,charge_rateNUMERIC,charge_sumNUMERIC)"res=sqlite3_exec(db,sqlcreate,NULL,NULL,&errmsg)if(res!=0){perror("建立数据表失败")exit(EXIT_FAILURE)}//插入100000条数据intnum=0structtimevaltvgettimeofday(&tv,NULL)longold=tv.tv_secwhile(num<100000){constchar*sqlinsert="insertintocall_listvalues($num,1,2,'new',4,5,6)"res=sqlite3_exec(db,sqlinsert,NULL,NULL,&errmsg)//插入时不需要用到回调函数if(res!=0){perror("插入失败")exit(EXIT_FAILURE)}num++}gettimeofday(&tv,NULL)printf("插入100000条数据的时间为:%d秒/n",(tv.tv_sec-old))//更新constchar*sqlupdate="updatecall_listsetid=00001000whereid=10001"res=sqlite3_exec(db,sqlupdate,NULL,NULL,&errmsg)if(res!=0){perror("更新数据失败")exit(EXIT_FAILURE)}//删除constchar*sqldelete="deletefromcall_listwhereid=1000"res=sqlite3_exec(db,sqldelete,NULL,NULL,&errmsg)if(res!=0){perror("删除数据失败")exit(EXIT_FAILURE)}//查询constchar*sqlquery="select*fromcall_list"res=sqlite3_exec(db,sqlquery,&_call_back,NULL,&errmsg)if(res!=0){printf("%s/n",errmsg)perror("执行失败/n")exit(EXIT_FAILURE)}res=sqlite3_close(db)if(res!=0){perror("数据库关闭失败")exit(EXIT_FAILURE)}exit(EXIT_SUCCESS)}int_call_back(void*arg,intargc,char**argv,char**cname){inti//二重指针可以看成指针数组for(i=0i

原因:

ArcGIS 10在启动过程中创建或校验<<User Profile>\MyDocuments\ArcGIS>目录下的默认文件地理数据库,默认文件地理数据库在诸多功能中均需要使用,对于软件的高效运行有着重要的意义。上述错误信息会导致,默认地理数据库无法创建或校验从而导致ArcMap启动失败。

解决办法:

1. 在Windows资源管理器中,打开错误信息中描述的所在盘的属性,右击—>属性,如:C:/。

2. 在常规中,确保该盘中有足够的空间。默认文件地理数据库需要不超过0.5M空间。

3. 在Windows资源管理器中,浏览到错误信息中提到的路径

如果目录下存在多个版本的Default.gdb,直接进行第6步 *** 作。多个版本的地理数据库均有唯一名,并具备如下命名规则Default.gdb, Default1.gdb, Default2.gdb等等。在Windows资源管理器中,文件地理数据库表现为与地理数据库同名但具备.gdb后缀的文件夹。

4. 右击该文件夹打开其属性。

5. 在安全选项页中,确认当前用户对该文件夹至少具有读和写权限。

6. 如果在第3步描述下的工作空间中有多个版本的Default.gdb,则删除。

7. 安装MSXML 4.0 Service Pack 3 (Microsoft XML Core Services) .

8. 重起机器,ArcMap则可以成功启动。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6422885.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-21
下一篇 2023-03-21

发表评论

登录后才能评论

评论列表(0条)

保存