自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

HerryDong的博客

Hi,别来无恙

  • 博客(177)
  • 问答 (1)
  • 收藏
  • 关注

原创 ArcEngine编辑模块——批量旋转要素

1、前言在ArcEngine中,要素的批量旋转可以使用IFeatureEdit实现,下面给出实现代码。2、旋转要素2.1、主界面代码using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.SystemUI;using System;using System.Windows.Forms;using WindowsFormsApplication1.Command;namespace WindowsFormsApplication1{ public

2021-11-26 20:25:22 815

原创 ArcEngine实现运动轨迹的播放

1、前言在ArcEngine中,轨迹播放的实现方法很简单:创建一个定时器Timer在定时器的Tick事件中绘制IElement我这里做了一个例子,效果如下图所示:2、实现方法using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Geodatabase;using ESRI.ArcGIS.Geometry;using System;using System.Windows.Forms;namesp

2021-11-25 23:09:49 908 10

原创 ArcEngine编辑模块——创建要素

1、前言在ArcEngine中,创建要素一般分为两部分,即:设置空间信息、设置属性信息。下面给出实现代码。2、定义实体类首先在ArcMap中创建一个点文件,其属性字段如下表所示:字段名称字段类型FID整型Shape几何Longitude(经度)双精度Latitude(纬度)双精度SchoolName(学校名称)文本SchoolType(学校类型)文本根据该属性表创建一个实体类——SchoolModel,代码如下:using Sys

2021-11-23 21:16:10 1905 9

原创 ArcEngine编辑模块——移动多个要素的实现方法

1、前言前一篇博客介绍了在ArcEngine中移动单个要素的实现方法,这篇博客来介绍一下如何移动多个要素。移动多个要素需要使用IMoveGeometryFeedback接口,下面给出实现方法。2、移动多个要素跟上一篇博客一样,首先搭建一个如下图所示的界面:2.1、主界面代码using System;using System.Windows.Forms;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.SystemUI;using EditApp.C

2021-11-19 22:51:52 1052

原创 ArcEngine编辑模块——移动单个要素的实现方法

1、前言在ArcEngine中,移动单个点、线、面要素主要使用以下三个接口:IMovePointFeedbackIMoveLineFeedbackIMovePolygonFeedback需要注意的是:这三个接口每次只能移动一个要素,要素的批量移动将会在下篇博客给出实现方法。2、移动单个面要素以移动单个面要素为例,首先构建如下图所示的界面:2.1、主界面代码using System;using System.Windows.Forms;using ESRI.ArcGIS.Contr

2021-11-18 23:39:26 1026

原创 Entity Framework使用表达式树实现动态条件查询

1、前言在一般的系统开发中,动态条件查询随处可见,下图就是一个典型的动态查询页面:分析上图可以发现:面板中一共设置了4个筛选条件,也就是说一共有16种查询条件的组合形式。由于现在无法确定用户会选择那几个条件作为查询的依据,因此在后台需要动态构建表达式树,下面给出实现代码。2、实现方法2.1、继承ExpressionVisitor作为一个抽象类,ExpressionVisitor无法实例化对象,因此在这里创建一个ParameterRebinder继承它,代码如下:using System.Lin

2021-11-06 23:37:53 2026

原创 OpenLayers基础教程——轨迹回放

1、前言在OpenLayers中,轨迹回放的实现方式有两种:一种是监听postcompose事件,另一种是利用interval定时器实现,下面开始介绍。2、轨迹点数据首先模拟一份轨迹点数据:using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Web;using Newtonsoft.Json;namespace Ro

2021-11-02 15:30:43 6177 2

原创 OpenLayers基础教程——要素的编辑

1、前言在OpenLayers中,要素的编辑主要使用ol.interaction.Select和ol.interaction.Modify配合实现,下面开始介绍。2、编辑要素编辑功能的实现很简答,ol.interaction.Select负责选择要素,ol.interaction.Modify对被选择的要素进行编辑,代码如下:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head>

2021-10-08 16:35:06 2175 2

原创 OpenLayers基础教程——要素的点选、框选、圈选、多边形选择

1、前言在OpenLayers中,框选功能需要ol.interaction.Select和ol.interaction.DragBox配合实现,其中前者主要负责盛放被选择的要素,后者主要负责矩形框的绘制,下面开始介绍。2、框选的实现框选功能的实现思路其实很简单,代码如下:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Conten

2021-09-24 16:39:33 7191 8

原创 NPOI在Excel文件中添加批注

1、前言最近工作中涉及到了Excel批注的添加,经过一番摸索之后终于搞定,下面开始介绍使用NPOI添加批注的方法。2、实现方法2.1、创建新的xlsx文件并添加批注using System;using System.IO;namespace NPOIApp{ class Program { static void Main(string[] args) { using (FileStream stream = new F

2021-09-14 16:30:40 1523

原创 NPOI对已有的Excel文件添加数据的方法

1、前言最近有朋友反馈使用NPOI向已有的xlsx文件中添加数据后,要么无法保存新增数据,要么直接报出下图所示的错误,下面就来说一下如何利用NPOI向一个已有的xlsx文件添加数据的方法。2、实现方法假设当前有一个xlsx文件,其数据如下图所示:如果要向该文件添加一行新的数据,只要分三步走即可:1、创建文件流读取xlsx2、添加新的数据3、创建文件流写入xlsxusing System;using System.IO;namespace NPOIApp{ class Pr

2021-09-14 11:15:52 7936 3

原创 OpenLayers基础教程——实现popup弹出框

1、前言在OpenLayers中,一般使用ol.Overlay实现popup弹出框,弹出框一般用于显示地图上兴趣点的一些属性信息,如下图所示。下面开始介绍实现方法。2、准备测试数据在SqlServer中新建一张省会数据表——ProvincialCapital,字段如下表所示:字段含义Id自增主键CityName城市名称ProvinceCode省份编码Pinyin拼音Attribution归属CityCode城市编码PostCode

2021-08-20 14:39:59 7971 9

原创 ArcEngine图层标注

1、前言在ArcEngine中,图层标注用的还是很多的,下面就来介绍一下ArcEngine中的标注功能。首先准备一份面要素文件,其属性表如下图所示:2、图层标注2.1、基本标注基本标注可以利用ITextSymbol接口实现,代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Li

2021-04-29 23:17:27 1929 2

原创 ArcEngine导出地图

1、前言在利用ArcEngine导出地图的时候,一般有两种情况:全图导出和区域导出,下面分别介绍两种导出地图的方法。首先搭建如下图所示的界面:2、全图导出2.1、利用IPrintAndExport接口using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using ESRI.ArcGIS.Output;using System;using System.Text;using System.Windows.Forms;namespace W

2021-04-25 19:32:12 2089 1

原创 ArcEngine符号化——填充符号选择器

1、前言最后来介绍一下填充符号选择器,如下图所示:在开发填充符号选择器的时候有一个小坑需要注意:有两个填充符号的填充色为无颜色,即颜色为空。如下图所示:2、实现代码2.1、主界面代码using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Geometry;namespace Win{ public partial class frmMain

2021-04-20 19:45:44 1212

原创 ArcEngine符号化——线符号选择器

1、前言这篇博客来实现一个如下图所示的线符号选择器,由于前面已经介绍过点符号选择器的实现了,所以这里就直接贴代码了。2、实现代码2.1、主界面代码using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Controls;using ESRI.ArcGIS.Geometry;namespace Win{ public partial class frmMain : Form {

2021-04-20 18:18:20 555

原创 ArcEngine符号化——点符号选择器

1、前言前面的博客介绍了在ArcEngine中如何创建各类符号,但是回顾一下ArcMap中的操作,你肯定会想:一个一个创建符号实在是太过麻烦,如果有一个符号选择器供我们使用就好了。这篇博客就来介绍一下如何创建一个如下图所示的点符号选择器。2、符号样式文件对于ArcEngine来说,它是不能直接使用ArcMap中的符号库的,它能使用的是一种后缀名为*.ServerStyle的文件。以我的电脑为例,我将ArcGIS安装在了C:\Program Files (x86)\目录下,则ServerStyle文件

2021-04-19 22:13:05 2116

原创 ArcEngine符号化——文本符号

1、前言在ArcEngine中,文本符号主要用于设置IElement的样式,涉及到的接口为ITextSymbol,下面开始介绍。2、实现代码demo的主要功能为:在PageLayoutControl中添加一个地图标题,代码如下:using System;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using stdole;using ESRI.ArcGIS.Geodatabase;

2021-04-18 22:04:43 798

原创 ArcEngine符号化——点密度符号

1、前言这篇博客主要介绍一下点密度填充。准备一份面要素数据,其属性表如下图所示:下面我们会使用A和B这两个值类型字段来实现点密度符号化。2、实现代码using System;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using stdole;using ESRI.ArcGIS.Geodatabase;namespace Win{ public partial cl

2021-04-18 21:25:59 604

原创 ArcEngine符号化——填充符号

1、前言这篇博客来介绍一下ArcEngine中的填充符号。填充符号一般有简单填充、点填充、线填充等等,有一类特殊的点密度填充将在下一篇博客介绍。2、常用的填充符号2.1、简单填充符号2.2、点填充符号2.3、线填充符号2.4、叠加填充符号2.5、图片填充符号2.6、渐变填充符号3、实现代码using System;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;usin

2021-04-18 21:18:06 1458

原创 ArcEngine符号化——线符号

1、前言在ArcEngine中,线要素的符号有很多种,如简单线、制图线、离散线、点线等等,下面开始介绍。2、常用的线符号2.1、简单线符号2.2、离散线符号2.3、制图线符号2.4、点线线符号2.5、叠加线符号2.6、图片线符号3、实现代码using System;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using stdole;using ESRI.A

2021-04-18 19:57:24 1296

原创 ArcEngine符号化——统计图表符号

1、前言前一篇博客介绍了如何在ArcEngine中对点状要素进行符号化的方法,而在某些特殊的情况下,我们需要使用点状符号对面状要素进行符号化,也就是本篇要介绍的统计图表符号化。2、数据准备当前有一份面数据,其属性字段表如下图所示:下面我们使用A和B这两个字段对该面要素进行统计图表符号化。3、统计图表符号3.1、柱状图符号3.2、饼状图符号3.3、堆积图符号4、实现代码using System;using System.Windows.Forms;using ESRI.ArcG

2021-04-18 16:53:07 925

原创 ArcEngine符号化——点符号

1、前言在GIS系统的开发过程中,地图符号化其实是非常重要的一块内容。ArcEngine为我们提供了很多种符号样式,现在就来介绍一下ArcEngine中的点状符号。2、常用的点符号2.1、简单符号2.2、箭头符号2.3、叠加符号2.4、字符标记符号2.5、图片符号3、实现代码using System;using System.Windows.Forms;using ESRI.ArcGIS.Carto;using ESRI.ArcGIS.Display;using stdole

2021-04-17 23:01:55 4100

原创 C#判断文件是否被占用

1、前言在C#中判断文件是否被占用一般有两种方法,一是利用FileStream结合try...catch...finally实现,二是调用Windows API实现,下面给出两种方法的代码。2、文件流法using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleA

2021-04-12 16:07:52 11060 2

原创 OpenLayers基础教程——地图交互之绘制图形

1、前言前面的博客其实已经介绍过了如何在openlayers中绘制图形,不过那是基于已有的坐标进行绘制。很多时候,用户往往需要使用鼠标自行在地图上进行图形绘制,这就涉及到了openlayers中的地图交互功能,下面开始介绍。2、绘制基础图形在openlayers中,实现地图交互的类是ol.interaction,默认情况下,openlayers只支持Point(点)、LineString(线)、Polygon(面)、Circle(圆)这四种基本图形。下面一段代码实现了这四种基本图形的绘制:<!

2020-12-14 16:43:28 4958 5

原创 OpenLayers基础教程——点要素图层的聚合显示

1、前言在很多情况下,点要素图层中的要素数量可能会成百上千,这时候如果不做任何处理直接加载到地图上不仅会使用户视觉体验下降,而且也会造成地图界面的卡顿。下面这段代码创建了1000个随机点进行显示:<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta charset="utf-8"

2020-12-10 14:50:47 7089 10

原创 OpenLayers基础教程——要素样式的创建

1、前言在前面的博客中,ol.style这个类的出镜率很高,但限于篇幅的原因,所以一直没有进行详细介绍,下面就来介绍一下openlayers中的样式——ol.style。2、样式的基本组成一个ol.style.Style对象一般包含如下属性:geometry——地理实体image——常用于设置点要素的样式stroke——常用于设置线要素的样式fill——常用于设置面要素的样式text——常用于设置文字标注的样式同时,ol.style.Style类也派生出很多子类,如下所示:ol.s

2020-12-09 22:10:54 3281

原创 OpenLayers基础教程——设置和获取要素图层的属性信息

1、前言大家可以回想一下初学GIS课程的时候老师是如何介绍空间数据的?其实空间数据与一般数据的区别就是:空间数据除了包含位置信息之外,它还会包含一些属性信息。例如常见的shp文件,除了包含shape字段外,它还会包含一些其他的字段,用以描述这条字段的属性,ArcMap中的要素属性表如下图所示:其实在openlayers中,我们也可以给要素设置属性信息,当然在WebGIS中我们需要以JSON的形式进行添加,下面开始介绍。2、设置属性信息在openlayers中设置属性信息很简单,你可以在初始化fea

2020-12-09 20:16:00 7883 3

原创 OpenLayers基础教程——创建要素图层,绘制点线面

1、前言一般来说,我们会选择百度、高德、谷歌地图作为一个WebGIS系统的基础底图。底图其实就是存放在服务器上的一张一张的瓦片,它的作用仅仅是供用户浏览而已。而有些地物我们则需要以要素的形式来展现它们,比如GPS实测点、车辆的位置等。下面就来介绍一下如何在openlayers中创建要素图层。2、创建要素图层的基本流程创建要素图层的流程很简单,如下所示:创建样式——ol.style.Style()创建要素,设置其样式——ol.Feature()创建数据源,添加要素——new ol.source.

2020-12-09 19:28:59 5950 4

原创 OpenLayers基础教程——常用的地图事件

1、前言前一篇博客介绍了事件的注册和取消注册,这篇博客就来介绍一下OpenLayers中常用的一些地图事件。2、地图点击事件地图点击事件如下所示:click——地图点击事件singleclick——地图单击事件dblclick——地图双击事件测试代码如下:<!DOCTYPE html><html><head> <meta charset="utf-8" /> <title>OpenLayers</tit

2020-10-14 15:55:56 5395 7

原创 OpenLayers基础教程——地图事件的注册和取消

1、前言在OpenLayers的开发中,事件的身影随处可见。例如,用户点击地图后弹出了一个对话框,这就是事件的典型应用。下面就来介绍一下如何在OpenLayers中注册事件和取消注册事件。2、注册事件事件的注册方式很简单,遵循如下模板即可。其中,事件名称可以是click、dblclick、pointermove等等,后面的function(event)负责编写该事件的处理逻辑。map.on('事件名称', function (event) {});下面就来实现一个小功能:点击地图后显示鼠标点击位

2020-10-14 15:09:50 3318

原创 OpenLayers基础教程——地图的动画效果

1、前言为了提升人机交互的体验,OpenLayers提供了一系列的地图动画效果,它们主要由ol.animation类提供,动画效果可以单独使用,也可以组合使用,下面开始介绍。2、主要类和参数在ol.animation中,最常用到的四个类如下所示,它们分别对应平移、弹跳、旋转、缩放。ol.animation.panol.animation.bounceol.animation.rotateol.animation.zoom要创建一个动画效果的步骤如下所示:// 第一步:获取当前视图va

2020-09-26 23:12:52 3210 2

原创 OpenLayers基础教程——图层列表控件

1、前言很多时候我们需要在一个地图容器中加载多个地图服务,这时候为了方便视图的管理和切换,我们通常会使用图层列表控件。但遗憾的是OpenLayers自带的控件中并不包含图层列表控件,因此我们需要自行实现。下面就来介绍一下如何做一个图层列表控件。2、将要用到的一些函数// 获取当前地图中所有的图层var layers = map.getLayers();// 获取图层个数var length = layers.getLength();// 获取集合中第i个图层var layer = lay

2020-09-22 23:15:55 3235 1

原创 OpenLayers基础教程——地图控件样式的扩展

1、前言上一篇博客介绍了OpenLayers中的一些常规地图控件,而这些地图控件无一例外,使用的都是OpenLayers默认的控件样式。这篇博客就来介绍一下如何利用自定义的CSS样式对地图控件进行控制。2、默认的控件样式我们这里就以地图拾取控件——MousePosition为例进行介绍。首先我们添加一个地图拾取控件,不对其进行样式的修改,代码如下:<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><h

2020-09-21 10:59:38 1891 2

原创 OpenLayers基础教程——常规的地图控件

1、前言熟悉GIS的同志对地图控件应该不会陌生,ArcMap中就有很多地图控件,比如放大、缩小、全图等。其实在OpenLayers中也有很多地图控件,它们都继承了ol.control.Control,下面就来一一介绍。2、缩放——Zoom缩放控件是OpenLayers默认就加载的,它对应的是ol.Control.Zoom,如下图所示:3、属性——Attribution属性控件也是OpenLayers默认就加载的,一般在地图右下角,主要是显示版权信息,它对应的是ol.Control.Attribu

2020-09-20 01:16:06 2238

原创 OpenLayers基础教程——视图的常规操作

1、前言这篇博客开始介绍OpenLayers中视图的一些常规操作。其实地图的常规操作无非就是放大、缩小、平移等等。利用OpenLayers中的view可以很轻易地实现以上功能,下面进入正题。2、常规操作在创建地图对象后,我们可以利用var view = map.getView()获取视图对象,可以发现view中包含了许多针对视图操作的方法,比如setZoom()、setCenter()、setRotation()等等,代码如下:<!DOCTYPE html><html xmlns

2020-09-15 22:18:47 1281 1

原创 OpenLayers基础教程——坐标系和投影

1、前言上一篇博客介绍了如何利用OpenLayers加载一幅OSM地图,虽说代码十分简单,但其中的一个细节可能会被大家忽略掉,那就是EPSG:4326和EPSG:3857这两个值的意义。因此,这篇博客就来讲讲坐标系和投影的相关内容。2、地理坐标系地理坐标系(Geographic Coordinate System)是使用三维球面来定义地球表面位置,简单一点理解,地理坐标系就是用经度、纬度、高程这三个值来描述空间中一个点的位置信息。其中,应用较为广泛的地理坐标系就是WGS-84坐标,而它的代号也就是EP

2020-09-15 20:52:17 3551 1

原创 OpenLayers基础教程——加载一幅地图

1、前言说起来虽然一直在做WebGIS方面的工作,但却一直没怎么系统写过相关方面的博客。之前虽然写过几篇OpenLayers方面的博客,却也是零零散散,前后关联不大。于是今晚下定决心,开始OpenLayers系列的博客。由于个人水平有限,难免会有疏漏,所以还请大家多担待哈。下面开始进入正题。2、加载一幅OSM地图既然是第一篇博客,那就从最简单的加载地图开始吧。我们先来看一下如何利用OpenLayers加载一幅OSM地图。代码如下:<!DOCTYPE html><html xmln

2020-09-14 23:59:05 1577 2

原创 WebAPI Post模式下传递、接收参数的几种方法

创建实体类前一篇博客讲了Get模式下的传递、接收参数的几种方法,现在来介绍一下Post模式下传递、接收参数的几种方法。首先还是老样子,创建一个空的ASP.NET WebAPI工程,在Models文件夹下创建一个实体类:User,代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApi.Models{ public class User

2020-08-24 16:35:56 9154

原创 WebAPI Get模式下传递、接收参数的几种方法

创建实体类创建一个空的ASP.NET WebAPI工程,在Models文件夹下创建一个实体类:User,代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace WebApi.Models{ public class User { /// <summary> /// 编号 /// &l

2020-08-24 16:17:37 4848

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除