自定义博客皮肤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,别来无恙

  • 博客(145)
  • 论坛 (9)
  • 问答 (1)
  • 收藏
  • 关注

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

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

2020-12-14 16:43:28 66

原创 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 165

原创 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 70

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

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

2020-12-09 20:16:00 167

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

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

2020-12-09 19:28:59 152

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

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

2020-10-14 15:55:56 278 1

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

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

2020-10-14 15:09:50 250

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

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

2020-09-26 23:12:52 312

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

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

2020-09-22 23:15:55 354

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

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

2020-09-21 10:59:38 165

原创 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 287

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

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

2020-09-15 22:18:47 209

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

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

2020-09-15 20:52:17 204

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

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

2020-09-14 23:59:05 177

原创 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 239

原创 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 143

原创 bootstrap-fileinput插件实现多文件的上传

前言最近需要做文件上传的相关模块,考虑了很久,最后决定使用bootstrap-fileinput插件实现。下面就跟大家分享一下如何利用ASP.NET WebAPI + bootstrap-fileinput实现多文件的上传。前端代码因为现在提倡前后端分离,所以在我的demo中前端代码就在Visual Studio Code中进行编写,代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset=

2020-08-14 11:19:12 63

原创 Linq实现SQL中的递归查询

废话不多说,直接上代码:using System;using System.Collections.Generic;using System.ComponentModel.Design;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp1{ class Program

2020-07-17 14:37:03 132

原创 C#中Linq的基础操作

前言Linq在C#中提供语言级查询功能和高阶函数 API,以便能够编写具有很高表达力度的声明性代码。使用Linq能够让我们的代码更加简洁。下面先来看一个问题:现在有一个数组,如下所示:int[] nums = { 8, 1, 9, 4, 3, 6, 7 };现在我们希望找出这个数组中的偶数,然后将它们降序输出,一般我们会这么写:using System;using System.Collections.Generic;using System.Linq;using System.Text;

2020-06-23 11:18:03 109

原创 WinForm中UI假死的解决方法

前言WinForm中的UI假死其实是个老生常谈的问题了,但最近还是很多人问我该如何解决,所以今天就来说明一下如何解决UI假死的问题。实验程序界面如下图所示:方法一:async + await + Task首先看下面一段代码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;us

2020-06-12 17:31:52 338

原创 ADO.NET新手上路教程

前言利用ADO.NET连接数据库进行相关操作可以说是每个.NET新手必须学习的一项内容。从学习的角度来看,我个人其实反对新手一开始就学Entity Framework之类的ORM框架,因为Entity Framework本质上还是基于ADO.NET的二次封装,所以扎实掌握SQL和ADO.NET才能让新手更好的学习之后的ORM框架。下面就来介绍一下ASO.NET中常用的几个类。数据准备为了方便,我这里选用VS2015自带的LocalDB作为数据源,在其中新建了一个数据库DBSchool,然后新建一张数据

2020-06-04 15:48:56 153

原创 快速上手C#中的Task编程

.NET4.0开始引入Task,它的出现大大简化了异步编程的复杂度,相较于传统的Thread和ThreadPool,Task更加容易控制和使用,下面就来看看它的具体用法。1、一个简单的串行程序串行程序大家肯定不陌生,说白了就是从上到下按顺序执行,看下面一段代码:using System;using System.Collections.Generic;using System.Diagnostics;using System.Linq;using System.Text;using Syst

2020-06-03 16:17:47 175

原创 DevExpress构建多文档界面

在DevExpress中,多文档界面的构建需要用到XtraTabControl控件,如下图所示:1、属性设置首先设置选项卡可关闭,如下图所示,如果你希望首页选项卡不关闭,则进行如下设置:2、创建子窗体多文档的实现需要将Form嵌入XtraTabControl,我这里做了一个加载word文件的子窗体,如下图所示:代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using S

2020-05-30 18:18:42 311

原创 ASP.NET结合Echarts展示后台数据

ECharts功能强大,如果项目中需要根据后台数据生成统计图表,那么ECharts绝对是不二选择。下面就来介绍一下如何利用ASP.NET + ECharts来生成折线图、柱状图、饼图这三类基本的统计图。首先在SqlServer中建立一张测试表[TSales],该表模拟某商店在2019年每天的销售金额,共有365条记录,如下图所示:下面需要按照月份对该数据表进行划分,生成相应的折线图、柱状图、饼图,同时还需要根据季度对该数据表进行划分,生成另一个饼图,如下图所示:前端代码<!DOCTYPE h

2020-05-18 16:20:17 440 2

原创 jsPanel——与Bootstrap完美兼容的浮动面板解决方案

使用过EasyUI的同志应该很清楚,EasyUI里的Window组件相当好用,如下图所示:Bootstrap中并没有类似的组件,取而代之的是使用模态框(Modal),效果如下图所示:我个人不是很喜欢模态框这种实现方式,因此经常在考虑能否在Bootstrap里使用类似于EasyUI-Window这样的的浮动面板组件,经过长时间搜索,终于找到了一款浮动面板神器——jsPanel,想要了解详细信息,可以访问它的官网:https://jspanel.de/。基本实现jsPanel的主题颜色与Bootst

2020-05-11 11:23:46 344

原创 NPOI的基础操作

1、创建Excelusing System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplication1{ class Program {...

2020-04-29 17:02:09 258

原创 ArcEngine子类型字段的操作

先来了解一下什么是ArcGIS中的子类型字段。新建一个要素类,名称为道路,其字段如下图所示:其中Type为长整型字段,用以标识道路的类别。现在我们选择该要素类,单击右键,弹出界面后选择子类型选项卡,如下图所示:子类型字段选择Type,然后添加国道、省道、县道、乡道这四个字类型,点击确定即可。下面开始编辑该要素类,可以发现图层列表和编辑框内已经将该要素类分为四类,如下图所示:其实在设置...

2020-04-22 22:02:57 254

原创 ArcEngine字段属性域的操作

首先来了解一下什么是ArcGIS中的属性域。假设现在要在文件里地数据库中新建一个道路要素类,其属性字段如下图所示:其中,Name表示道路名称,Width表示道路宽度,Type表示道路类型。按照一般常识,道路的宽度肯定是在一定范围内的,不太可能出现宽度为1000米的道路。同样的,道路的类别也是有限的,无非就是国道、省道、县道等等。因此在对道路要素进行编辑时,我们需要对其中的部分字段做出一定约束,...

2020-04-22 21:10:30 314 2

原创 ArcEngine修改要素类字段别名

对于Geodatabase中的要素类,我们可以对它们的字段别名进行修改。下图为数据库中某要素类的属性表:我们现在将Name修改为Name_1,Code修改为Code_1,代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Syste...

2020-04-22 19:29:31 437 2

原创 一个简单例子帮助你理解C#中的协变和逆变

本人一向不喜欢讲太多理论,长篇大论的让人烦躁。下面我们就通过一个简单的小例子来快速理解协变和逆变。类的继承和派生using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApplicat...

2020-04-22 11:12:22 127

原创 ArcEngine根据属性分割要素类的实现方法

在做数据处理时,我们经常遇到的一个问题就是分类问题,如下图所示,现有一份中国各省、自治区、直辖市的shp文件,现在要求根据Name字段将该shp文件分割成多个shp文件,每个shp文件代表一个省、自治区或直辖市。熟悉ArcGIS的同志应该清楚,在ArcToolbox工具箱下有一个分割工具可以帮我们实现该功能,如下图所示:其实在ArcEngine中我们也可以实现这一功能,核心接口为IFea...

2020-04-21 18:31:54 365

原创 ArcEngine实现伸缩变换、平移变换、旋转变换的方法

初中的时候就学过几何图形的伸缩、平移、旋转变换。在ArcEngine中,我们也可以借助ITransform2D接口实现IGeometry的伸缩、平移、旋转变换。先来看一下效果图:代码如下:using System;using System.Collections;using System.Collections.Generic;using System.ComponentModel;...

2020-04-21 00:57:44 378

原创 ArcEngine中的空间参考操作代码

GIS中的坐标系一般分为地理坐标系和投影坐标系。地理坐标系就是用经纬度来表示位置,投影坐标系则是按照一定的数学规则,将球体投影到平面上,一般用X、Y表示位置,单位为米。若要进行投影转换,如果转换前和转换后的空间参考是基于同一参考椭球体,则可在ArcGIS中直接进行转换,如果转换前和转换后的空间参考基于不同的参考椭球体,则首先需要计算七参数,然后才能在ArcGIS中进行转换。下面是ArcEngine...

2020-04-20 21:32:16 385

原创 ArcEngine中的叠置分析

对于叠置分析,想必用过ArcGIS的同志应该都很了解。ArcGIS的工具箱提供了各种叠置分析的工具,如下图所示:那么在ArcEngine中该如何实现叠置分析呢?其实ArcEngine已经给我们提供了IBasicGeoprocessor接口来实现叠置分析,下面就以求两个图层的相交部分来进行说明。测试数据叠置分析代码如下:using System;using System.Collec...

2020-04-19 19:40:29 919

原创 ArcEngine实现多边形内部的挖洞操作

在一般的数据编辑流程中,有些时候可能会涉及到多边形内部的挖洞操作。在ArcEngine中,一般可以通过两种方式实现挖洞操作。一种是叠置分析,这主要是针对图层与图层之间的操作,我会在后续的博客中进行介绍,另一种则是用户自己绘制多边形实现挖洞操作,这主要是利用ITopologicalOperator接口进行实现。先来看一下效果图:代码如下:using System;using System.C...

2020-04-19 18:51:51 236

原创 ArcEngine获取字段唯一值的三种方法

在做GIS数据处理时,我们经常需要获取某个字段的唯一值。我在这里总结了三种方法,下面分别进行说明。方法一:读取表记录这种方法就是逐条读取记录,然后选用合适的数据结构进行查重,它的好处就在于:不必去考虑数据源是shp还是geodatabase,代码如下:using System;using System.Collections;using System.Collections.Generi...

2020-04-18 22:50:26 526

原创 ArcEngine实现要素类排序的四种方法

ArcEngine的排序方法有多种,下面介绍一下主要的四种方法。准备数据测试数据如下图所示:新建一个Geodatabase的要素类,其中Name为道路名称,Width为道路宽度,下面将根据Width字段进行倒序排序。方法一:IQueryFilterDefinition接口利用IQueryFilterDefinition接口我们可以定义排序语句,代码如下:using System;us...

2020-04-18 20:31:02 287

原创 ArcEngine实现IElement元素的编辑

目前市面上的ArcEngine教程一般只会介绍shp、geodatabase等数据的编辑操作,基本不会涉及IElement的编辑操作。举个例子,当你在ArcMap中添加一个指北针或比例尺的时候,你可以利用鼠标动态更改它们的大小及位置,其实在ArtcEngine中也可以实现类似操作,先给大家看看效果:主界面代码using System;using System.Collections.Gen...

2020-04-13 01:39:30 448 1

原创 ArcEngine线分割面的实现方法

在一般的GIS数据编辑中,利用线分割面是常见的一项操作。很多同志不清楚如何在ArcEngine实现这一功能,其代码写得无比复杂。其实ArcEngine给我们提供了一个接口:IFeatureConstruction,利用这个接口可以轻松完成线分割面的操作。下面给出示例代码。情况一:利用选中的线要素分割面要素如下图所示:当前选择了两条线要素,我希望用这两条选中的线对面进行分割,这种情况在编辑流程中...

2020-04-08 20:12:38 658 1

原创 ArcEngine根据对称轴生成镜像实体

用过CAD的同志应该清楚,在CAD中可以指定对称轴,然后根据对称轴生成镜像,ArcEngine中也可以进行类似操作,如下图所示:代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using Syst...

2020-04-07 21:33:59 135

空空如也

SQL多表连接查询问题

发表于 2020-09-25 最后回复 2020-09-25

请教一下VS2019中JS智能提示的问题

发表于 2020-01-05 最后回复 2020-06-23

ASP.NET处理程序怎么用?

发表于 2020-03-11 最后回复 2020-03-12

想请教一下大家关于VMWare虚拟机的问题

发表于 2019-12-05 最后回复 2019-12-05

想请教一下大家关于IDAL层的问题

发表于 2019-11-05 最后回复 2019-11-05

请教大神关于BundleConfig和RouteConfig的问题

发表于 2019-08-26 最后回复 2019-08-26

想请教一下各位朋友,关于DataReader和DataAdapter的问题

发表于 2019-08-18 最后回复 2019-08-19

请教各位大神,为什么SQL语句错误,SqlDataReader对象还是不为空

发表于 2019-07-23 最后回复 2019-07-23

希望大神能够指点一二,给一些意见

发表于 2019-07-06 最后回复 2019-07-08

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

TA关注的人 TA的粉丝

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