自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QQ24382327博客

主要是GIS相关内容

  • 博客(48)
  • 资源 (15)
  • 收藏
  • 关注

原创 arcgis api 图形编辑

图形编辑,顾名思义,就是对绘制的图形graphicLayer进行编辑,如移动、 拉伸、选择、删除和增加节点的功能。下图是增加节点和拉伸功能的截图。实现代码,复制可直接运行:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head> <meta http-equiv="Content-Type" conte

2021-08-23 11:13:04 990

原创 sqlserver中通过两点经纬度计算距离

日常工作中有时候会遇到通过两点经纬度计算距离的需求,下面讲一下在sqlserver中实现的方法,方法很简单,只要通过一个函数就可以轻松搞定: geography::Point(star_lat, star_lon, 4326).STDistance(geography::Point(end_lat,end_lon, 4326)) as distance , 计算结果的单位是米。 sql中具体实例来计算一下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/2..

2021-07-15 10:26:31 1635

原创 arcgis api结合高德poi搜索接口

应用场景:通过高德poi查询接口,在天地图上打点展示,效果如下实现步骤:1、通过arcgis api 加载天地图。(资源里有已经封装好的天地图js,引入即可使用)2、通过高德poi查询接口获取数据。(需要在高德地图API申请web服务的密钥)3、通过dojo发布者模式,发布和接收经纬度信息的任务。(不是必须,也可用其他方法实现)4、将接收到的经纬度信息进行坐标系转换,然后打点到地图上。(资源里有在前端就可以实现坐标系转换函数的js)实现代码,下载资源后,可直接打开:资源下载:包含封装了天地图

2021-07-02 15:41:14 875 3

原创 python脚本获取数据库数据并输出为python对象

假设应用:某接口需要从数据库获取数据,每条数据都是一个python对象,以数组形式输出,即: [{}, {}, {}…],以python2.7和sqlserver为例测试数据:python脚本:# coding=utf-8import pyodbc#数据库连接conn = pyodbc.connect('DRIVER={SQL Server};SERVER=20.209.182.190;DATABASE=testdb;UID=test;PWD=test@123')cur = conn.cu

2021-04-26 14:37:25 2169

原创 Arcgis js api 点聚合

先来个效果图:实现步骤:1、获取本地json数据2、通过json数据配置聚合图层的数据源3、配置聚合图层的分级渲染效果注意事项:有点需要注意的是,直接引用官方API里的ClusterLayer.js会报错,可以把js下到本地,引用时候注意路径即可。资源下载,包含聚合模块ClusterLayer.js、测试数据points.json、前端实现代码html。传送门: 点聚合相关资源下载,下载后可直接运行。前端实现代码:<!DOCTYPE HTML PUBLIC "-//W3C//D

2021-04-01 16:12:31 2246 4

原创 arcgis api 3.x 加载 echarts3 热力图

地图结合echarts热力图的方式已经在广泛应用,官方例子是用的百度地图,传送门:官方例子。由于平时开发用的比较多的是Arcgis api,这里记录一下Arcgis api 3.x 加载 echarts 热力图的方法1、将百度地图换成arcgis在线的切片地图,方便在线引用。2、引用echarts.js和Echarts3Layer.js,这里注意一下echarts.js要放在arcgis js 之前引入,否则会报错。3、本例采用本地加载json数据,从json中获取经纬度组成二维数组作为渲染热力图的数

2021-03-12 15:35:23 617

原创 SHP转换为SLPK

slpk是i3s规范的一种实现,是一种压缩方法为“存储”的zip格式文件,后缀名是slpk(SceneLayer Package)。slpk内的json文件、二进制文件均使用gzip压缩。slpk主要由ArcGIS Pro来制作,下面简单介绍一下,建筑物的面shp数据,转换为三维立体的slpk模式的操作流程。1、ArcGIS Pro 里创建一个新的工程(局部场景即可),将建筑物数据添加进当前场景。2、将建筑物shp数据拉伸成3D图层点击要拉伸的要素图层,外观目录下的类型中选择最小高度选择HEIG

