一、目的

因学习需要,使用Java进行Arcgis二次开发。当前对arcgis进行二次开发使用的语言基本是C#,使用Java对Arcgis进行二次开发的很少。于是使用java在idea上进行Arcgis二次开发,给入门的同学做参考,我自己也处于入门阶段,有错漏的地方也请大佬赐教。

二、准备

1.idea2017.3.7
2.jdk1.8.0_131_32
3.Arcobjects10.2的jar包
4.Arcobjects java api文档
5.官方示例代码
说明:开发所使用的jdk必须为32位的,Arcobjects的jar包,.Arcobjects java api文档和官方示例代码均在安装Arcgis for Desktop和Arcobjects Sdk for Java后可以找得到,具体可见
链接: https://blog.csdn.net/qq_43792037/article/details/123568082.

三、操作

3.1 创建一个普通的Java项目

3.2 添加依赖

将Arcobjects.jar添加到项目依赖中

3.3 新建一个GIS应用程序类

3.3.1 创建一个类AppView

public class AppView extends JFrame {JPanel mainPanel = null;// 主面板JPanel rightPanel = null;// 右侧面板MapBean mapBean = null;// 地图组件ToolbarBean toolbarBean = null;// 工具栏IToolbarPalette toolbarPalette = null;// 右键工具菜单TOCBean tocBean = null;// 图层public AppView() throws Exception {// 界面名字setTitle("arcObjects二次开发");// 创建界面buildFrame();// 设置大小setSize(900,600);// 初始化toolbarinitToolBar();// 设置关闭界面即停止程序setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置界面可被看见setVisible(true);}
}

3.3.2 添加initToolBar方法,初始化工具栏

    private void initToolBar() {try {tocBean.setBuddyControl(mapBean);toolbarBean.setBuddyControl(mapBean);// 设置图层可以移动tocBean.setEnableLayerDragDrop(true);// 对toolbarPalette菜单添加按钮toolbarPalette = new ToolbarPalette();toolbarPalette.addItem(new ControlsSelectTool(), 0, -1);// 选择toolbarPalette.addItem(new ControlsNewCircleTool(), 0, -1);// 画⚪toolbarPalette.addItem(new ControlsNewCurveTool(), 0, -1);// 曲线toolbarPalette.addItem(new ControlsNewEllipseTool(), 0, -1);// 椭圆toolbarPalette.addItem(new ControlsNewLineTool(), 0, -1);// 线toolbarPalette.addItem(new ControlsNewPolygonTool(), 0, -1);// 多边形toolbarPalette.addItem(new ControlsNewRectangleTool(), 0, -1);// 矩形toolbarPalette.addItem(new ControlsNewFreeHandTool(), 0, -1);// 任意线toolbarPalette.addItem(new ControlsEditingEditTool(), 0, -1);// 编辑// 按钮,0,-1,是否开始分组,组间间隔,是否在按钮旁边显示文字toolbarBean.addItem(new ControlsOpenDocCommand(),0,-1,true,0,esriCommandStyles.esriCommandStyleIconOnly);// 添加打开文件按钮toolbarBean.addItem(new ControlsMapZoomInTool(),0,-1,true,0,esriCommandStyles.esriCommandStyleIconOnly);// 放大toolbarBean.addItem(new ControlsMapZoomOutTool(),0,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);// 缩小toolbarBean.addItem(new ControlsMapFullExtentCommand(),0,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);// 全图toolbarBean.addItem(new ControlsMapPanTool(),0,-1,false,0,esriCommandStyles.esriCommandStyleIconOnly);// 拖拽toolbarBean.addItem(new ControlsSelectFeaturesTool(), 0, -1, true, 0, esriCommandStyles.esriCommandStyleIconOnly);// 选择toolbarBean.addItem(new ControlsClearSelectionCommand(), 0, -1, false, 0, esriCommandStyles.esriCommandStyleIconOnly);// 清除选择toolbarBean.addItem(toolbarPalette,0,-1,true,0,1);// 设置toolbar的按钮可移动
//            toolbarBean.setCustomize(true);} catch (IOException e) {e.printStackTrace();}}

3.3.3 添加buildFrame方法,初始化窗体

    public void buildFrame() throws Exception {// 初始化操作EngineInitializer.initializeVisualBeans();UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());initializeArcGISLicenses();tocBean = new TOCBean();// 对右侧面板添加元素rightPanel = new JPanel();mapBean = new MapBean();rightPanel.setLayout(new BorderLayout());rightPanel.add(mapBean, BorderLayout.CENTER);// 对主面板添加元素mainPanel = new JPanel();mainPanel.setLayout(new BorderLayout());mainPanel.add(tocBean, BorderLayout.WEST);mainPanel.add(rightPanel,BorderLayout.CENTER);toolbarBean = new ToolbarBean();toolbarBean.setSize(650,50);mainPanel.add(toolbarBean,BorderLayout.NORTH);mainPanel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));getContentPane().add(mainPanel, BorderLayout.CENTER);}

3.3.3 添加initializeArcGISLicenses方法,初始化licenses

没有初始化licenses,GIS项目无法运行,这是官方代码,抄就完事了。

    public static void initializeArcGISLicenses() {try {AoInitialize ao = new AoInitialize();if (ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeEngine)== esriLicenseStatus.esriLicenseAvailable)ao.initialize(esriLicenseProductCode.esriLicenseProductCodeEngine);else if (ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeBasic)== esriLicenseStatus.esriLicenseAvailable)ao.initialize(esriLicenseProductCode.esriLicenseProductCodeBasic);else if (ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeStandard)== esriLicenseStatus.esriLicenseAvailable)ao.initialize(esriLicenseProductCode.esriLicenseProductCodeStandard);else if (ao.isProductCodeAvailable(esriLicenseProductCode.esriLicenseProductCodeAdvanced)== esriLicenseStatus.esriLicenseAvailable)ao.initialize(esriLicenseProductCode.esriLicenseProductCodeAdvanced);} catch (Exception e) {e.printStackTrace();}}

