GIS
文章平均质量分 83
孙群
关注前端HTML5,关注地理数据可视化,热爱移动互联网,爱开源,爱分享!
展开
-
本地部署离线ArcGIS JavaScript库
Installing the ArcGIS API for JavaScript™ LibraryThe instructions below assume that you are installing the ArcGIS JavaScript API library in the following location on an IIS Web Server, "http:///ar翻译 2012-06-09 23:21:53 · 2810 阅读 · 0 评论 -
WebGL自学课程(8):WebGL+ArcGIS JS API实现TerrainMap
转载请注明出处以前在Esri的博客上看到了一篇用Silverlight+Balder实现TerrainMap的文章,实现的功能是将指定的二维投影地理范围转换成三维地形图,这是链接地址http://maps.esri.com/sldemos/terrainmap/default.html,感觉很有意思,最近在看WebGL,所以就想用WebGL重新进行实现,其中用ArcGIS JS API获取原创 2012-08-20 03:01:22 · 12891 阅读 · 2 评论 -
WebGL+ArcGIS JS API实现Web城市地下管线三维场景浏览
注:转载请注明出处WebGL发展的如火如荼,未来的WebGIS也应该体现3D的趋势,本人的本科毕业论文是《Web城市地下管线三维场景浏览技术研究》,通过ArcGIS JS API获取地理数据,然后用WebGL框架Three.js将该地理数据进行三维展示。本论文主要具有以下创新点:(1)在传统的WebGIS的基础上,借助于主流的IT技术(WebGL)实现了在传统网页中嵌入三维GI原创 2012-06-29 17:31:45 · 40080 阅读 · 33 评论 -
在SceneControl中通过鼠标单击获得三维射线、产生三维的点
我的思路是这样的:在SceneControl的空白处点击,不可能确定一个三维点,应该可以得到无数点,这些点在一条直线上,且与观察点共线,我现在想得到z值为0的那个点,于是我通过SceneControl的单击事件数据e获取屏幕坐标e.x和e.y,然后用DisplayTransformation.ToMapPoint方法将屏幕坐标转换为实际的地图坐标Point,然后给该点的z值赋值0,按说这样就可以通原创 2011-11-08 09:26:48 · 3905 阅读 · 5 评论 -
ArcObjects中的GraphicsLayer---------元素的容器
图形元素(Graphic Element)是存储于GraphicsLayer中的,本文主要涉及的接口和类主要有以下几种:IGraphicsContainer、IGraphicsLayer、ICompositeGraphicsLayer、GraphicsSubLayer类、CompositeGraphicsLayer类。GraphicsSubLayer类主要实现了接口IGraphicsC原创 2011-10-28 21:04:17 · 3996 阅读 · 1 评论 -
AO中的Inbound Interface和Outbound Interface
转http://bbs.esrichina-bj.cn/esri/viewthread.php?tid=62821&highlight=inbound%2Binterface接口编程可以认为是b/s架构的,对于入接口,我们在客户端声明一个对象,然后调用接口的方法即可,这些方法是在客户端实现的,我们不用考虑,但是这样的交互,我们是主动地,还有一类接口就是出接口,方法由我们实现,然后是服务器调用,转载 2011-10-31 19:35:26 · 3095 阅读 · 0 评论 -
ArcGIS中的数据集Dataset总结
在ArcCatalog中,很多人认为的数据集主要指的是要素数据集。其实,esri中Dataset中的类型远远不止这一种,还包括很多,如下图红色标注的都是esri的数据集类型从中我么可以看出,其实一个单纯的要素类(对应着一个要素类图层)也是一种数据集,一个栅格(对应着一个栅格图层)也是一个数据集,是一个。实际上,栅格图层(Raster Dataset),是Raster Band对原创 2011-10-27 09:36:54 · 5635 阅读 · 0 评论 -
基于MultiPatch的三维管线的生成方法
将二维的管线生成三维的MultiPatch有两种思路,第一种是用TriangleStrip来依次构造出管线首尾处的点;另一种方式是首先构造出管线的一个底面,然后用IConstructMultiPatch接口将该底面拉伸成MultiPatch管线。1.方法一:用TriangleStrip创建MultiPatch类型的管线/// /// 用TriangleStrip创建Mul原创 2012-02-24 12:20:45 · 6498 阅读 · 9 评论 -
ArcObjects中接口问题总结
1.在AO中,一个接口可以继承自另一个接口,假如存在接口A,接口B继承自接口A,类C实现了接口B,那么在ArcEngine的帮助文档中,你会显式的的发现类C同时实现了接口B和接口A,而不仅是接口B。如下下面两幅图图所示,比如ITinLayer2接口继承了ILayer接口,TinLayer类实现了ILayer接口和ITinLayer2接口注:ITinLayer2接口替换了ITinLayer接原创 2011-10-25 21:18:19 · 2548 阅读 · 0 评论 -
《基于Web和移动终端的三维城市地下管线管理系统》系统环境配置说明
在进行IIS发布的时候要注意以下几点:1.关闭防火墙,否则无法访问2.检查sde服务是否设置为自动启动,如果没有启动,手动启动,然后在ArcCatalog中重启地图服务3.在Win7上先安装ArcGIS会导致修改注册表,使得WP7.1等软件无法安装。解决方法是:最后安装ArcGIS,或者在安装了ArcGIS后再将注册表修改为正确的值:HKEY_LOCAL_MACHINE->SYST原创 2011-11-30 12:39:47 · 4454 阅读 · 0 评论 -
ArcObjects中的类结构关系图
在ArcObjects中类分为三种,分别是抽象类(Abstract Class),组件类(CoClass)和普通类(Class)[普通类也叫做实例化类]。如下图所示:为了更能形象的说明问题,将上图具体化一个示例,如下图所示:抽象类只能被继承。组件类可以用New关键字创建。普通类不能用New关键字创建,可以认为它的构造函数是private的,只能通过其他类原创 2011-10-25 19:22:05 · 4403 阅读 · 0 评论 -
ArcObjects中根据数据源生成相应的图层
本文主要谈三种数据源,分别是要素图层、栅格图层、Tin图层,所涉及的接口和类主要有:FeatureLayr和FeatureClass、RasterLayer与RasterDataset、TinLayer与Tin。1.根据要素类数据源生成要素图层 //已知pFeatureClass是FeatureClass类的实例 IFeatureLayer pFeatureLayer =原创 2011-10-29 08:24:44 · 3012 阅读 · 0 评论 -
基于SceneControl的三维GIS开发入门
在ArcGIS体系中,三维开发包括两种:基于Scene的三维开发和基于Globe的三维开发。由上图可以看出,两种开发的接口都很相似,掌握了Scene开发会相对容易的过渡到Globe开发中。正如上图所示,Scene开发常用的接口有IScene、ISceneGraph、ISceneViewer、I3DViewer、ICamera等接口,除此之外IGraphicsLayers3D、I3D原创 2012-02-21 13:08:06 · 8636 阅读 · 1 评论 -
捕获SceneControl的BeforeDraw、AfterDraw事件
由于捕获BeforeDraw与AfterDraw事件的方法相同,我们以AfterDraw为例进行说明。首先我们来看看什么时候用到BeforeDraw和AfterDraw。在AE的帮助文档中,BeforeDraw事件备注如下:This event method is often used by an OpenGL routine that renders something before t原创 2012-02-22 11:26:30 · 3667 阅读 · 0 评论 -
基于SceneControl单击查询功能的实现
代码如下: private void HandleIdentify_MouseDown(object sender, ISceneControlEvents_OnMouseDownEvent e) { this.PipeSceneControl.Scene.ClearSelection();//清除之前的选择集,去除高亮显示原创 2012-02-22 17:03:27 · 4209 阅读 · 1 评论 -
ArcGIS Engine基础开发教程(3)——学习地图和地图布局
ESRI BBS GIS大讲堂首发,转载请注明出处http://bbs.esrichina-bj.cn/ESRI/thread-46577-1-1.html本章是ArcGIS Engine基础开发教程的第三章,主要给大家大致讲解了,地图和地图布局的相关对象。这些对象非常重要,如果这些基本对象都不熟悉就开始搞ArcGIS Engine开发是不科学的也走不远的。3地图和地图布局3.转载 2011-10-24 20:59:41 · 5917 阅读 · 1 评论 -
关于IWorkspaceName
Workspace对象相当于一个地理数据库,它里面保存着数据集对象,要素类,要素数据集,属性表等数据集对象。在物理级别上,它相当于地理数据库本身-----一个Access数据库或SDE数据库、coverage工作空间或者Shapefile文件夹。WorkspaceName,顾名思义,通过它可以得到Access数据库或其他工作空间的一些最基本的一些关于Name相关的信息。Worksp原创 2011-10-29 20:30:45 · 5255 阅读 · 0 评论 -
自己构建Ajax请求进行模拟QueryTask进行查询
ArcGIS JS API中用Query和QueryTask进行查询的时候其实是进行的Ajax请求,只不过是将该Ajax请求进行了封装,更好的方便二次开发人员调用而已。有时候我们用QueryTask进行查询的时候,传的参数的数据可能比较大,比如query.geometry经过序列化后超过了2KB,那么就需要执行post请求,这样就会造成ajax的跨域访问问题。一般的解决办法是使用ArcGIS所提供原创 2012-12-14 22:39:40 · 3527 阅读 · 0 评论 -
WebGL自学课程(16):WebGlobe实现的基本算法原理
WebGlobe(http://blog.csdn.net/sunqunsunqun/article/details/9119735)能够加载多种切片地图服务,并将其以正确的形式显示出来,本博文将阐述一下WebGlobe的基本算法原理,之所以称之为“基本”,原因是在实际开发过程中要竟可能的优化这些算法,自己在开发的过程中通过不断总结,发现根本的算法其实就是一句话:我只请求并显示那些应该被我们所看到原创 2013-06-23 15:41:44 · 9176 阅读 · 5 评论 -
WebGL自学课程(15):WebGL在WebGIS上的应用——WebGlobe
好久没写博客了,最近在工作之余用WebGL做了个WebGlobe,类似于Google Earth之类的东西,当然肯定没人家那个强大了。没有使用任何的WebGL图形库,自己把WebGL绘图命令封装成了一个轻量级的渲染引擎,想通过自己去亲自编码实现洞察Google Earth这种东西是怎么做出来的。整个Demo就一个文件,一共40kb,纯js实现,没有使用任何的第三方图形库或第三方js库。可以加载Go原创 2013-06-18 13:20:28 · 13073 阅读 · 22 评论 -
WebGL自学课程(3):原生WebGL+ArcGIS JS API绘制旋转的地球
注:转载请注明出处通过ArcGIS JS API获取地理数据,然后用原生WebGL将其绘制成旋转的地球。一共需要241271个点,绘制了247个国家或地区。截图:以下是代码: World html,body,div{margin:0;padding:0}原创 2012-07-02 13:35:14 · 11557 阅读 · 6 评论 -
WebGL自学课程(10):通过OpenStreetMap获取数据绘制地球
好久没写博客了,今天再写一篇。前几天想通过OpenStreetMap访问数据来绘制一个最最最最最简单的WebGoogleEarth的雏形,这个Demo比较简单,只是简单的获取OpenStreetMap某一个切片层级下面的所有的切片,然后按照正确的贴图方式绘制在地球上,也就是说这个Demo没有考虑图层的动态管理等等。最后将渲染的代码以EarthOSM类的形式封装到了自己的World.js中,可以用鼠原创 2012-09-13 19:18:22 · 5346 阅读 · 4 评论 -
10.1中SOE新特性
ArcGIS for Server 10.1有很多的改变,这些改变对SOE有影响并且使得SOE的部署更加简单。一下是你需要关注的不同点:1.一步部署——创建REST和SOAP的SOEs的模板已经升级到了10.1。在.Net模板中,.Net attributes包含了所有SOE重要的信息,比如SOE暴露出的properties和capabilities。这使得SOE能够打包以便在你创建软件的原创 2013-01-01 19:04:00 · 1942 阅读 · 0 评论 -
SOE Schema、SOE Resources、SOE Operations
URLhttp:///exts/Parent ResourceMap Service描述组织机构通过服务器对象扩展SOE扩展ArcGIS Servera,用Web APIs暴露出他们自定义的GIS功能。ArcGIS的REST API将ArcGIS Server发布的服务暴露给WebAPIs,REST API也可以被扩展用以对自定义的SOE提供相同的支持————将原创 2013-01-01 12:43:28 · 2073 阅读 · 0 评论 -
SOE开发概览
关于SOE一个SOE就是一个组件对象模型(COM),其由.Net或Java实现了IServerObjectExtension 接口和一些其他必须实现的接口。服务实例(也可称作“服务器对象”)创建了SOE并调用了Init方法,通过server object helper参数可以将SOE作为一个服务器对象引用来处理。SOE可以在服务器对象上调用方法。所有SOE使用的接口(IServerObje原创 2013-01-02 16:19:26 · 4979 阅读 · 0 评论 -
如何将.Net SOE迁移升级到10.1上
将.Net SOE升级到10.1需要你将大部分已经存在的代码拷贝到Visual Studio的REST模板或者SOAP模板中。之所以要这么做是因为10.1的模板包含了打包的逻辑,可以将SOE打包成一个.soe文件。这个文件是在10.1中新增的,并且提供了将SOE一步部署到ArcGIS for Server上的能力。当SOE项目被创建的时候,这个.soe文件也随之被创建。10.1模板的另一个优势原创 2013-01-01 19:26:45 · 2147 阅读 · 0 评论 -
如何在Visual Studio中打开REST SOE模板
当你安装了ArcGIS .Net SDK之后,你可以在Visual Studio中找到帮你创建REST SOE的模板。按照如下的步骤找到该模板并开始创建REST SOE:1.打开Microsoft Visual Studio。2.单击“文件"---->"新建"----->"项目"。3.在安装模板树中,选择Visual C#-->ArcGIS-->Server Object Extens原创 2013-01-08 23:18:00 · 2583 阅读 · 0 评论 -
REST SOE是什么?
关于REST SOE一种扩展ArcGIS for Server并能够很好的让Web API方便使用的方式就是以Web服务的形式编写SOE。基于REST的服务通过简单的数据类型接收请求参数并返回响应结果,一般是JSON类型。如果你以前没开发过REST,不要被它吓倒。JSON仅仅是一种以标准方式被程序阅读的格式化的文本信息。为了能够使用REST SOE Web服务,需要获取SOE的URL并原创 2013-01-07 23:33:24 · 2693 阅读 · 0 评论 -
关于构建REST风格的SOE的策略
为了能够创建REST风格的SOE,你需要仔细的计划什么信息什么类型的信息会被发送到服务器以及你期望返回什么内容。要考虑到REST SOE包括资源和操作。如下所示:资源就是你从服务器获取的一些信息,比如有可能是地图下的图层列表或者是切片地图中可用层级的信息。如果你有一定的编程经验的话,可以把资源看成一种只读属性。操作就是让服务器对资源进行处理的方法。在执行完一项操作之后,你可能获取文字信息、原创 2013-01-08 21:54:38 · 1949 阅读 · 0 评论 -
开发和部署SOE的步骤
开发一个SOE需要如下的步骤(以.Net为例):1.安装ArcObjects SDK——在你开发SOEs之前,你需要安装ArcObjects SDK for .Net Framework。你也需要安装Microsoft Visual Studio。2.编码——在Visual Studio中使用SOE模板创建一个项目。这个模板确保你的SOE实现了必需的接口以便REST或SOAP服务调用。原创 2013-01-01 18:34:08 · 4054 阅读 · 0 评论 -
REST SOE模板概览
本文将解释REST SOE模板中的部分代码的含义。关于如何打开该模板,请参见如何在Visual Studio中打开REST SOE模板。我们知道一个SOE就是你服务器上的一个COM类,这一点很重要。所以SOE中有几行和COM相关的代码,这些代码给你的SOE分配了一个唯一的ID,并使它对COM是可见的。你也会看到与SOE相关的一些attributes,可以用来定义SOE的显示名称、属性和能力(有原创 2013-01-26 21:46:01 · 2197 阅读 · 0 评论 -
在客户端程序中使用REST SOE
关于在客户端中使用REST SOE一旦你在Manager中部署了你的REST SOE,并且早某个服务中起用了它,那么你就可以在客户端程序中使用它了。因为SOE的本质是一个Web服务,它接受一些简单类型的变量作为参数,比如string、double等等。最复杂的可能是向你的SOE中提交表示一系列geometry顶点的JSON数据。在服务目录中测试SOE由于你向Web服务中提交的都原创 2013-01-27 15:23:19 · 2705 阅读 · 0 评论 -
处理REST SOE请求
关于处理REST SOE请求SOE的schema中的每个资源和操作都需要绑定一个请求处理函数。该函数包含了请求资源或调用操作的时候的逻辑代码。这些处理函数是你编写大部分ArcObjects代码的地方。在REST SOE模板中,已经为你写好了一个资源的请求处理函数RootResHandler()。作为示例,它返回了一个简单的"hello:world" JSON字符串。你可以拷贝RootRes原创 2013-01-27 12:01:23 · 2176 阅读 · 0 评论 -
创建REST SOE的schema
方法CreateRestSchema()对于创建REST SOE是很重要的。在这个方法中,你将为你的服务创建schema,表明SOE支持哪些资源与操作。a.对于每个资源,你将定义一个RestResource。b.对于每个操作,你将定义一个RestOperation。一旦你定义了所有的资源与操作,调用资源和操作的 Add()方法以便创建schema。[C#]private Res原创 2013-01-26 23:41:47 · 3032 阅读 · 0 评论 -
在REST SOE中处理JSON
关于在REST SOE中处理JSON通常当客户端和服务器以REST方式进行通信的时候,它们是以JSON为媒介进行。JSON是一种两个应用程序之间进行传递的数据的高度结构化的格式,在Web服务中非常有用。问题是ArcObjects不识别JSON数据格式。因此你的处理函数必须反序列化JSON格式的输入,这意味着处理函数需要从中抽取出你的业务逻辑所需要的值。当完成了业务逻辑代码之后,你需要将输出原创 2013-01-27 13:19:21 · 3718 阅读 · 0 评论 -
示例:创建REST SOE
单击此处获取与该示例相关的Demo。该示例将会贯穿开发REST服务形式的SOE的整个过程。使用REST服务的好处是你所开发的SOE可以在JavaScript、Flex、Silverlight等各种API上使用。该示例包含以下内容:如何开发REST SOE如何部署REST SOE如何为REST SOE开发属性页如何在一个服务上启用和测试REST SOE在Web应用程序中如原创 2013-01-28 17:46:57 · 2993 阅读 · 1 评论 -
创建REST SOE实战演练系列链接
本文将分几篇博客分别介绍,以下是链接演练:创建REST SOE原创 2013-01-28 17:45:56 · 2264 阅读 · 0 评论 -
HTML5原生WebGL开发系列教程
1. OpenGL中的坐标变换、矩阵变换2. OpenGL ES 2.0编程基础3. 原生WebGL简单Demo4. 在WebGL中使用drawElements绘图5. WebGL不同几何图形的渲染方式6. 使用自定义glTranslate与glRotate7. 原生WebGL+ArcGIS JS API绘制旋转的地球8. WebGL矩阵、Camera基础操作9. WebGL使用一张贴图纹理绘制地球原创 2017-05-02 12:20:56 · 11313 阅读 · 1 评论