2021-03-09 11:22:12 3412 4

原创 ARCGIS API 地图圈选查询图层后导出excel

之前写了一个地图圈选查询图层后,弹窗显示查询内容的demo,传送门:地图圈选查询图层,在此基础上完善一下,添加一个导出按钮,即查询后将信息导出excel,效果如下:这里运用了SheetJS的js-xlsx,这是一款功能强大又非常方便的,只需要纯JS即可读取和导出excel的工具库,可参考小茗同学的博客:传送门:小茗同学博客,或者SheetJS的官网: 传送门:官方github里面有个方法aoa_to_sheet,可将二维数组转为sheet,结合本例具体操作是,将查询获得的每条数据信息组成一个数组,

2021-02-20 14:39:30 410

原创 arcgis api 弹窗结合echarts可视化

假设需求背景:每到冬天都会有很多候鸟老人到海南来过冬,结合当前国内新冠疫情形势,目前国内有很多高风险区,统计来自全国各风险区域(高中低风险)的人数,对海南各市县地图进行渲染,地图弹窗结合echarts柱状图可视化。统计测试数据如下:数据说明:high字段表示高风险地图来海南人数 高风险>1500, 1500>=中风险>500, 低风险=<500dataTest = [{“city”:“海口”, “level”:“高风险”, “high”:2150, “mid”:2600

2021-02-03 11:02:27 774

原创 arcgis js api 4.x 前端加载json显示

arcgis js api 4.x 没有直接加载json的方法,可通过以下步骤实现:1 、如果只有shp,没有json格式的数据,可通过arcmap或其他方式转换2 、通过加载本地路径json或者按钮导入json文件的方法(选其一),并将json转换为JavaScript 对象3、 通过js对象获取矢量信息和字段属性信息,生成polygon实例,并通过graphic渲染4、 通过绘制图层GraphicsLayer添加graphic实例实现效果:json测试数据和源代码下载:实现代码,有注释,

2021-01-26 11:29:45 1789 5

原创 Arcgis api 4.x 前端2D拉伸成3D

应用场景:假设有一批楼宇的shp数据,想要在前端用三维模式展示,不同高度用不同颜色表示。测试数据如下:将此数据发布成要素服务。实现效果,拉伸前:拉伸后:实现源代码:要素图层服务需要替换成你自己的url,渲染配置的字段也根据你发布的要素图层设置 2D拉伸成3D 2D拉伸3D ...

2021-01-21 16:33:21 875 6

原创 前端实现GIS坐标系转换

应该场景: 客户手上有一批从百度获取的资源数据,想要在我们的地图上展示,已知我们切片底图用的4326即WGS84坐标系,如果根据百度的资源数据直接打点,会出现偏差。要先把百度坐标系转换为WGS84坐标系,再进行打点。...

2021-01-15 16:21:05 1232 4

原创 shp文件根据属性导出若干单独shp

前提: 已安装 arcgis desktop(ArcMap) 软件以海南行政区shp文件为例,如下图,需要将各个地市分割更单独的shp文件:可通过arcpy的选择函数 Select_analysis 实现:还用到了SearchCursor函数,建立游标读取字段的属性信息资源下载:实现python脚本:在这里插入代码片# - * - coding: utf-8 -import arcpy#工作空间arcpy.env.workspace = "D:/shpData"#输入要素i

2021-01-14 15:03:46 3395 4

原创 linux下禁用tomcat管理页面

有时候为了安全需要,需要屏蔽tomcat的管理页面,有一种很简单实用的方法,就是将首页指向一个空文件即可。在webapps/ROOT目录下执行 >index.html

2021-01-12 16:34:14 1440

原创 arcgis 禁用服务目录

服务目录为 ArcGIS Server web 服务以及可通过 REST 执行的操作提供了一种基于 HTML 的可浏览的表现方式。服务目录可以是一种很有用的开发工具;但是,当不希望用户浏览服务列表、在 Web 搜索中查找服务或通过 HTML 表单请求服务时,建议禁用生产系统的服务目录。传送门:官方文档...

2021-01-12 16:19:14 589

原创 arcgis api 前端加载shp显示

arcgus api 没有直接加载shp的方法,通常是把shp转换为其他格式。本例实现步骤为:1、 input按钮导入shp数据2、 通过FileReader将shp数据转换为ArrayBuffer格式使用FileReader对象,web应用程序可以异步的读取存储在用户计算机上的文件内容,可以使用File对象或者Blob对象来指定所要读取的文件或数据.其中File对象可以是来自用户在一个元素上选择文件后返回的FileList对象。传送门:FileReader文档3 、 借助开源 shapefile

2021-01-11 11:00:15 2727 12

原创 arcgis api 动态图层实时显示数据变化

以sql-server数据库为例,假设我们把数据库某个表发布地图服务,前端以ArcGISDynamicMapServiceLayer去调用显示。当表的数据发生改变,但是前端显示并没有变化,有以下两点原因:1、 数据库没有注册到arcgis serverARCMAP里GIS服务器属性里的数据存储注册数据库以sql-server为例2、将ArcGISDynamicMapServiceLayer图层设置为总数从服务器请求图像,并忽略浏览器的缓存。参考官方文档:传送门:官方文档var testLay

2021-01-07 15:55:23 1303

原创 arcgis 切片底图突破最大比例尺呈现

最近接到个需求,客户想在切片底图放大到200:1时候还能看到道路的走向,我们了解,目前主流的几类底图,如谷歌、百度、高德、天地图等最大的比例尺是 1000:1左右,如果再往下切片,会占用很大的存储空间。结合实际情况,以当前我们本地环境发布的某省的街道切片地图为例,最大比例尺为1000,大约占了1T的存储空间,如果要切到最大比例尺为200,没有几十上百T的存储空间是放不下的,而且切图生成缓存的时间非常非常长,此方法不切实际,不推荐使用。转换下思路,当切片底图缩放到最大比例尺后,再缩放的话就以要素图层来替代没

2021-01-07 11:37:13 1097

原创 excel 根据两点经纬度计算距离

已知AB列分别为起点经纬度,CD列分别终点经纬度,根据两点经纬度计算距离在E2单元格里输入:=6371004*ACOS(1-(POWER((SIN((90-B2)*PI()/180)COS(A2PI()/180)-SIN((90-D2)*PI()/180)COS(C2PI()/180)),2)+POWER((SIN((90-B2)*PI()/180)SIN(A2PI()/180)-SIN((90-D2)*PI()/180)SIN(C2PI()/180)),2)+POWER((COS((90-B2)*P

2021-01-07 10:26:37 7895 3

原创 GIS坐标系批量转换

WGS84坐标系:地球坐标系,国际通用坐标系;使用:谷歌地球GCJ02坐标系: 火星坐标系,WGS84坐标系加密后的坐标系;使用:高德、QQ地图BD09坐标系: 百度坐标系,GCJ02坐标系加密后的坐标系;使用: 百度地图参考在线转换的一个网页:坐标系在线转换工具,这工具只能单个转换,不能批量转换。下面介绍一个这3种坐标系之间批量转换的方法:coord_converter.py具体实现步骤:1.将 coordTransform_utils.py、coord_converter.py、tes

2021-01-06 12:02:46 1270

原创 arcgis api 4.x 实现动态测距和计算面积

先来个效果图:图片是静态的,没有体现出来动态的效果,实际效果是测距和面积会随着鼠标的位置实时显示当前线段的长度或者面积大小。本例采用arcgis api 4.x,原理是调用draw绘制工具,监听draw过程中的不同事件,并通过事件中获得的经纬度信息去绘制polyline和polygon。draw事件参考官方文档:4.x draw文档通过"esri/geometry/geometryEngine" 中的geodesicLength()和geodesicArea()方法去计算长度和面积。官方文档:ge

2020-12-24 15:13:01 1764 2

原创 arcgis api 动态显示鼠标位置经纬度

动态显示鼠标位置经纬度,主要是监听鼠标移动事件 “mouse-move”,获取经纬度信息,在当前鼠标位置用文本标注出来即可。添加了个监听鼠标点击事件 “mouse-down”,在鼠标点击后才开始监听鼠标移动事件。实现效果:代码较为简单,注释里有,复制可直接打开:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head&g

2020-12-17 11:14:13 2497

原创 arcgis api 结合turf.js实现测距

turf.js是一个开源的空间分析库,主要用实现在网页端空间几何对象关系的计算,测距只是其中的一个简单功能。计算两个点的距离:计算两个点以上的线段的总长度:源码地址:https://github.com/Turfjs/turf官网文档: http://turfjs.org/代码中需引入turf.js库,可下载到本地,也可引用互联网上的,互联网在线引用:全部代码,所有引用和地图均来自互联网,复制可直接打开:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML

2020-12-11 10:05:07 988

原创 python脚本之将excel数据导入数据库并生成shp矢量数据

时常收到客户给的excel文件,含有(lon,lat)经纬度或者wkt数据,需要我们放到数据库里,发布要素图层服务,实现步骤:读取excel数据创建表插入数据生成矢量表注册到空间数据库和生成空间索引发布要素地图服务以经纬度生成点和数据库sql server为例,这里我们主要讲运用python脚本实现1-4步,读取excel数据导入数据库,并生成矢量数据的过程,python脚本如下:#coding=utf-8import pyodbcimport xlrd##数据库连接dbCon

2020-12-09 14:50:49 1057

原创 Arcgis api 鼠标悬停显示弹窗

实现鼠标悬停图层上显示弹窗,原理是鼠标滑过图层时,设置弹窗显示和弹窗的位置,鼠标移出图层时,关闭弹窗。要素图层使用本地获取json文件生成要素图层的方法,内容不多,代码里有注释,直接上代码:<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title>鼠标悬停显示弹窗</title>&

2020-12-07 15:26:32 1553

原创 arcgis api结合echarts实现轨迹动画

arcgis api要想加载echarts,需要引入Echarts3Layer.js,官方下载地址:Echarts3Layer.js下载。下载完以后,官方建议配置在js api的目录下,但其实放在本地目录也可以,引用时候注意本地路径就可以。创建实例:底图采用arcgis在线的蓝色午夜版底图,效果如下:完整代码:<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content="

2020-11-30 16:16:47 1793

原创 ARCGIS API 判断点与面相交

应用场景:输入某点经纬度信息,判断该点落在哪个面里具体应用:客户通过页面的文本框输入某资源点的经纬度,返回该资源点的地市信息,这里以海南地市为例子。效果如下:实现功能有两种方法方法一: 接口通过接收输入的经纬度,传给后端数据库作为参数(以Sqlserver数据库为例),通过数据库两个要素的相交计算,将计算的结果再通过接口传回给前端。 运用到两种空间数据的计算方法: 1. 点经纬度转shape: geometry::Point(lon,lat,4326) shape 2. 判断两个要素相

2020-11-25 10:31:03 4944

原创 arcgis server 授权许可失败问题

最近arcgis server到期了,需要重新授权许可,将ecp文件成功授权后,在manager管理界面里看到授权日期一直没变,这说明许可没有被写进去。到许可keycodes的目录下,查看keycodes,发现授权时间还是以前的时间,这时候只要把keycodes文件删掉或者重命名,然后再重新进行一遍授权操作,即可成功授权。重命名keycodes:授权成功:如果是linux版本的arcgis server也遇到类似问题,也是把keycodes删除或重命名。...

2020-11-24 11:35:13 2709 1

原创 ARCGIS API 加载WKT(terraformers工具的使用)

需求场景:从接口获得WKT格式数据,在前端通过ARCGIS JS API呈现到页面。ARCGIS JS API 无法直接使用WKT格式数据,但通过terraformers工具的转换后可以使用。terraformers是Esri的一个开源项目,参考:https://github.com/Esri/Terraformer,主要作用是可以将wkt转换为geometry。直接上代码,为了测试方便,接口数据用测试数据替代,其他引用的模块和地图都来自互联网,复制可直接运行。<!DOCTYPE html&g

2020-10-23 14:48:29 2150

原创 ARCMAP--筛选距离面一定距离内的点数据

应用场景,如下图所示,已知面数据和面周围的点数据,要求筛选出面周围200米内的点数据。一般方法:面数据做缓冲区,然后与点数据做空间连接分析,根据分析结果筛选目标数据。快捷方法:ARCMAP工具箱里有个按位置选择图层的功能,可以快速实现。工具位置:数据管理工具 → 图层和表视图 →按位置选择图层参数:1. 输入要素图层:点数据 2. 关系:WITHIN_IN_DISTANCE 说明:如果输入图层中的要素在某一选择要素的指定距离内,则会选择这些要素,在...

2020-10-14 16:24:12 5840

原创 shp平滑处理并转geojson

有一份shp格式的海南地市数据,需要转为geojson格式用echart的方式去展示,并要求转换后的geojson尽可能的小。shp转geojson的方式有很多种,这里推荐使用QGIS去转,QGIS可以各格式之间互转,方便简单,可以满足我们日常使用了。 转为geojson格式后,数据大小是2222kb,这并不满足我们的使用要求。在ARCMAP的工具里有一个平滑处理的工具,可以对面数据进行平滑处理,以减少组成面的折点的方式,达到减小数据的大小的目的。 ...

2020-08-27 11:25:17 877

原创 arcgis 自定义范围查询图层

应用场景:在地图上自定义绘制一个范围,查询范围内某图层的数据并展示。 思路: 1. 运用arcgis api的draw工具中的polygon绘制不规则面图形 2. 建立queryTask查询,将绘制的面图形范围当做查询范围 3.遍历查询回调函数,将数据展示(展示用了vue做了个弹窗) 为了测试方便,代码里所引用的css和js都来自网上链接,地图引用的也是arcgis在线地图,有一定的不稳定性。 直接上代码...

2020-06-17 10:16:56 2470 1

原创 arcgis 发布影像切片服务--注册文件夹

server装在linux中,用arcmap发布服务时,一般都是发布时候数据自动打包上传到server里,数据少的时候还好,1G以下的数据基本都可以在半小时内打包上传完成。但是当发布影像切片服务,图片数据几百G的时候,如果还是常规方式打包上传,不仅非常耗时,各种意外错误的几率也大大增加。这时候只要在linux上创建个新的文件夹,把本机影像数据拷贝到其中,注册就可以了。...

2020-06-12 16:07:06 936

原创 Arcgis API 不依赖地图服务的面要素创建和渲染

需求场景:做一个专题图,图层不依赖于Arcgis地图服务,同时可以根据外部数据进行渲染。 1. 不依赖于Arcgis地图服务,首先我们想到的是

2020-05-25 10:51:25 532

原创 Arcmap拓扑检查:重叠或者有空隙的面

有时候我们拿到的面数据,两个面之间有相互覆盖或者有空隙,想要消除这种现象,需要做拓扑检查修复,达到两个面公用一条边界的效果。 1.在Arcmap里创建个人文件数据库 ...

2020-05-15 16:01:22 21024 9

原创 maptalks批量添加标注

maptalks有很多例子,但都是基于一个点实现,具体可以参考官方文档:https://maptalks.org/examples/cn/style/text-marker/#style_text-marker 要实现批量多点添加,无非就是把所有点放到集合里,直接上代码:<!DOCTYPE html><html> <meta charset="UTF-8"> <meta name="viewport" content="wi...

2020-05-15 10:40:43 1826

原创 openlayer加载天地图和谷歌地图

天地图和谷歌地图都是切片地图,对于openlayer,对应图层ol.layer.Tile。数据源source可以是ol.source.WMTS和 ol.source.XYZ。一般来讲,使用XYZ比较简便,WMTS比较繁琐。下面以谷歌-XYX和天地图-WMTS为例: 1. 谷歌地图-XYZ XYZ方式只需根据规定组装简单的url即可var googl...

2020-04-09 17:42:31 878

原创 Arcgis API 加载天地图和geojson数据

Arcgis API 加载天地图和geojson数据先说加载天地图,天地图已经封装在TianDiTuLayer.js。define([ 'dojo/_base/declare', 'dijit/Dialog', 'dijit/_WidgetBase', 'dijit/_TemplatedMixin', 'esri/layers/TiledMapServiceLayer', 'esri/...

2020-04-08 14:33:10 3486

原创 腾讯地图逆地理编码小应用

通过输入经纬度或者鼠标点击地图,获取该位置的地址信息,图标标注并自动弹窗,弹窗内容为地址信息。如下图 功能较为简单,代码里有注释。复制可以直接运行<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; cha...

2020-04-02 10:20:07 1751

原创 GIS--标注分行显示

有时候我们会遇到某些POI标注很长的情况,如下图所示,名称标注太长显示不美观,也会遮挡住附近的其他POI解决方法:只要在标注表达式里放一个简单的函数即可。验证通过后,即可实现标注分行显示。表达式函数:function FindLabel ( [Name] ) { var sss = [Name] ; if([Name].len...

2019-12-11 10:37:56 6190

arcgis api 结合高德POI搜索.zip

包含封装了天地图的js、前端实现坐标系转换的函数js、具体实现的代码html

2021-07-02

arcgis api 结合高德POI搜索.zip

包含封装了天地图的js、前端实现坐标系转换的函数js、具体实现的代码html

2021-07-02

arcgis api 加载echarts热力图.zip

包含了echarts.js、Echarts3Layer.js、测试数据dataTest.json和实现代码的html

2021-03-12

地图圈选后导出xlxs格式.zip

包含sheetjs的xlsx.core.min.js和jquery.min.js

2021-02-20

arcgis api 弹窗结合echarts可视化.zip

包含海南地市json数据、echarts相关js,源代码。

2021-02-03

Arcgis api 4.x 加载json.zip

包含json格式的测试数据,实现前端加载json的代码

2021-01-26

Arcgis api 4.x 加载json.zip

资源包含json格式的测试数据,还有实现前端加载json显示的源代码

2021-01-26

坐标转换资源.zip

资源包含GIS坐标转换的js模块,图标png图片,源代码和高德key

2021-01-15

arcpy按属性导出shp.zip

资源包含测试数据海南行政区的shp数据,以及python实现脚本

2021-01-14

ARCGIS加载shp.zip

资源包括点线面3种测试数据,以及前端实现源代码,可直接运行。

2021-01-11

坐标转换模块、方法和测试数据

资源包括坐标转换的模块coordTransform_utils.py, 转换方法coord_converter.py和转换的测试数据test_input.csv

2021-01-06

echarts.js和Echarts3Layer.js

arcgis js api 加载echarts,需引入Echarts3Layer.js,可以放在本地目录,引用时候注意可以直接引用本地路径

2020-11-30

测试数据json格式

要素合集创建要素图层的方式,需要用到json格式的要素,为了方便本地测试,我们可以把geojson和shp格式的要素转换为json格式。

2020-05-25

openlayers : ol.css ol.js

openlayer 需引入ol.css ,ol.js,就和Arcgis 引入 Arcgis JS API 一样的道理

2020-04-09

geojson.zip

Arcgis API 加载天地图和geojson数据,封装了天地图的js,还有geojson所需各js,下载到本机打开即可,无需修改,亲测可用。

2020-04-08

空空如也

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

TA关注的人

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