8 牛健平

华风传媒集团 - 高级软件架构师

我要认证

12年毕业于兰州大学地理信息系统专业。毕业至今,一直在从事着GIS开发相关的工作,精通GIS与webgis原理,精通openlayers、leaflet、mapbox等webgis框架,精通PostGIS、OracleSpatial等空间数据库,熟练掌握html、css、js等前端技术。

等级
TA的排名 1k+

如何从高德获取地铁数据

概述本文讲讲如何在高德获取地铁数据及后期处理,以北京为例。实现获取数据打开高德地铁,按下F12打开调试模式,切换到network面板,如下:点击右键,“Open in new tab”,在新窗口中打开。将页面另存为json数据格式。数据处理将拿到的数据写代码转换成两个geojson数据,一个是站点数据,一个线路数据。站点数据处理$.get('data/subway.json', function (res) { var geojson = { 'type

2020-08-13 22:17:20

跟牛老师一起学WEBGIS——GIS基础(GIS中的数据)

4、GIS中的数据4.1 基本特征1. 属性特征表示实际现象或特征,例如变量、级别、数量特征和名称等等2. 空间特征表示现象的空间位置或现在所处的地理位置。 空间特征又称为几何特征或定位特征, 一般以坐标数据表示, 例如笛卡尔坐标等。3. 时间特征指现象或物体随时间的变化,其变化的周期有超短期的、短期的、中期的、长期的等等。4.2 数据质量准确性(Accuracy)精度(Precision)空间分辨率(Spatial Resolution)比例尺(Scale)误差(Error)

2020-08-12 07:21:35

跟牛老师一起学WEBGIS——GIS基础(空间数据)

3、空间数据3.1 空间数据模型空间数据模型可以分为三种:场模型:用于描述空间中连续分布的现象;要素模型:用于描述各种空间地物;网络模型:可以模拟现实世界中的各种网络;1. 场模型对于模拟具有一定空间内连续分布特点的现象来说,基于场的观点是合适的。例如,空气中污染物的集中程度、地表的温度、土壤的湿度水平以及空气与水的流动速度和方向。场经常被视为由一系列等值线组成,一个等值线就是地面上所有具有相同属性值的点的有序集合。2. 栅格数据模型栅格数据模型是基于连续铺盖的, 它是将连续空间离散化。

2020-08-09 08:50:27

跟牛老师一起学WEBGIS——GIS基础(地图学)

2、地图学2.1 地图的主要特征1.地图信息的载体2.数学法则的结构3.有目的的地图概括经过分类、简化、夸张、符号化、模型化和概括方法,称为地图概括。5.符号系统的应用2.2 地图三要素地图是认识和分析研究客观世界的常用手段,尽管地图的表现形式发生了种种变化,但是依然可以认为构成地图的主要因素有三:地图图形、数学要素和辅助要素。1.地图图形用地图符号所表示的制图区域内,各种自然和社会经济现象的分布、联系以及时间变化等的内容部分(又称地理要素)。2.数学要素数学要素是决定图形分布位置和

2020-08-05 21:41:39

跟牛老师一起学WEBGIS——GIS基础(基本概念)

从毕业至今,已经八年有余了,在这八年多的时间里,一直在从事着跟GIS相关的工作,从刚毕业的桌面端(CS),到现在的浏览器端(BS),如果再加上毕业前的那段数据处理的实习经历,我算是从数据到开发,从技术到应用,都有一定的接触,也对GIS的一些原理性的东西了解的更为深刻了。俗话说:十年磨一剑。虽然工作的时间还未到,但如果加上在校学习时间的话,这个时间应该是远远超过10年的。受疫情的影响,年初有段时间是在家中办公的,这就免去了上班路上来回的折腾,也省下了不少的时间来思考一些事情。三月底的时候,根据公司的安.

2020-08-02 14:38:06

mapboxGL中popup遮挡的优化

概述在MapboxGL中,使用popup弹窗时,弹窗会出现超出范围的情况,本文就此问题做了点优化,共享记录下,一做自用,一做共享。实现效果实现代码结合popup的open事件,实现位置的调整。实现代码如下:// 调整popup位置that.popup.on('open', function(){ var ele = $(that.popup.getElement()); var offset = ele.offset(); var top = offset.top; var l

2020-07-28 11:53:43

canvas虚线绘制

概述晚上闲来无事,又不想看书,就写代码段锻炼一下脑子。本示例实现canva绘制虚线,因为canvas原生没有的。效果实现function drawDashLine(start, end, dash) { var deltX = end[0] - start[0]; var deltY = end[1] - start[1]; var totalDis = Math.sqrt(deltX * deltX + deltY * deltY); var getPos =

2020-06-26 23:42:41

mapboxGL中sprite生成与引用

概述用过mapboxGL的都知道里面有个叫做sprite的配置,它的主要用途就是地图上渲染图标的,但是大多数情况下我们需要自定义图标的,我们该怎么办呢,莫着急,牛老师有招,本文告诉你如何通过几行简单的java代码实现,用引用到我们的地图中。效果生成的json文件如下:{ "zgyh": { "visible": "true", "pixelRatio": 1, "x": 0, "width": 32, "y"

2020-06-10 23:05:52

GPX数据在mapboxGL中轨迹动画

概述喜欢跑步的人都会选择一款APP来自己跑步的,常用的有keep、悦跑圈、华为健康等等,每次跑完步,会根据跑步的轨迹绘制轨迹动画。今天咱们讲讲技术,不扯淡,讲一下在mapboxGL中如何实现类似的效果。效果数据本文中的数据是我跑步的实测数据,数据导出于Garmin运动手表,格式为GPX。实现1.解析处理数据gpx数据解析用到了gpxparse.js,具体请移步GPXParser.js。loadPgxData() { $.get('../data/route.gpx', function

2020-06-07 23:34:17

结合d3.js实现气象数据的可视化

概述本文将结合d3.js实现在mapboxGL中格点气象数据的展示。效果实现1.数据格式说明需要将格点气象数据实现前端的展示,数据传输的方式有三种:1、json;2、二进制;3、灰度图。三种方式各有优劣,这个需要在实际的项目中去酌情选择,本文为方便理解,选用json的格式,数据格式如下:{ "header": { "la1": 54, "lo1...

2020-05-02 09:53:27

mapboxGL测量实现

概述讲真,MapboxGL里面虽然有测量的功能,但是不太好用,于是就萌生了自己实现的方法。本文几个turf.js来说说mapboxGL中测量的实现。效果实现1、实现思路按照绘制的流程,需要涉及到map的三个事件:click,dblclick,mousemove,其中click为绘制,dblclick为结束绘制,mousemove为绘制中。这样,定义一个状态标识isMeasure,在...

2020-04-21 22:54:32

mapboxGL和高德API结合实现路径规划

概述本文将mapboxGL和高德地图API结合起来,实现路径规划。效果实现高德地图路径规划API说明如上图,有行走、公交、驾车等多种路径,本文以行走为例来说明。添加点、线图层map.on('load', function() { var geojson = { 'type': 'FeatureCollection', 'features': [] };...

2020-04-05 16:31:58

mapboxGL之风流图

概述前面的文章说到了Openlayers4中风场的实现,本文将讲述如何在mapbox GL实现类似的效果。效果[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZkUGd75p-1585748579661)(https://upload-images.jianshu.io/upload_images/6826673-a72b98f01e6917fa.gif?ima...

2020-04-01 21:44:00

进阶mapbox GL之paint和filter

概述通过前面的文章初识mapbox GL我们对mapbox GL有了一个相对比较全面的认识,本节结合一些示例,重点讲述一下mapbox GL里面的filter和paint的用法。说明本文中的示例数据源是北京的区边界数据,格式为geojson,数据字段与详情如下:filterfilter是layer里面的一个属性,通过一些条件表达式实现仅显示与过滤器匹配的要素,即图层的过滤显示,其官方说...

2020-03-28 10:48:26

初识mapbox GL

一、概述最近由于项目的需求,借此机会对mapbox GL做了一个系统的学习,同时也对整个学习过程做一个记录,一方面留作自用,另一方面也希望看到此文的人在学习mapbox GL的时候,能够有所启发、有所收获。二、快速认识很多人在学习一个新的webis框架的时候,表示狗咬刺猬——无从下口。对于这一点,我的建议是快速认识。1.目的快速认识的目的有两个:1、对框架有一个认知性的理解;2、甄别框架...

2020-03-24 20:04:04

mapbox GL台风路径的播放实现

概述前面的文章中写了基于openlayers4的台风路径播放,最近用到mapbox GL,也要实现相似的功能,网上找了好久都没有找到,于是就放弃了“拿来主义”的想法,只能自己动手了。经过一下午的努力,终于有了一个雏形,在此分享出来,希望对你有用!效果实现1、数据获取测试数据是从温州台风网,抓取了201929号台风数据作为测试数据。2、添加台风编号和名称到地图addTyphoonLa...

2020-03-22 22:46:23

我为什么跑步

说起这个题目,我会不由得想起村上春树的那本《当我谈跑步时,我谈些什么》,感兴趣的可以去看看,不过本文,说说我与跑步的故事。说起跑步,得从5年前,15年说起:那一年,是我来北京要饭的第二年,换了新的工作,住的房子也换了。在新换的房子的附近,有一个健身房,有个周末去溜达的时候被健身房的小哥哥给忽悠了,就花了1200办了一张年卡,此后,为了让钱花的有所值,基本上只要有时间我都会去健身房,跑步机上跑步...

2020-03-10 23:27:07

monaco-editor做自己的代码测试工具

概述本文说的是如何通过monaco-editor实现一个类似于codepen一样的在线代码测试工具。微软之前有个项目叫做Monaco Workbench,后来这个项目变成了VSCode,而Monaco Editor(下文简称monaco)就是从这个项目中成长出来的一个web编辑器,他们很大一部分的代码(monaco-editor-core)都是共用的,所以monaco和VSCode在编辑代码...

2020-03-10 09:38:48

openlayers4+中台风路径播放优化

概述本文在以前风圈生成文章的基础上,将openlayers4+中台风路径的播放展示做了优化,并进行了封装。说明:1、本文示例台风数据来自温州台风网;2、openlayers使用版本为4.6;效果实现封装后的代码为:var Typhoon = function(map) { { const that = this; that._map = map; th...

2020-02-25 21:22:02

地图上覆盖物压盖的优化

概述在做webgis的时候,会经常性的碰到地图覆盖物压盖的情况。本文讲述一种基于聚类思路的解决办法,实现使用的是openlayers4+。效果默认展示第一个点(第一个点可根据一些业务逻辑进行处理,文中简单的做了处理,取了第一个点),鼠标经过第一个点的时候再将其他压盖的点展示出来。实现1. htm<!doctype html><html lang="en">...

2020-02-19 21:49:13

查看更多

CSDN身份
  • 论坛版主
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 图书勋章
    图书勋章
    CSDN技术图书作者专属勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。