将 GeoDB 连接到 ASP.Net Web 应用程序

发布于 2024-11-29 22:17:52 字数 81 浏览 1 评论 0原文

我有一个 GeoDB,其扩展名为 .gdb。有没有人尝试过使用 C# 和 ArcGIS SDK 连接 GeoDB?

I have a GeoDB which has the extension .gdb. Is there any one who has tried to connect a GeoDB using C# with using ArcGIS SDK?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

负佳期 2024-12-06 22:17:52

下面的 ArcObjects 代码要求您已签出许可证。 (具体操作方式取决于您安装的 ArcGIS 版本。例如,对于 ArcGIS 9.3.1,调用 IAoInitialize.Initialize 就足够了。在 ArcGIS 10 中,您还需要绑定到首先通过调用 ESRI.ArcGIS.RuntimeManager.BindLicense 生成一个产品。)

using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
…

IWorkspaceFactory wsFactory = new FileGDBWorkspaceFactory();  // (see P.S. below)
IWorkspace ws = wsFactory.OpenFromFile(@"\path\to\your\file.gdb", hWnd);

然后,您可以通过转换打开文件地理数据库中的要素类、表等wsIFeatureWorkspace 并使用该接口的方法,例如 OpenTableOpenFeatureClass 等。


PS: ESRI 实际上建议使用 Activator.CreateInstance 而不是 new 创建工作区工厂(作为单例对象):

类型 wsFactoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
IWorkspaceFactory wsFactory = (IWorkspaceFactory)Activator.CreateInstance(wsFactoryType);
……

(我之前没有提到这一点,因为它为简单的代码示例增加了一些复杂性。)

The ArcObjects code below requires that you've checked out a license. (How that is done depends on the ArcGIS version you've installed. For example, with ArcGIS 9.3.1, a call to IAoInitialize.Initialize was sufficient. In ArcGIS 10, you additionally need to bind to a product first via a call to ESRI.ArcGIS.RuntimeManager.BindLicense.)

using ESRI.ArcGIS.Geodatabase;
using ESRI.ArcGIS.DataSourcesGDB;
…

IWorkspaceFactory wsFactory = new FileGDBWorkspaceFactory();  // (see P.S. below)
IWorkspace ws = wsFactory.OpenFromFile(@"\path\to\your\file.gdb", hWnd);

You can then open feature classes, tables, etc. in the File Geodatabase by casting ws to IFeatureWorkspace and using that interface's methods such as OpenTable, OpenFeatureClass, etc.


P.S.: ESRI actually recommends that workspace factories (being singleton objects) be created with Activator.CreateInstance instead of new:

Type wsFactoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.FileGDBWorkspaceFactory");
IWorkspaceFactory wsFactory = (IWorkspaceFactory)Activator.CreateInstance(wsFactoryType);
…

(I hadn't mentioned that earlier because it adds some complexity to a simple code example.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文