ArcGIS格式的转换方法.docx
- 文档编号:28502701
- 上传时间:2023-07-16
- 格式:DOCX
- 页数:128
- 大小:1.02MB
ArcGIS格式的转换方法.docx
《ArcGIS格式的转换方法.docx》由会员分享,可在线阅读,更多相关《ArcGIS格式的转换方法.docx(128页珍藏版)》请在冰豆网上搜索。
ArcGIS格式的转换方法
几种注册ODBC数据源的方法
∙来源:
未知编辑:
未知2005年12月19日浏览454次
几种注册ODBC数据源的方法国防科大丁浩ODBC(OpenDatabaseConnectivity,开放式数据库互连)是一种应用程序接口(API)规范。
它定义了一个标准例程集,使用它们应用程序可访问数据源中的数据。
应用程序通过引用API的函数可以直接使用ODBC,或利用数据访问对象(DAO)或远程数据对象(RDO)来使用ODBC。
但是,在实现ODBC时,我们必须首先配置ODBC环境,进行数据源的注册,这样才能在对数据库进行编程时,对数据源进行连接、访问和操作。
本文介绍几种常用的注册ODBC数据源的方法。
手工配置1.ODBC数据源管理器在进行数据库开发时,为了达到配置ODBC,进行DSN定义注册的目的,微软给出了一个手工操作的解决方法。
在Windows9X操作系统的控制面板中,有一个名为“ODBC数据源(32位)”的图标,可以通过它激活专门为用户设置ODBC环境的程序(ODBCDataSourceAdministrator,ODBC数据源管理器)。
在Windows2000操作系统中,上述图标被放置在控制面板的“管理工具”里面。
这个用于设置ODBC环境的程序叫做桌面驱动程序,它支持数种DBMS(DatabaseManagementSystem,数据库管理系统)。
当用户想增加一个数据源和一个所需要的驱动程序时,可以通过ODBC数据源管理器的配置对话框配置特定类型的数据库。
大多数情况下,在编写对数据库操作的程序时,我们至少需要知道诸如数据库文件名、系统(本地或远程)、文件夹等信息,同时要给数据源命名。
2.定义数据源的类型用户可以定义以下三种类型的数据源:
用户数据源:
作为位于计算机本地的用户数据源而创建的,并且只能被创建这个数据源的用户所使用;系统数据源:
作为属于计算机或系统而不是特定用户的系统数据源而创建的,用户必须有访问权才能使用;文件数据源:
指定到文件中作为文件数据源而定义的,任何已经正确地安装了驱动程序的用户皆可以使用这种数据源。
3.数据源注册的步骤以MicrosoftAccess为例,如果在C:
\myfile\文件夹里创建了一个名为myexample.mdb的数据库文件,其注册步骤如下:
在控制面板里找到“ODBC数据源”图标,打开数据源管理器的交互界面;笔者创建的数据库文件是供本机上的用户使用的,所以这里选择“用户DSN”;然后按下“添加”按钮,在弹出的数据源管理器对话框里,为自己所要创建的数据源选择一个驱动程序,本文的数据库文件是用MicrosoftAccess创建的,所以要选择“MicrosoftAccessDriver(*.mdb)”;按“完成”按钮后,进入一个标题为“ODBCMicrosoftAccess安装”的界面,在其中设置“数据源名”为“mydatasource”,选取数据库文件“C:
\myfile\myexample.mdb”,然后确定即可。
这样我们就完成了一个简单的ODBC数据源的注册。
当然,在以上的步骤中,用户可以根据自己的不同需要,设置不同的选项。
注册结束后,我们便可以在对数据库的编程中,操作该数据库了。
在VB中注册数据源在VB中对数据库进行编程时,可以利用RegisterDataSource方法为ODBC数据源输入连接信息到Windows注册表中。
它的语法是:
RegisterDataSourceDSN,driver,silent,attributes其中参数代表的含义分别为:
DSN:
字符串表达式,它是在引用数据源描述信息块时所使用的名字。
例如,如果数据源是一个ODBC远程数据库,这就是服务器的名字;如果是用户DSN,则是注册的数据源的名字。
drive:
字符串表达式,表示ODBC驱动程序的名称。
它并不是ODBC驱动程序动态连接库(DLL)文件名。
例如,SQLServer是驱动程序名,而SQLSRVR.DLL是DLL文件名。
必须安装ODBC及相应的驱动程序。
silent:
布尔类型值,如果不想显示ODBC驱动程序对话框,用以提示指定驱动程序的信息,该值就为True;如果希望显示ODBC驱动程序对话框,该值就为False。
如果silent为True,那么attributes必须包含所有必需的指定驱动程序的信息。
attributes:
字符串表达式,它是一个要添加到ODBC.INI文件中的关键字列表。
编写程序时,可以根据需要选择若干attributes的参数进行设置。
例如:
我们可以编写如下的VB程序,达到与上面手工注册一样的目的。
程序清单如下:
SubRegisterDataSource()DimstrAttribsAsString’建造关键字字符串。
strAttribs=“DBQ=”_&“C:
\myfile\myexample.mdb”_&Chr$(13)&“OemToAnsi=No”_&Chr$(13)&“SERVER=SEQUEL”_&Chr$(13)&“Network=DBNMPNTW”_&Chr$(13)&“Database=WorkDB”_&Chr$(13)&“Address=\EQUEL\PIPEQL\QUERY”’建立新的注册的DSN。
rdoEngine.rdoRegisterDataSource“mydatasource”,“MicrosoftAccessDriver(*.mdb)”,True,strAttribsEndSubPrivateSubForm_Load()CallrdoRegisterDataSourceEndSub注意:
为了在代码中使用rdoEngine和远程数据对象,必须先在“引用"对话框中设置一个到MicrosoftRemoteDataObject2.0对象库的引用,否则在第一次引用rdoEngine对象时会导致编译错误。
利用注册表合并1.解决思路考查ODBC数据源注册后对Windows注册表的修改情况,我们可以发现所注册的数据源对Windows注册表的影响关键集中在[HKEY_CURRENT_USERoftware\ODBC\ODBC.INI]里。
这样,我们导出[HKEY_CURRENT_USERoftware\ODBC\ODBC.INI],每次以之为模板,把所要注册的数据源信息加入到注册表导出文件的对应位置,然后再将该文件与系统注册表合并即可。
2.具体操作首先,我们要弄清楚Regedit及其参数的含义。
Regedit是打开系统注册表的命令。
在“开始\运行\”中输入即可。
它的三个参数含义如下:
Regedit/emyfile.reg:
表示把注册表文件导出到myfile.reg文件中,相当于复制整个注册表文件到myfile.reg中;Regedit/cmyfile.reg:
表示把myfile.reg导入注册表,相当于用该文件的内容覆盖了注册表的内容;Regedit/smyfile.reg:
表示把myfile.reg文件的内容与注册表文件的内容进行合并。
我们只需在注册表中将有用的部分导出,而后将所要注册的数据源的信息加入,再与系统注册表合并就可以了。
这个合并的过程,我们既可以手工输入来实现,也可以通过编程实现自动合并。
注意:
为了防止误操作,一定要将系统注册表作一次备份。
小结从安全的角度考虑,笔者首推利用在Windows控制面板中的ODBC数据源管理工具来进行数据源注册,以免因对注册表的不熟或疏忽造成不必要的损失。
当然,还有一些应用工具,可以实现对ODBC数据源的注册,用户可以根据不同的需求选择使用。
小妹初学vb,想在vb中用ODBC连接一个access数据库,现遇到一个问题:
在控制面板中设置好ODBC后,分别尝试用data和adodc控件连接数据源(只在控件的属性上设置,没有写代码),都不行。
然后在网上找到一些代码写进去,却总是显示“实时错误[Microsoft][ODBC?
驱动程序管理器]未发现数据源名称并且未指定默认驱动程序”或者“找不到可安装的ISAM”(可是我安装vb时是装过ISAM的!
)我的代码:
Private?
Sub?
Form_Load()Dim?
conn?
As?
New?
ADODB.ConnectionDim?
rs?
As?
New?
ADODB.Recordsetconn.CursorLocation?
=?
adUseClientconn.Open?
?
Security?
Info=False;Data?
Source?
=F:
\db1.mdb"rs.Open?
"select?
*?
from?
表1",?
conn,?
adOpenDynamic,?
adLockBatchOptimisticEnd?
Sub烦请各位热心的大虾帮忙看看这个代码哪里不对呢?
非常感谢!
作者:
帅哥阳伞专家分:
8950
?
会员信息
?
发短消息?
?
?
所属BLOG
发表时间:
2006-6-119:
19:
00?
?
?
[回复]?
?
[引用]睿智汇海.NET就业培训专家,2个月实现高薪梦想
第1楼?
?
conn.ConnectionString?
=?
"Provider=MSDASQL;Persist?
Security?
Info=False;User?
ID=填用户名;Data?
Source=填DSN名"?
?
'通过ODBC来连接conn.Open?
?
Security?
Info=False;Data?
Source?
=F:
\db1.mdb"?
?
是连接数据库的
?
?
最后修改于2006-6-119:
20:
00
?
此帖尚未评分
作者:
水蓝色月光专家分:
0
?
会员信息
?
发短消息?
?
?
所属BLOG
发表时间:
2006-6-29:
15:
00?
?
?
[回复]?
?
[引用]睿智汇海.NET就业培训专家,2个月实现高薪梦想
第2楼?
?
我把关键那句改成conn.ConnectionString?
=?
"Provider=MSDASQL;Persist?
Security?
Info=False;User?
ID=admin;Data?
Source=abc.dsn"可是还是显示“实时错误[Microsoft][ODBC?
驱动程序管理器]未发现数据源名称并且未指定默认驱动程序”,我在控制面板里的用户DSN和文件DSN选项卡都分别创建了一个叫abc.dsn的文件了,选择的是access的驱动器,为什么还总是说“未发现”呢?
作者:
傻瓜911专家分:
30
?
会员信息
?
发短消息?
?
?
所属BLOG
发表时间:
2006-6-411:
35:
00?
?
?
[回复]?
?
[引用]睿智汇海.NET就业培训专家,2个月实现高薪梦想
第3楼?
?
shi使用一个ADO控件?
来生成连接字符串,就可以了!
m?
?
?
此帖尚未评分
作者:
huangsten专家分:
90
?
会员信息
?
发短消息?
?
?
所属BLOG
发表时间:
2006-6-72:
51:
00?
?
?
[回复]?
?
[引用]睿智汇海.NET就业培训专家,2个月实现高薪梦想
第4楼?
?
可以用数据环境设置器就能得到连接数据库的字符串。
1.在工具栏中单击工程2.单击添加Data?
Environment,在工程资源管理器中生成了一个DataEnvironment13.右键单击Connection14.单击属性,弹出一个数据链接属性窗口5.如果数据库是access就双击Microsoft?
Jet?
4.0(省略...)6.跳到连接项,在文本框中输入数据库路径,如果数据库和工程在同一路径,则输入数据库名称即可7.如登陆数据库需要密码,则在第二点的文本框输入相应信息8.点击测试连接按钮9.如果连接成功则提示连接成功10.成功后按确定按钮退出11.连接数据库的字符串只有复制属性窗口的ConnectionSource的值就行了
?
此帖尚未评分
作者:
billyli专家分:
30
?
会员信息
?
发短消息?
?
?
所属BLOG
发表时间:
2006-6-914:
14:
00?
?
?
[回复]?
?
[引用]睿智汇海.NET就业培训专家,2个月实现高薪梦想
第5楼?
?
conn.ConnectionString="DSN=abc;uid=;pwd="'通过ODBC来连接
?
此帖尚未评分
作者:
louja专家分:
20
?
会员信息
?
发短消息?
?
?
所属BLOG
发表时间:
2006-6-917:
49:
00?
?
?
[回复]?
?
[引用]睿智汇海.NET就业培训专家,2个月实现高薪梦想
第6楼?
?
顶?
三楼
使用AO连接ORACLE数据库
昨天做了个程序,是将一个本地SHP文件和一个SDE上的表进行匹配比较,然后生成一个新的SDE要素类。
其中涉级到使用AO连接ORACLE数据库的问题和如何从数据库中取出一个表的操作,代码贴下来给大家看看:
连接数据库,首先需要了解AO操作数据的基本流程:
AO的geodatabase数据模型具有独立性,与具体的存储介质无关,即无论是数据库管理还是文件存储数据,AO都是使用相同的操作方式来管理数据的。
在geodatabase中,workspace相当于一个数据库,这个数据库存储的东西很多,如要素数据集、要素类,栅格数据集,表等等。
(具体的可看OMD图)1.使用AO连接到SDE+ORACLE数据库PrivateSubgetSDETable()使用SDE的工作空间工厂,不同类型的数据库连接的时侯使用不同的工厂对象DimpWorkspaceFactoryAsIWorkspaceFactorypWorkspaceFactory=NewSdeWorkspaceFactoryDimpPropertySetAsIPropertySetpPropertySet=NewPropertySetWithpPropertySet.SetProperty("Server","data")服务器.SetProperty("Instance","5151/tcp")实例.SetProperty("user","sde")SDE数据表空间的用户名.SetProperty("password","sde").SetProperty("version","sde.DEFAULT")默认版本EndWith定义要素工作空间DimpSdeWorkspaceAsIFeatureWorkspaceTrypSdeWorkspace=pWorkspaceFactory.Open(pPropertySet,0)CatchexAsExceptionMessageBox.Show("SDECann'tConnection")EndTry取出一个表DimpTableAsITablepTable=pSdeWorkspace.OpenTable("NHGTWEB.WEB_YQLJ")IfpTableIsNothingThenMessageBox.Show("ConnectionError")Else看取出每条记录的方法DimpCursorAsICursorpCursor=pTable.Search(Nothing,False)DimpRowAsIRowpRow=pCursor.NextRowDoWhileNotpRowIsNothing取出表中的每一条记录,加到一个COMBOBOX中去pRow=pCursor.NextRowLoopEndIfEndSub如果要去要素类很多帮助里面都可以看到,可是取一个table就没看到过例子,我其实对于取一个表要通过ifeatureworkspace接口也是很迷惑,因为在OMD图中,featureclass是table的子类,这样在workspace里面应该有专门管理table的接口,但是没有哦。
2.使用AO连接普通的ORACLE数据库PrivateSubgetORACLE()DimpWorkspaceFactoryAsIWorkspaceFactorypWorkspaceFactory=NewOLEDBWorkspaceFactoryDimpPropertySetAsIPropertySetpPropertySet=NewPropertySetpPropertySet.SetProperty("CONNECTSTRING","Provider=oraoledb.oracle;DataSource=nhgtfc;UserId=nhgtfc;Password=nhgtfc")DimpWorkspaceAsIFeatureWorkspacepWorkspace=pWorkspaceFactory.Open(pPropertySet,0)IfpWorkspaceIsNothingThenMessageBox.Show("connecterror!
")ElsepTable=pWorkspace.OpenTable("NHGTZYJ_TDJBXX")EndIfEndSub这里打开工作空间使用的是另一种工作空间工厂,但是打开后使用的方法是一样的。
其实无论是那里的表,其管理方法都是一致的。
Tags:
发布:
jbttm|分类:
ArcObjects开发|评论:
13|引用:
0|浏览:
43|字号:
大中小
∙相关文章
∙该日志的引用地址(UTF-8)及评论订阅地址:
ArcSDE安装全攻略
(作者:
陈元琳)有很多朋友安装ArcSDE失败,主要有以下两种情况:
1ArcSDE安装过程中提示不成功。
2ArcSDE已经装上,但是服务没有启动。
为此,我把ArcSDE反复安装了多次,对期间可能出现的问题一一找到了解决办法。
现在把安装步骤写出来,希望不光对第一次安装ArcSDE的朋友,而且对已经安装过ArcSDE却没有成功的朋友,都能有一定的帮助。
当然这只是抛砖引玉,如有错误还请各位指正。
Windows操作系统中解决方案如下:
1打开注册表,删除ArcSdeService服务详细:
(1)打开“控制面板”,“服务”,找到“ArcSdeService(somename)”,这里somename就是你的ArcSde服务的真实的名字,记住这个名字(为叙述方便,以下用somename表示其真实的名字)。
(2)打开“开始”,“运行”,敲入“regedit”,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service\somename,把整个文件夹删掉。
(这里的somename指
(1)中的somename。
)(3)重启计算机。
(目的是刷新注册表,当然用其他方法树新注册表也可以,但是这里强烈建议重启。
)2从Oracle中删掉用户sde和表空间sde详细:
(1)从“开始”--〉“程序”--〉“Oracle-OraHome92”--〉“EnterpriseManagerConsole”,启动Oracle,以任意用户名,任意密码,SYSDBA身份登陆(以SYSDBA身份登陆无需验证的原因是:
SYSDBA是操作系统认证的,操作系统里面有一个ora_dba组,这个组里面MemberscanconnecttotheOracledatabaseasaDBAwithoutapassword,如果把你刚才登陆本机时所使用的用户名从这个组里删除,那么你以SYSDBA身份登陆Oracle就需要身份验证了)。
(2)在“安全性”--〉“用户”下找到“SDE”(如果找不到就进行下一步),在“SDE”上右健单击,选择“移去”,选择“是”,这样就删掉了用户SDE。
(3)在“存储”--〉“表空间”下找到“SDE”(如果找不到就进行下一步),在“SDE”上右健单击,选择“移去”,选择“是”,这样就删掉了表空间SDE。
(4)关闭Oracle。
3重新安装ArcSDE详细:
(1)从“开始”--〉“程序”--〉“ArcGIS”--〉“ArcSDE”--〉“ArcSDEforOracle9iPostInstallation”,进入安装界面。
(2)第一步,选择完全安装,即“Complete”,点击“下一步”。
(3)第二步,要求以Oracle用户sys的身份登陆Oracle数据库。
在Sysuserpassword中输入用户sys的密码(安装Oracle时输入的);在Netservicename中输入Oracle服务的名字,可以以如下方式查看Oracle服务的名字:
“控制面板”-->“管理工具”--〉“服务”,找到“OracleServiceSomename2”字样的服务(其中,Somename2只是一个替代字符串),右键点击“属性”,在弹出的对话框中,看到“可执行文件的路径”下面的字符串,此字符串中“.EXE”后面的部分即是Oracle服务的名字。
点击“下一步”。
(4)第三步,创建SDE表空间和用户(如果弹出一个对话框,显示用户sde已经存在,那是因为用户sde或表空间sde没有从Oracle中删掉)。
对话框中给出三栏:
SDEuser、Default和File。
其中,Default栏指出要创建的默认的SDE用户名和表空间名,SDEuser栏输入的是用户sde的密码,File栏给出的是新创建的用户和表空间存放位置的文件。
强烈建议不要修改Default栏给出的“sde”,因为如果改成其它的名称,一会儿在(8)中将会看到要求给出用户sde的密码,而我们并没有创建用户“sde”。
笔者私下认为SDEuser栏和Default栏给出的提示不很好,粗一看去让人误以为要填两个用户名,一个是运行使用的用户名,一个是默认的用户名。
但实际上SDEuser栏中输入的字符以星号显示,按默认惯例,这一栏应该是密码。
而且,在刚进入(6)时,我们可以打开Oracle,可以看到“用户”下的确生成了Default栏输入的名字的用户,而不是SDEuser栏输入的名字的用户,在表空间中也是如此。
我们可以只在SDEuser栏输入一个字符串,当作用户“sde”的密码,其余的默认即可。
点击下一步。
(5)一会儿可以看到弹出两个对话框,提示用户sde和表空间sde创建成功。
(6)第四步,进入“ArcSDEconfigurationfiles”,配置ArcSDE文件,选择默认,点击下一步即可。
(7)第五步,进入“ArcSDEconfigurationfilescontinued”,继续配置ArcSDE文件,选择默认,点击下一步即可。
(8)第六步,创建方案SDE。
此时,SDE用户的名字已经固定,为“sde”;程序在(4)中已经获得用户“sde”的密码,此处也以星号形式给出;程序在(3)中已经获得Oracle服务的名称,此处也显示给出。
如果(3)和(4)中均没有填错,此处全部默认即可,点击“下一步”。
3”字样的值,这个somename3就是Oracle_SID。
填好后点击“下一步”。
(10)如果原来有ArcSDE服务,那么此时会提示已经存在服务,是否覆盖;或者提示出错。
原因:
第1步即“打开注册表,删除ArcSdeService服务”仅仅把控制面板服务列表中的服务删掉,而真正的服务(在HKEY_LOCAL_MACHINE\S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ArcGIS 格式 转换 方法