![个人头像照片](https://ucc.alicdn.com/avatar/img_352de9fa9871155af805074e15a580f2.jpg)
个人专业是地理信息系统,拥有较丰富的GIS开发经验,对GIS在前端可视化和空间数据库(PostGIS,PostgreSQL)领域比较感兴趣。工作中致力于解决大量地理数据渲染问题,大量地理数据存储和空间查询优化。
一 案例简介 电力行业在未来和气象领域的结合会越来越普及,衍生的各种复杂GIS分析也是很多的,如暴雨(气象)覆盖范围+地形分布区域(地质领域)+地貌分布区(植被覆盖分布)做叠加分析,如果地物是小土山,且植被覆盖率非常低,这里就特别容易发生滑坡,泥石流,而国网比如在复杂地形区新建一个电站,可以使用类似的分析,规避地质灾害,气象灾害频发区域,这些灾害之间好像还有相互关联性(GIS应该是做这种高级分析的,寻常定位高亮这种,怎么能算成GIS啊?)。
一 空间关系 数据库中判定数据之间的关系,使用的是比较操作符,如下: 操作符 描述 < 小于 | 大于<= |小于等于= |大于等于 = |等于<>或!=|不等于 但是在空间数据库中,由于空间数据的多维属性及其不同的几何特征,其判定关系与数值型字符型这些常用数据有非常大的概念性差异。
一 线性参考干啥用的 如果直接写个“高大上”的定义结果往往是一脸懵逼的,也不知道为什么要定义这么一个概念。其实线性参考技术在我们生活中是非常常见的,比如打开高德,百度地图的App,查看实时路况,道路被不同路况的颜色动态分段显示了;高速中发生交通事故,电视广播中常常对地点描述为“距离xx高速入口xx公里处”,地图是能非常精确的定位到这个地点的。
一 前言 近期翻阅博客,看到社区大神一休哥的一篇《canvas 奇巧淫技(二)绘制箭头路径效果》文章,同样,该大神还展示过一个使用rbush库如何在前端快速从海量数据进行空间检索的案例:https://alex2wong.github.io/mapbox-plugins/examples/rbush/,很有分享精神的前端GIS专家,更多关于前端GIS检索数据的技术可参考搜狐的干货专访:《深入理解空间搜索算法 ——数百万数据中的瞬时搜索》。
前言 PostGIS是PostgreSQL数据库中处理GIS数据的空间数据库扩展,提供大量的空间图形处理和分析函数。很多初学者肯定是安装Linux单机版做做研究学习,而企业级服务器一般会选择Linux环境,所以本文以简短的图文结合,阐述在两种典型环境中快速搭建PostGIS服务。
一 OpenLayers核心职责 OpenLayers最新大版本是openlayers4,它是一个基于h5的GIS前端库,地图渲染方式为Canvas和WebGL,常用Canvas展示二维地图,支持WebGL渲染显示出将来的OpenLayers有支持三维方向的可能。
以PostGIS2.4版本说明,当前PostGIS已经提供了4种空间聚类的方法,列表如下: ST_ClusterDBSCAN ST_ClusterIntersecting ST_ClusterKMeans ST_ClusterWithin 本文简单用图形化的方式简述一下这几种方法如何使用。
一 前言 工作中处理GIS数据时,最常规的操作是对多条线记录,他们的几何关系存在首尾相连的情况,需要合并成一个完整的线路。如路径分析中,路网都是一段一段的,显示的时候很不好看,合并成一个完整的显示比较好,如下图: 路径合并前.png 路径合并后.png PostGIS中,线路合并有几个相似的方法,如ST_Union,ST_LineMerge,ST_MakeLine方法,几种方法看起来很相似,实际应用的差别挺大。
一 前言 前几天,某科研工作者咨询我,是否可以利用PostGIS实现线数据的汇总分析,目前他使用的Arcpy处理实在太慢,难以满足应用需求。他的需求如下图: 输入数据.png 输入数据:3条线路,权重值分别为1300,1200,1000。
前文《基于PgRouting的GIS网络分析--数据准备》描述了如何进行数据准备工作,入门的朋友可以参考如何搭建环境,导入数据和建立索引等准备。pgrouting是postgis的插件,主要做网络分析等业务使用,一般一个地区,一个城市几万级别的路网,查询是非常快速的,但是全国路网动辄几百万,几千万的路网规模,默认查询就非常的慢了。
一 Puppeteer简介 Puppeteer.js是谷歌官方推出的一个nodejs库,它提供了一组用来操纵Chrome的API(默认headless也就是无UI的chrome,也可以配置为有UI),有点类似于PhantomJS,但Puppeteer是Chrome官方团队进行维护的,前景更好。
前文作者讲述了BottledWater-PG安装部署,并在pg中实现了数据改变,向kafka发送消息的案例,详细参考《BottledWater-PG:PostgreSQL集成Kafka的实时数据交换平台》。
众所周知,GeoServer是一个地理服务器,提供了管理页面进行服务发布,样式,切片,图层预览等一系列操作,但是手动进行页面配置有时并不满足业务需求,所以GeoServer同时提供了丰富的rest接口可供用户自己组织业务逻辑进行自动化管理。
一 安装 BottledWater-PG的安装前文已经表述,本文不赘述直接进入集成应用阶段。 二 启动KafKa #启动zookeeper [root@bogon kafka_2.
一 前言 Bottled Water是Confluent公司开发的一款可以将postgresql数据库转换为kafka events的工具。主要用于监视PG的数据增删改的变化,将变化的数据实时推送到kafka消息队列,其他关心数据变化的平台只要监听kafka的消息,就能得到改变的数据。
一 介绍 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据,下载地址如下:https://www.apache.
最近遇到一个PgPool连接阻塞问题,PgPool刚开启是能成功连接的,过段时间就连接不上了。查看PgPool日志,启动成功,连接数据库节点成功,健康检查成功。
一 前言 众所周知,Node可以很轻松的连接PostgreSQL,MySQL,Redis,Mogondb等开源数据库,但是想使用Node连接Oracle一直非常难,不仅仅在Windowns操作系统上,即使是Linux上也非常难编译或运行成功,笔者经过多次失败,最近找到一个oracle官方提供的库oracledb,之所以叫oracledb,是之前npm上已经存在一个山寨的oracle包,安装过程如下: npm install oracle 当然并不怎么好编译通过和使用,不过oralce官方也没办法了,只能自己叫oracledb了。
一 前言 PgRouting是基于开源空间数据库PostGIS用于网络分析的扩展模块,最初它被称作pgDijkstra,因为它只是利用Dijkstra算法实现最短路径搜索,之后慢慢添加了其他的路径分析算法,如A算法,双向A算法,Dijkstra算法,双向Dijkstra算法,tsp货郎担算法等,然后被更名为pgRouting[1]。
CSS Style是GeoServer的一个扩展插件,使用CSS写起来的地图渲染策略文件相比较SLD而言,非常的简洁,本文根据GeoServer用户手册,稍微改写,便于该知识点的推广。
Oracle_fdw是PG的一个外部数据接口,可以使PostgreSQL轻松跨库操作Oracle。Oracle_fdw的作用有以下两点: PG可以跨库增删改查Oracle中的表,可以查询Oracle的视图,可以使PG中的表和Oracle中表/视图作Join查询,类似dblink的功能。
Openlayers3中有个ol.source.XYZ类,可以加载Tile瓦片图层,本文只是做个说明,介绍如何识别以及如何正确加载这些图层。 一 基础XYZ-谷歌离线切片 明显的名称.
pgAgent是PostgreSQL的一个job引擎,可以执行数据库job任务。本文简述其安装步骤 一 安装cmake #检查是否安装 [root@bogon ~]# cmake --version cmake version 2.
地图中坐标系是非常多的,最常用的是EPSG:3857(等于谷歌的900913,等于esri的102100)的web墨卡托投影和GPS的EPSG:4326的WGS84坐标系。
工作中会用到很多小工具,特此记录。 批量导出表 只导出insert语句 pg_dump -h host -p 5432 -U postgres -a -t t1 -t t2 --inserts -f /opt/temp.
基于PG的流复制能实现热备切换,但是是要手动建立触发文件实现,对于一些HA场景来说,需要当主机down了后,备机自动切换,经查询资料知道pgpool-II可以实现这种功能。
关于pg热备与主备切换网上很多内容都有了,本文仅为自己测试使用,特意记录过程,或对其他人提供参考。本文作者选择pg9.6.1版本作为测试。 一 主备机器规划 主机名 | IP | 角色 | 端口 :----:|:----:|:----:|:----:|:----:|:----: master| 192.
一 Canvas跨域现象 地图导出是地图中常用的功能,并且OpenLayers3中也提供了两个地图导出的例子:http://openlayers.org/en/latest/examples/export-map.html http://openlayers.org/en/latest/examples/export-pdf.html。
本文认为已安装PostgreSQL9.6,安装步骤如 Centos7安装PostgreSQL9.6。 注意,作者将Pg9.6直接安装到了postgres用户下如下图: Postgresql数据库安装全目录 下文其他依赖编译到pg的目录下最好,自行对照自己的修改下。
一 安装必备软件 1.1 安装SCWS 下载scws:http://www.xunsearch.com/scws/down/scws-1.2.2.tar.
最新版本的9.6出来了,新增一大堆令人垂涎欲滴的新功能。本文按照套路给个安装教程,仅仅做自己参考使用。 1 安装必要基本软件 [root@pg1 ]# yum install -y gcc.
nodejs一直以异步io著称,其语言特性尤其擅长于在realtime应用中,如聊天室等。在进行实时应用开发时,必不可少的需要用到 socket.io库,可以说,nodejs+socket.io在实时应用中具有较好的表现能力。
一 属性查询 笔者使用一模一样的osm数据,数据量8.7万个点,该数据有一个name列存储点的名称,本次实验,笔者使用 name='练塘镇'作为查询条件, 查询语句如下: http://localhost:8090/geoserver/wfs?service=WFS&version=1.
一 Postgres-XL简介 Postgres的-XL是一个基于PostgreSQL数据库的横向扩展开源SQL数据库集群,具有足够的灵活性来处理不同的数据库工作负载: 完全ACID,保持事务一致性 OLTP 写频繁的业务 需要MPP并行性商业智能/大数据分析 操作数据存储 Key-value 存储 GIS的地理空间 混合业务工作环境 多租户服务提供商托管环境 Web 2.0 Postgres-XL架构 二 组件简介 Global Transaction Monitor (GTM) 全局事务管理器,确保群集范围内的事务一致性。
自定义编译背景 OpenLayers3地图开发库功能非常强大,所以有个问题,就是它非常的大。体积大一向吃了很多亏,比如百度“适合移动端的js地图库”,很多人都会向你推荐Leaflet,原因是小巧。
安装gdal的话,将shp转geojson会非常简单。本文因项目需要,以java-gdal讲述如何实现。ps:当然只要装有gdal就都可以实现功能。 ogr2ogr命令 在控制台执行如下语句: D:\PostgreSQL\9.5\bin> ogr2ogr -f GeoJson test.geojson test.shp gdal中的ogr2ogr工具非常好用,很多开源工具都集成了该命令,所以虽然作者并未安装gdal,但是由于postgresql的空间扩展postgis集成了ogr2ogr命令,所以我们直接使用即可。
一 gdal.open解析 gdal.open.png 阅读api可知,gdal.open方法用于创建和打开数据集dataset,如果以‘w’模式的话,会将更改从内存提交磁盘,否则,更改将被丢弃无效。
gdal用于读写矢量和栅格数据集,gdal常常使用c,c++做开发,也有部分其他语言扩展如py,node。但由于其他语言的官方例子不多,且存在很多问题,所以入门非常难。