ArcEngine For Java 初始化AO

    在初始化之前首先需要引入arcobjects.jar 这个jar,这个jar是ArcGIS Engine for JAVA 二次开发的主要sdk,具体详情看ESRI官网介绍
    maven 仓库地址:https://mvnrepository.com/artifact/com.esri.arcgis/arcobjects

    在配置文件中要添加支持多版本的工作方式:

#arcgis
aoRuntimeProduct=1  //第一个参数是arcgis产品编号:1=desktop,2=engine,5=server
aoRuntimeVersion=10.2

初始化AO代码块:

/**
     * 初始化ao
     *
     * @param aoInit
     * @return
     */
    public AoInitialize initializeEngine(AoInitialize aoInit) {
        try {
            EngineInitializer.initializeEngine();

            // 设置使用的arcgis产品和版本,使ao能运行在不同的arcgis环境下
            // 下面这行代码会报错,可是VersionManager又要在AoInitialize实例化前运行,而且这个错不影响代码运行,所以暂时不管
            VersionManager versionManager = new VersionManager();
            // 第一个参数是arcgis产品编号:1=desktop,2=engine,5=server
            // 此参数可以通过枚举查看esriProductCode
            // versionManager.loadVersion(1, "10.0");
            versionManager.loadVersion(Integer.parseInt(ConstansURL
                    .getApplicationPropertyByKey("aoRuntimeProduct")), ConstansURL
                    .getApplicationPropertyByKey("aoRuntimeVersion"));

            aoInit = new AoInitialize();
            // 下面虽然有Engine和ArcInfo两种产品,但在本系统只有Engine才能用,ArcInfo会出错
            if (aoInit
                    .isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine) == esriLicenseStatus.esriLicenseAvailable) {
                aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);
            } else if (aoInit
                    .isProductCodeAvailable(com.esri.arcgis.system.esriLicenseProductCode.esriLicenseProductCodeArcInfo) == com.esri.arcgis.system.esriLicenseStatus.esriLicenseAvailable) {
                aoInit.initialize(esriLicenseProductCode.esriLicenseProductCodeArcInfo);
            }
            return aoInit;
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
            return aoInit;
        }
    }

当然上面的初始化方法还有有改进的地方的,因为上面场景只适用于单线程中,且刚好满足使用单例设计模式的需求。

如果后期并发量比较高的时候考虑使用锁方式进行单例加锁,不过会使得用户体验变得非常不好。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值