3.3.4 添加main方法

public static void main(String[] args) throws Exception {AppView view = new AppView();
}

四、结果

大功告成

完整代码可下载: https://download.csdn.net/download/qq_43792037/84999256.

Arcobjects for java:Arcgis二次开发入门,开发一个基本地图组件相关推荐

  1. java老鸟123怎么样_java入门123——一个老鸟的java学习心得.doc

    java入门123--一个老鸟的java学习心得 java入门123--一个老鸟的java学习心得 篇一:java初学者学习心得 学习Java心得体会 学习了一学期的Java课程,觉得是该总结自己的心 ...

  2. arcgis api for js入门开发系列三地图工具栏(含源代码)

    上一篇实现了demo的地图加载展示,在上篇实现的基础上,新增了地图工具栏以及通用地图控件功能,比如地图框选缩放.地图漫游.清空.量算工具.地图导航控件.地图比例尺控件.地图鹰眼图等等,总共分为5个部分 ...

  3. Java笔记二十四——Spring开发

    Spring是一个支持快速开发Java EE应用程序的框架.它提供了一系列底层容器和基础设施,并可以和大量常用的开源框架无缝集成,可以说是开发Java EE应用程序的必备. 在Spring Frame ...

  4. arcgis api for js入门开发系列十八风向流动图

    本篇主要讲述的是利用arcgis api实现风向流动图,效果图如下: 实现思路: 在esri提供的开源githunb基础上进行修改的:https://github.com/gishome/wind-j ...

  5. arcgis api for js入门开发系列六地图分屏对比(含源代码)

    上一篇实现了demo的地图标绘模块,本篇新增地图地图分屏对比模块,截图如下(源代码见文章底部): 对效果图的简单介绍一下,在demo只采用了两分屏对比,感兴趣的话,可以在两分屏的基础上拓展,修改css ...

  6. arcgis api for js入门开发系列十二地图打印(GP服务)

    上一篇实现了demo的地图统计图,本篇新增地图打印,截图如下: (1)地图打印实现的思路如下:首先在创建好地图打印GP模型,设置好模型的参数:其次是验证模型运行模型:然后是发布地图打印的GP服务:最后 ...

  7. bim 二次开发c语言,BIM百科 | Revit二次开发入门--创建一个简单的程序①

    获取<每日一技,我的成长轨迹>汇总 · 请访问柏慕联创官方网站: www.lcbim.com · Revit插件制作实例步骤: 1.创建你的第一步骤插件 启动 Visual C# 速成版开 ...

  8. arcgis api for js入门开发系列十七在线地图(天地图、百度地图、高德地图)

    本篇主要讲述的是利用arcgis api加载互联网在线地图服务资源,简单封装一个底图切换控件js,在线地图包括:天地图.高德地图以及百度地图,效果图如下: 实现思路: 1.简单的底图切换控件map.L ...

  9. revit二次开发概念_BIM百科 | Revit二次开发入门--创建一个简单的程序

    获取<每日一技,我的成长轨迹>汇总 · 请访问柏慕联创官方网站: www.lcbim.com · 创建一个简单的Revit外部命令程序[Revit2017+VS2015]: 1.打开VS, ...

最新文章

  1. class反编译成java_省事情的java(3)-编译
  2. 深度揭秘强化学习技术与落地!智源大会「强化学习与决策智能」专题论坛
  3. no protocol specified
  4. java api中最常用的五个包_java 5 个常用的api包
  5. .NET6发布了Preview2,这点超越过去10年!
  6. Python爬虫时中文乱码的处理
  7. 使用SQLQuery 在Hibernate中使用sql语句
  8. div透明但不导致内容div透明的解决方法
  9. Object-C---gt;Swift之(二)可选类型
  10. 视频监控物联卡有什么作用
  11. 利用QT写的局域网聊天工具(客户端)
  12. Unity中使用TextMeshPro打出Emoji表情
  13. springboot图片验证码
  14. mysql如何获取当前时间_mysql怎么获取当前时间
  15. 《霍乱时期的爱情》摘要
  16. 我的世界服务器如何修改天气,我的世界怎么切换天气 原来这么简单
  17. 论文笔记《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》
  18. 如何利用hosts碰撞技术遨游内网web系统
  19. npm WARN webpack-cli@3.3.11 requires a peer of webpack@4.x.x but none is installed. You must install
  20. 数据监控预警系统,实现不同端信息推送

热门文章

  1. CI/CD轻量级可持续集成工具
  2. 设计模式笔记之三抽象工厂模式
  3. Matlab实用教程04:cell2mat函数的使用
  4. 你知道古筝演奏技法的三次革命吗
  5. 古筝 4 ·7 音按音几种方法技巧
  6. 阿里P8亲自讲解!成功入职头条月薪35K
  7. 移动互联网将成为过去式,物联网时代已经来临?
  8. 程序员进阶攻略11-20笔记
  9. 月半弯刊第3期 | 再见,深圳!
  10. 如何用计算机装手机系统,怎么用手机给电脑装系统?原来方法如此简单!