GP学习(六)—Creating geodatabase and connecting geodatabase
Creating geodatabases |
In this topic
- About workspaces
- Creating a file geodatabase
- Creating a personal geodatabase
- Creating a connection file to an enterprise ArcSDE geodatabase
- Creating a geodatabase in personal or workgroup ArcSDE
- Creating a scratch workspace
About workspaces
- Shapefiles and ArcInfo workspaces are examples of file system workspaces.
- Personal and file geodatabases are examples of local geodatabase workspaces.
- An ArcSDE geodatabase stored in a relational database management system (RDBMS), such as Oracle, DB2, Structured Query Language (SQL) Server, or Informixis an example of a remote geodatabase workspace.
Creating a file geodatabase
[C#]
public static IWorkspace CreateFileGdbWorkspace(String path) {// Instantiate a file geodatabase workspace factory and create a file geodatabase.// The Create method returns a workspace name object.Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);IWorkspaceName workspaceName = workspaceFactory.Create(path, "Sample.gdb", null,0);// Cast the workspace name object to the IName interface and open the workspace.IName name = (IName)workspaceName;IWorkspace workspace = (IWorkspace)name.Open();return workspace; }
Creating a personal geodatabase
[C#]
public static IWorkspace CreateAccessWorkspace(String path) {// Instantiate an Access workspace factory and create a personal geodatabase.// The Create method returns a workspace name object.Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.AccessWorkspaceFactory");IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);IWorkspaceName workspaceName = workspaceFactory.Create(path, "Sample.mdb", null,0);// Cast the workspace name object to the IName interface and open the workspace.IName name = (IName)workspaceName;IWorkspace workspace = (IWorkspace)name.Open();return workspace; }
Creating a connection file to an enterprise ArcSDE geodatabase
- One is used for creating ArcSDE personal and workgroup geodatabases.
- The other is used to create ArcSDE enterprise geodatabases.
[C#]
public static IWorkspaceName CreateConnectionFile(String path, String server, Stringinstance, String user, String password, String database, String version) {IPropertySet propertySet = new PropertySetClass();propertySet.SetProperty("SERVER", server);propertySet.SetProperty("INSTANCE", instance);propertySet.SetProperty("DATABASE", database);propertySet.SetProperty("USER", user);propertySet.SetProperty("PASSWORD", password);propertySet.SetProperty("VERSION", version);Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);return workspaceFactory.Create(path, "Sample.sde", propertySet, 0); }
Creating a geodatabase in personal or workgroup ArcSDE
[C#]
// dataServerName parameter should be in "<machine_name>\\<sql_instance>" format. public static void CreatePersonalOrWorkgroupArcSdeWorkspace(String dataServerName) {// Create a data server manager object.IDataServerManager dataServerManager = new DataServerManagerClass();// Set the server name and connect to the server.dataServerManager.ServerName = dataServerName;dataServerManager.Connect();// Cast to the admin interface, check permissions, and create the geodatabase.IDataServerManagerAdmin dataServerManagerAdmin = (IDataServerManagerAdmin)dataServerManager;if (dataServerManagerAdmin.IsConnectedUserAdministrator){dataServerManagerAdmin.CreateGeodatabase("LandUse", @"C:\Temp\LandUse.mdf",0, "", 0);// Create a Name object to open the workspace.IWorkspaceName workspaceName = dataServerManagerAdmin.CreateWorkspaceName("LandUse", "VERSION", "dbo.Default");IName name = (IName)workspaceName;IWorkspace workspace = (IWorkspace)name.Open();} }
Creating a scratch workspace
- The factories implement interfaces specific to scratch workspaces (IScratchWorkspaceFactory and IScratchWorkspaceFactory2). The methods and properties of these interfaces are designed specifically for temporary geodatabases.
- Scratch workspaces were designed to be created and used within a single session. If an application is started again at a later time, there is no reliable method for retrieving data that was previously stored in a scratch workspace.
[C#]
public static IWorkspace OpenScratchWorkspace() {// Create a scratch workspace factory.Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.ScratchWorkspaceFactory");IScratchWorkspaceFactory scratchWorkspaceFactory = (IScratchWorkspaceFactory)Activator.CreateInstance(factoryType);// Get the default scratch workspace.IWorkspace scratchWorkspace = scratchWorkspaceFactory.DefaultScratchWorkspace;return scratchWorkspace; }
[C#]
public static IWorkspace OpenFileGdbScratchWorkspace() {// Create a file scratch workspace factory.Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBScratchWorkspaceFactory");IScratchWorkspaceFactory scratchWorkspaceFactory = (IScratchWorkspaceFactory)Activator.CreateInstance(factoryType);// Get the default scratch workspace.IWorkspace scratchWorkspace = scratchWorkspaceFactory.DefaultScratchWorkspace;return scratchWorkspace; }
Connecting to a geodatabase |
In this topic
- About workspaces
- Methods for connecting to a workspace
- Connecting to file geodatabases
- Connecting to personal geodatabases
- Connecting to enterprise ArcSDE geodatabases
- Connecting to a transactional version
- Connecting to a historical marker name
- Connecting to a historical time stamp
- Connecting to personal and workgroup ArcSDE geodatabases
- Using the workspace factory
- Using the DataServerManager
About workspaces
- Shapefile workspaces and ArcInfo workspaces are examples of file-based workspaces (esriFileSystemWorkspace).
- Personal and file geodatabases are examples of local database workspaces (esriLocalDatabaseWorkspace).
- An ArcSDE geodatabase stored in a relational database management system (RDBMS) such as Oracle, DB2, Structured Query Language (SQL) Server, Informix or PostgreSQL is a remote database workspace (esriRemoteDatabaseWorkspace).
Methods for connecting to a workspace
- IWorkspaceFactory.Open—The Open method takes as input a set of connection properties that specify the workspace to establish a connection with.
- IWorkspaceFactory.OpenFromFile—The OpenFromFile method takes the path name of a file or directory that represents a file-based workspace, a local geodatabase workspace, or an ArcSDE connection file and returns the appropriate workspace.
- IWorkspaceFactory2.OpenFromString—The OpenFromString method on the IWorkspaceFactory2 interface was added to allow the opening of a workspace using a connection string that describes the connection properties for the workspace. The connection string is a collection of name value pairs separated by semicolons (;).
Connecting to file geodatabases
[C#]
// For example, path = @"C:\myData\myfGDB.gdb".
public static IWorkspace FileGdbWorkspaceFromPath(String path){
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.FileGDBWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.OpenFromFile(path, 0);}
Connecting to personal geodatabases
[C#]
// For example, path = @"C:\myData\mypGDB.mdb".
public static IWorkspace AccessWorkspaceFromPath(String path){
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.AccessWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.OpenFromFile(path, 0);}
Connecting to enterprise ArcSDE geodatabases
- SERVER—The SDE server being connected to.
- INSTANCE—The instance being connected to.
- DATABASE—The database being connected to. The DATABASE property is optional and is required for ArcSDE instances that manage multiple databases (for example, SQL Server).
- USER—The connected user.
- PASSWORD—The connected user's password.
- AUTHENTICATION_MODE—The credential authentication mode of the connection. Acceptable values are the operating system authentication (OSA) and database management system (DBMS). The default is DBMS. If the AUTHENTICATION_MODE is OSA, the USER and PASSWORD properties are not required. OSA uses the operating system credentials to establish a connection with the database.
- VERSION—The transactional version to connect to. The acceptable value is a string that represents a transaction version name.
- HISTORICAL_NAME—The historical version to connect to. The acceptable value is a string that represents a historical marker name.
- HISTORICAL_TIMESTAMP—The moment in history to establish a historical version connection. The acceptable value is a date object containing a date time that represents a moment time stamp. The formatting of the date is DBMS specific (for example, SQLServer = "1/1/2006 12:00:01 AM").
Connecting to a transactional version
[C#]
// For example, server = "Kona".// Database = "SDE" or "" if Oracle.// Instance = "5151".// User = "vtest".// Password = "go".// Version = "SDE.DEFAULT".
public static IWorkspace ConnectToTransactionalVersion(String server, String instance, String user, String password, String database, String version){
IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", server);
propertySet.SetProperty("INSTANCE", instance);
propertySet.SetProperty("DATABASE", database);
propertySet.SetProperty("USER", user);
propertySet.SetProperty("PASSWORD", password);
propertySet.SetProperty("VERSION", version);
Type factoryType = Type.GetTypeFromProgID( "esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance (factoryType);
return workspaceFactory.Open(propertySet, 0);}
Connecting to a historical marker name
[C#]
// For example, server = "Kona".// database = "sde" or "" if Oracle.// instance = "5151".// user = "vtest".// password = "go".// historicalName = "Year End 2006".
public static IWorkspace ConnectoToHistoricalVersion(String server, String instance,
String user, String password, String database, String historicalName){
IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", server);
propertySet.SetProperty("INSTANCE", instance);
propertySet.SetProperty("DATABASE", database);
propertySet.SetProperty("USER", user);
propertySet.SetProperty("PASSWORD", password);
propertySet.SetProperty("HISTORICAL_NAME", historicalName);
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.Open(propertySet, 0);}
Connecting to a historical time stamp
[C#]
// For example, server = "Kona".// database = "sde".// instance = "5151".// user = "vtest".// password = "go".// timestamp = "1/1/2006 12:00:01 AM".
public static IWorkspace ConnectToHistoricalTimestamp(String server, String instance,
String user, String password, String database, String timestamp){
IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", server);
propertySet.SetProperty("INSTANCE", instance);
propertySet.SetProperty("DATABASE", database);
propertySet.SetProperty("USER", user);
propertySet.SetProperty("PASSWORD", password); // Convert a string representing a date to a date object when using it // throughout the archiving API.
DateTime dateTime = Convert.ToDateTime(timestamp);
propertySet.SetProperty("HISTORICAL_TIMESTAMP", dateTime);
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.Open(propertySet, 0);}
[C#]
// For example, connectionFile = @"C:\myData\Connection to Kona.sde".
public static IWorkspace ArcSdeWorkspaceFromFile(String connectionFile){
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.OpenFromFile(connectionFile, 0);}
[C#]
// For example, connectionString = "SERVER=Kona;DATABASE=sde;INSTANCE=5151;USER=Editor;PASSWORD=Editor;VERSION=sde.DEFAULT".
public static IWorkspace ArcSdeWorkspaceFromString(String connectionString){
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory2 workspaceFactory2 = (IWorkspaceFactory2)
Activator.CreateInstance(factoryType);
return workspaceFactory2.OpenFromString(connectionString, 0);}
Using the workspace factory
[C#]
// For example, for direct connect with OSA authentication.// Server = "tivo_sqlexpress".// Instance = "sde:sqlserver:tivo\\sqlexpress".// Database = "sewer".// Authentication_mode = "OSA".// Version = "dbo.DEFAULT".
public static IWorkspace WorkgroupArcSdeWorkspaceFromPropertySet(String server,
String instance, String authenticationMode, String database, String version){
IPropertySet propertySet = new PropertySetClass();
propertySet.SetProperty("SERVER", server);
propertySet.SetProperty("INSTANCE", instance);
propertySet.SetProperty("DATABASE", database);
propertySet.SetProperty("AUTHENTICATION_MODE", authenticationMode);
propertySet.SetProperty("VERSION", version);
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.Open(propertySet, 0);}
[C#]
// For example, connectionFile = @"C:\myData\Connection to tivo.sde".
public static IWorkspace WorkgroupArcSdeWorkspaceFromFile(String connectionFile){
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance
(factoryType);
return workspaceFactory.OpenFromFile(connectionFile, 0);}
[C#]
// For example, connectionString = "SERVER=tivo_sqlexpress;DATABASE=sewer;INSTANCE=sde:sqlserver:tivo\\sqlexpress;AUTHENTICATION_MODE=OSA;VERSION=dbo.DEFAULT".
public IWorkspace WorkgroupArcSdeWorkspaceFromString(String connectionString){
Type factoryType = Type.GetTypeFromProgID(
"esriDataSourcesGDB.SdeWorkspaceFactory");
IWorkspaceFactory2 workspaceFactory2 = (IWorkspaceFactory2)
Activator.CreateInstance(factoryType);
return workspaceFactory2.OpenFromString(connectionString, 0);}
Using the DataServerManager
- VERSION—Transactional version to connect to. The acceptable value is a string that represents a transaction version name.
- HISTORICAL_NAME—Historical version to connect to. The acceptable value is a string that represents a historical marker name.
- HISTORICAL_TIMESTAMP—Moment in history to establish a historical version connection. The acceptable value is a date object containing a date time that represents a moment time stamp.
[C#]
// For example, serverName = "tivo\\sqlexpress".// gdbName = "sewer".// versionPropName = "VERSION".// versionName = "dbo.DEFAULT".
public static IWorkspace WorkgroupArcSdeWorkspaceFromDSM(String serverName, String gdbName, String versionPropName, String versionName){
// Create a Data Server Manager object.
IDataServerManager dataServerManager = new DataServerManagerClass();
// Set the server name and connect to the server.
dataServerManager.ServerName = serverName;
dataServerManager.Connect(); // Open one of the geodatabases in the database server.
IDataServerManagerAdmin dataServerManagerAdmin = (IDataServerManagerAdmin)
dataServerManager;
IWorkspaceName workspaceName = dataServerManagerAdmin.CreateWorkspaceName
(gdbName, versionPropName, versionName); // Cast from the workspace name to utilize the Open method.
IName name = (IName)workspaceName;
IWorkspace workspace = (IWorkspace)name.Open();
return workspace;}
GP学习(六)—Creating geodatabase and connecting geodatabase相关推荐
- GP学习(七)—Accessing raster workspaces
声明:仅做自己学习整理用,内容拷贝自ArcEngine SDK开发文档 Accessing raster workspaces Summary Rasters can reside in a fold ...
- Apollo代码学习(六)—模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码
Apollo代码学习(六)-模型预测控制(MPC)_follow轻尘的博客-CSDN博客_mpc代码
- 艾伟:C#多线程学习(六) 互斥对象
本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个线程 C#多线程学习(三) 生产者和消费者 C#多线程学习(四) 多线程的自动管理(线程池) C#多线程学习( ...
- C#多线程学习(六) 互斥对象
C#多线程学习(六) 互斥对象 原文链接:http://kb.cnblogs.com/page/42533/ 本系列文章导航 C#多线程学习(一) 多线程的相关概念 C#多线程学习(二) 如何操纵一个 ...
- OpenCV与图像处理学习六——图像形态学操作:腐蚀、膨胀、开、闭运算、形态学梯度、顶帽和黑帽
OpenCV与图像处理学习六--图像形态学操作:腐蚀.膨胀.开.闭运算.形态学梯度.顶帽和黑帽 四.图像形态学操作 4.1 腐蚀和膨胀 4.1.1 图像腐蚀 4.1.2 图像膨胀 4.2 开运算与闭运 ...
- PyTorch框架学习六——图像预处理transforms(二)
PyTorch框架学习六--图像预处理transforms(二) (续)二.transforms的具体方法 4.图像变换 (1)尺寸变换:transforms.Resize() (2)标准化:tran ...
- JMS学习六(ActiveMQ消息传送模型)
JMS学习六(ActiveMQ消息传送模型) ActiveMQ 支持两种截然不同的消息传送模型:PTP(即点对点模型)和Pub/Sub(即发布 /订阅模型),分别称作:PTP Domain 和Pub/ ...
- Docker学习六:综合实践
前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...
- (转)MyBatis框架的学习(六)——MyBatis整合Spring
http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...
最新文章
- 简明python教程 --C++程序员的视角(九):函数式编程、特殊类方法、测试及其他...
- 浅谈AJAX并实现使用pagehelper-5.1.10.jar分页插件实现异步从数据库中获取数据分页显示
- c/c++操作mysql数据库使用utf8总结
- wps图表xy轴颠倒_用EXCEL来搞艺术之图表类型变换
- memchache的数据类型_memcache详解
- jpanel把原本内容覆盖掉_暖冬遇上倒春寒,花被大雪覆盖,小心一夜回到解放前...
- c语言如何在手机上运行程序,各位前辈这两个程序怎么在手机上运行
- Gson反序列化详解
- 数据展现DataList控件(26)
- 通过波特率计算数据传输时间
- matlab单枝节匹配器,第八讲微带匹配电路单枝节匹配电路.ppt
- XUI 熟练使用之(一) ----------- 将 XUI 引入项目
- 从零开始自制实现WebServer(十九)---- 正式系统的学习一下Git 捣鼓捣鼓github以及一些其他的小组件
- lego_loam 代码阅读与总结
- get请求图片出现403 防盗链解决方式 no-referrer
- app推广有哪些方式?
- 关于16路及以上的X86服务器架构
- HDMI视频画面分割器的优势主要有哪些?
- pyinstaller打包-py获取依赖文件的绝对路径方法
- this kernel requires an x86-64 CPU, but only detected an i686 CPU. unable to boot - please ues a ke
热门文章
- bzoj1015 [JSOI2008]星球大战 并查集
- 2017.8.16 喵星球上的点名 思考记录
- node ajax validator,node/express 4:在ajax post上使用express-validator显示错误
- python turtle工具箱_python 库之 turtle(图形绘制) 开启新的快乐源泉
- 【英语学习】【Level 08】U01 Let's Read L1 All the world's a stage
- C#实现图(Graph)
- python Django之Web框架本质 (2)
- 4G通信技术LTE介绍
- php引用其他接口,PHP 接口与接口的引用
- Java返回int型的空值_使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法...