基于纯文本与命令行模式进行ArcGIS开发的实验

基于纯文本与命令行模式进行ArcGIS开发的实验


发布日期: 1970-01-01 更新日期: 2015-02-03 编辑:giser 浏览次数: 3921

标签:

摘要: 一直觉得ArcGIS的开发很复杂。看过的教程上都说要先打开Visual Studio,建立相关的工程,添加窗体,再加入控件。这还不够,还有一个授权的问题。而且还有新旧版本迁移、转换的问题。所以,我觉得在Visual Studio窗口拖曳的背后有着复杂的AO、授...

一直觉得ArcGIS的开发很复杂。看过的教程上都说要先打开Visual Studio,建立相关的工程,添加窗体,再加入控件。这还不够,还有一个授权的问题。而且还有新旧版本迁移、转换的问题。所以,我觉得在Visual Studio窗口拖曳的背后有着复杂的AO、授权与窗体相互耦合的复杂机制。 作为常年使用命令行、纯文本编辑器写程序的人来讲,ArcGIS的这种开发方式无疑是令 我深恶痛绝的。面对着刚刚初步建立的工程文件里面自行产生的众多代码,立刻有一种无能为力的感觉涌上心头。所以尽管也用c#做过一点ArcGIS的开发,但一直感觉对 其开发的方式并不了解。 这次也不知为什么,突然想做一个最简单的基于.net的ArcGIS开发,我想看一下剥去层层外衣的ArcGIS是个什么东西。最简单的方式当然是基于命令行的,没有图形界面,想做点有用的东西,就是地处理了。 做个经典的缓冲分析吧。下面是代码,文件名为Program.cs,当然这不重要。用到一些数据可以自己找,在源代码中修改一下即可。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using ESRI.ArcGIS.Geoprocessor;
    using ESRI.ArcGIS.AnalysisTools;
    using ESRI.ArcGIS.esriSystem;
    class Program
    {
        static void Main( string[] args)
        {
            // 首先要进行授权。没想到是这么简单
            // 原来以为背后还会有一些东西
            // 这种授权方式是针对ArcGIS 10的。            ESRI.ArcGIS. RuntimeManager .Bind(ESRI.ArcGIS.ProductCode .EngineOrDesktop);    
// 设置一些参数变量 string ws = @"d:\w\gdb.gdb\ds" ; string infea = "arc" ; string outfea = "arc_buf" ; int buf_size = 2000; // 创建地处理对象,并设置工作空间 Geoprocessor gp = new Geoprocessor();
gp.SetEnvironmentValue( "workspace" ,ws ); // 缓冲工具,也要建立对象,感觉没有面向过程的语句好理解 ESRI.ArcGIS.AnalysisTools. Buffer bufTool = new ESRI.ArcGIS.AnalysisTools.Buffer (infea, outfea, buf_size); // 最后别忘记执行之。 gp.Execute(bufTool, null ); Console .ReadLine(); } }

很简单的代码。 然后要进行编译,基于命令行的模式。程序引用了一些dll,可以都拷贝到源文件目录下面:

ESRI.ArcGIS.AnalysisTools.dl l,ESRI.ArcGIS.Geoprocessor.dll, 
ESRI.ArcGIS.System.dll,ESRI.ArcGIS.Version.dll。

下面是编译的命令,为了版面的问题分行写了,用的时候要放到一行中:

    csc /r:ESRI.ArcGIS.Geoprocessor.dll,ESRI.ArcGIS.Version.dll,
    ESRI.ArcGIS.System.dll,ESRI.ArcGIS.AnalysisTools.dll 
    /out:run.exe Program.cs

可能是我的大脑比较简单,不简化到最简单的模式,实在是不好理解。两相比较之下,还是简单的Python更适合我。

关注公众号
获取免费资源

随机推荐


Copyright © Since 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org