[Map 3D开发实战系列] Map Resource Explorer 背景介绍--Kick off

简介:


随着对AutoCAD Map 3D开发技术感兴趣的人越来越多,从这篇文章开始,我将以一个小型项目为例,从设计到实现,一步一步的记录一个Map 3D项目的开发过程。如果你对AutoCAD Map 3D二次开发技术感兴趣,欢迎加入这个项目一起学习研究。 这个项目的名字就叫做 Map Resource Explorer,现在已经作为一个开源项目发布在Google Code上,你可以随时查看其源码和进展情况,更欢迎你和我一起参与开发实战。

 

背景介绍:

AutoCAD Map 3D是构建在AutoCAD基础之上的地理信息平台软件,它除了包含了AutoCAD的全部功能,还有丰富的面向地理信息领域的专用工具和功能。Map 3D通过FDO(Feature Data Object)技术直接访问市面上绝大多数的GIS数据格式(包括SDF, SHP, MySQL,Oracle , SQL Server Spatial等),从而避免格式转换,数据冗余,数据多版本维护等麻烦事。

这些数据连接信息、图层等在Map  3D中都以资源的形势存在,他们其实是可以用XML形势表示的。在Map 3D开发调试过程中,我们经常需要检查这些资源的XML是否正确,而现在有没有这样一个工具可以让我们方便的查看Map 3D中资源的情况。这就是这个项目设计的初衷。目标就是设计一个插件,能够遍历浏览Map 3D所有资源及其资源的XML表示。

AutoCAD Map 3D基于AutoCAD构建,因而 AutoCAD的相关API在Map 3D上都能正常运行,而我们对Map 3D进行二次开发,也必然会用到AutoCAD.net API来创建界面等工作; Map 3D 提供的Geospatial Platform API,这是一组基于.net的API,和MapGuide API好多方法属性的用法都是一样的,如果你熟悉MapGuide的开发,就能很快的开始Map 3D的开发。反之亦然,通过这个项目你了解了Map 3D的开发之后,再做MapGuide开发也会有帮助。

 

工具准备:

工欲善其事,必先利其器。开始工作之前首先把必要的工具准备好。

1. AutoCAD Map 3D 2011或者Civil 3D 2011, 这是必然的,ADN用户可以从ADN网站下载,非ADN用户可以到Autodesk网站申请试用版http://usa.autodesk.com/adsk/servlet/pc/index?siteID=123112&id=13842112 

2. Visual Studio 2008 SP1

3. TortoriseSVN,我把这个项目的源码放在GoogleCode上,如果你有兴趣共同学习,你需要TortoiseSVN(http://tortoisesvn.net/downloads)。

4  AnkhSVN,这个工具可以把SVN和Visual Studio界面结合起来,版本控制更方便,下载地址(http://ankhsvn.open.collab.net/)。

 

开始工作:

这个小工具将作为Map 3D的一个插件运行。我们第一步就是在Visual Studio里创建一个Class Library的项目:

image

 

添加AutoCAD及Map 3D相关引用,并把Copy Local属性设置为False,这些程序集都在Map 3D的安装目录下:

AutoCAD.NET相关的程序集:

acmgd.dll

acdbmgd.dll

Map 3D相关程序集:

Autodesk.Map.Platform.dll

Autodesk.Map.Platform.Core.dll

Autodesk.Map.Platform.Utils.dll;

Autodesk.Gis.Map.Shared.dll;

OSGeo.MapGuide.Foundation.dll

OSGeo.MaoGuide.PlatformBase.dll

image

 

把原先的Class1.cs 删除,新建一个名字比较友好的类Command.cs, 我们先写个简单的CmdList命令,这个命令的功能非常简单,就是在命令行上打印出可用的命令:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; 

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Runtime; 

using MapResourceExplorer.UI;
using Autodesk.Gis.Map.Platform.Utils;
using MapResourceExplorer.Model; 

namespace MapResourceExplorer
{

public class Commands
{ 

    [CommandMethod("CmdList")]
    public void CmdListCommand()
    {
        Util.PrintLn("PROMPT: MapResourceExplore commands:");
        Util.PrintLn("\nResourceExplorer");
        Util.PrintLn("\nRegisterEvents");
    } 

}

}
好了,今天先到这儿,下一篇讲怎么运行和调试。

源代码:

我现在已经写了一部分,源码上传到了Google Code,http://code.google.com/p/map-resource-explorer/, 如果你感兴趣可以下载查看。如果你有兴趣加入共同学习那更好了,你可以给我写信把你的gmail账号告诉我。发信到duchangyu#gmail.com(#替换成@)

 

Cheers,

峻祁连

作者: 峻祁连
邮箱:junqilian@163.com 
出处: http://junqilian.cnblogs.com 
转载请保留此信息。



本文转自峻祁连. Moving to Cloud/Mobile博客园博客,原文链接:http://www.cnblogs.com/junqilian/archive/2011/01/28/1947242.html ,如需转载请自行联系原作者
相关文章
|
7月前
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
110 3
|
定位技术
百度地图开发:map.setViewport让标注显示在最佳视野内
百度地图开发:map.setViewport让标注显示在最佳视野内
349 0
|
机器学习/深度学习 定位技术 容器
百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵
百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵
295 0
|
2月前
|
存储 Java 开发者
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【10月更文挑战第17天】本文深入探讨了Java中HashMap和TreeMap两种Map类型的特性和应用场景。HashMap基于哈希表实现,支持高效的数据操作且允许键值为null;TreeMap基于红黑树实现,支持自然排序或自定义排序,确保元素有序。文章通过具体示例展示了两者的实战应用,帮助开发者根据实际需求选择合适的数据结构,提高开发效率。
79 2
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
这篇文章详细解释了在IntelliJ IDEA中如何使用Mute Breakpoints功能来快速跳过程序中的后续断点,并展示了如何一键清空所有设置的断点。
SpringMVC入门到实战------5、域对象共享数据 Request、Session、Application、Model、ModelAndView、Map、ModelMap的详细使用及代码实例
|
4月前
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
|
5月前
|
JavaScript 定位技术
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
286 1
|
5月前
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
442 0
|
6月前
|
存储 Java 数据处理
Java Map实战:用HashMap和TreeMap轻松解决复杂数据结构问题!
【6月更文挑战第18天】在Java中,HashMap基于哈希表提供快速的键值对操作,适合无序数据;而TreeMap利用红黑树保证排序,适用于有序场景。示例展示了HashMap如何存储并查找用户信息,以及TreeMap如何按员工编号排序存储员工名。两者在不同需求下优化了数据处理。
162 0
|
7月前
|
JavaScript
webpack-devtool选项 --生成source-map便于开发调试(二)
webpack-devtool选项 --生成source-map便于开发调试(二)
235 0