自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

研究与专注

探求用计算机和GIS解决现实中的空间信息问题

  • 博客(77)
  • 收藏
  • 关注

原创 mapboxgl - 用webgl展示海量数据,是否可行?

Openlayers憋了好久,终于憋出了WebGL的渲染器,然而只支持点要素类型,要是线和面类型的要素,数据量级一上去,就没法用了。我们看看隔壁的Mapboxgl,诞生之日起就是WebGL渲染,而且openlayers新出的WebGLPoint Layer使用的WebGL渲染样式规则也借鉴了Mapboxgl的表达式(Expression)。所以,为什么不用mapboxgl呢?当我想到这个想法的时...

2020-04-18 15:28:22 5035 6

原创 Kubernetes - 如何在一个完全离线的环境中快速建立一个kubernetes集群

要做的是什么我们讨论的是这样一个任务,在一个完全隔绝外网环境的多台机器(物理机或虚拟机)上自动化地建立kubernetes集群,这个任务包含一下几个要点:纯内网,与外网隔绝; 自动化,只需配置机器IP,即可安装,安装过程无需人工干涉; 假定机器上最小化安装的Centos Linux系统,没有ansible、kubeadm等工具使用,我们能用的只有 shell。想直接使用安装脚...

2019-06-13 23:36:14 1183 4

原创 Docker - 容器内应用和外部非容器应用互相访问方法

Docker搭建开发环境用的非常多,通常开发机器上既有容器形式的应用,又有本机跑着或者调试的程序,它们之间互相依赖,如何让它们之间通信顺畅,有时候是一个挺困难的事情。容器应用和容器外应用互相访问分为三种情况:容器内应用和容器内应用 容器内应用访问容器外应用 容器外应用访问容器内应用而根据两个互相通信的容器或应用在不在一台服务器上,我们又多出一个维度的情况:容器或应用在一台服务器 容...

2019-05-29 23:49:22 18454 7

原创 Docker - 挂载目录(bind mounts)和Volume是不同的

2019/10/25更新:docker commit是不能对容器中volume声明的目录改动进行保存的,无论是Dockerfile中的VOLUME字段,还是docker-compose.yaml中的volumes配置。分割线,知乎上学到的套路。以下是原文:一直一来,对于多个容器需要共享访问同一数据目录,或者需要持久化容器内数据(如数据库)时,我们都是采用挂载目录形式(bind m...

2019-04-26 22:25:06 16607 1

原创 Kubernetes - 集群中容器访问集群外部服务

企业内部一般存在很多的微服务,在逐步容器化的过程中,会有部分服务在集群外部,未完成容器化,比如数据库,而部分已经完成容器化的依赖于这些服务的服务,过渡过程中,需要集群内部的容器访问集群外部的服务。为了在容器化过程中,让服务不中断,就需要让Kubernetes集群内部的容器能访问集群外部的服务,怎么做到呢,在每个应用的配置文件中使用外部IP或者外部rds名字吗?这样做,在外部的应用容器化后,还需要...

2018-10-16 14:31:17 9313

原创 GIS 矢量切片(Vector Tile)-地图定制化的时代已经悄悄来临

前言 切片技术的简单介绍,以及传统栅格图片切片的不足现在最流行的地图底图技术是栅格切片底图,它们本质上是将空间数据分别渲染为不同缩放级别的地图图片,然后将各个级别的图片按照一定规则切分,按照一定的 “规则组织”,存储到硬盘或数据库中,构成一幅完整的地图。 图1 切片概念图相对于其他技术,切片地图有其优越性,例如有效减少了传输数据体积,多级缩放等。然而,栅格地图也有一些短处,缺乏实时性,数据完

2016-12-09 17:54:11 38435 40

原创 OpenLayers 3 之 切换图层控件

在 openlayers 2中,是默认有切换图层控件的,但是由于某种原因,openlayers 3中并没有默认实现,但却给我们很容易扩展的基类(ol.control.Control),我们可以自定义实现,并不是很难,这我会在其他文章中讲解。这篇文章中,我利用一个 GitHub 中的一个开源项目(这个项目就是扩展了`ol.control.Control`,自定义了切换图层控件),添加切换图层控件,并探索其用法。

2015-11-27 12:15:37 10570 4

原创 OpenLayers 3 之 动态点扩散效果

当某个地方发生一些事情之后,如果我们添加一个静态点在地图上,并不能引起注意,那我们可以放置一个动态的点,类似于在水中投入一个石头,水波扩散的效果,象征发生的事件有一定的影响区域,那么,我们如何利用 OpenLayers3 做出这样的效果呢?我们要实现的效果如下图,之前雅安发生过地震,我们在雅安放置一个这样的点,表示雅安发生了地震。 如何实现呢?

2015-11-21 00:28:35 14629 8

原创 OpenLayers 加载天地图

要使用 OpenLayers 3 加载天地图,首先要弄清楚天地图发布的原理,以及遵循的发布规范,上一篇中我们提到了使用 OpenLayers 3 加载百度地图,我们提到一般网络地图为了加快访问速度,都采用缓存切片地图的方式,天地图也不例外,而且原理极其类似,但是其切片的索引组织方式还是有一些不同,虽然都是切片,但是切片的起始坐标原点不一致,百度地图是屏幕的左下角,而天地图是屏幕的左上角(与谷歌地图一致)...

2015-11-09 21:23:39 28329 22

原创 OpenLayers 3 之 加载百度地图

很多人想使用 OpenLayers 调用百度地图、腾讯地图等国内地图,本文就讨论一下其可能性和实现原理。我们以百度地图为例,分析其地图调用原理,我们都使用过百度地图,在网速不快的情况下,肯定有过感受,地图是一块一块加载的,从这里我们就可以看出,地图是被切成了很多块的小图片,调用时按照一定规则请求需要的“切片”,可视区域以外的“切片”不加载,这样可以减小数据传输数据量,使地图加载更快。

2015-10-26 09:30:40 34979 8

原创 OpenLayers 3 之 绘制图形(ol.interaction.Draw)原理解析

在 OpenLayers 3 中,负责交互的模块中,有一个负责绘制图形的交互模块,这个交互子模块是 ol.interaction.Draw。该模块允许用户通过鼠标点击(PC浏览器环境)或者手指触摸( 触屏手机浏览器环境)在地图上绘制点、线 和 面,上一篇文章 中主要介绍了绘制功能的用法,这次我们看看其底层实现及其原理。注:绘制完成之前的要素图形我们称之为草图(sketch),绘制完成的图形称为要素(feature)。

2015-10-02 12:13:46 17295 5

原创 OpenLayers 3 之 绘制图形(ol.interaction.Draw)详解

在地图上绘制各种各样的矢量图形,很多应用场景都需要用到,比如可以实现在客户端勾绘矢量图形并将结果保存到数据库以待后续编辑和可视化等等很多有用的功能。这次我们看看怎么利用 OpenLayers 3 绘制各种各样的图形,并添加到图层显示。在 OpenLayers 3 中负责绘制任务的是 ol.interaction.Draw 类,下面介绍这个类和功能的用法。

2015-09-21 09:57:25 38778 15

原创 OpenLayers 3 之 地图样式(ol.style)详解

地图样式是由 style 类控制的,其包含了地图样式的方方面面,例如,填充色、图标样式、图片样式、规则图形样式、边界样式、文字样式等,样式一般针对矢量要素图层。      矢量图层样式可以事先写好,写成静态的,矢量图层直接按照定义好的样式渲染,也可以动态使用样式的 set() 方法,但是要注意刷新矢量图层,重新渲染,否则动态样式不生效。

2015-05-30 12:49:09 31475 13

原创 OpenLayers 3 之 地图控件(control)详解

每一个地图应用都应该有一些工具方便用户控制地图的行为,比如缩放,全屏,坐标控件等等,在 OpenLayers 中怎么添加这些工具呢?下面我给大家介绍一下 OpenLayers 中包含的控件种类,并介绍其使用方法。对控件的定制化,和对 OpenLayers 增加控件和优化控件等超出了本文范围。

2015-05-14 08:43:25 22737 9

原创 OpenLayers 图层(Layers) 详解

如果不是专业的地图工作者,看到地图,可能觉得地图就是一张将三维世界映射到二维空间,很多信息混杂在一起表示空间信息的动态可交互图片,其实这只是表面现象。实际上地图是由一个或多个图层组成的,使用不同的图层存储不同类型的地物,比如由存储道路的图层,有展示拥堵情况的图层,通常还有一个含有基础地理信息(比如政区划分)的底图图层。

2015-04-30 18:41:55 80117 35

原创 OpenLayers 3 之 使用地理数据传输格式GeoJSON

用户请求地理数据或者其他数据,服务器要以一定的客户端能够识别的数据格式返回,数据格式是否高效,直接影响用户的体验!首先要求数据格式要是轻量级的,还要求客户端处理数据方便快捷,相较于XML,JSON满足这两个要求,且目前应用广泛,非常流行。而在传输地理信息方面,相应有GeoJSON。下面咱就来了解一下GeoJSON,并看看它怎么应用到应用里!

2015-04-01 13:11:41 12856 16

原创 OpenLayers 3 之 使用矢量图层(Vector)

摘要        矢量图层:矢量图层是用来渲染矢量数据的图层类型,在OpenLayers里,它是可以定制的,可以控制它的透明度,颜色,以及加载在上面的要素形状等。        常用于从数据库中请求数据,接受数据,并将接收的数据解析成图层上的信息。如将鼠标移动到中国,相应的区域会以红色高亮显示出来,高亮便是矢量图层的行为。主要内容1、 HTML文件的进化        这

2015-03-27 14:43:22 38004 17

原创 Kubernetes - Configmap热更新原理

GitHub地址: https://github.com/QingyaFan/container-cloud/issues/2Kubernetes中提供configmap,用来管理应用的配置,configmap具备热更新的能力,但只有通过目录挂载的configmap才具备热更新能力,其余通过环境变量,通过subPath挂载的文件都不能动态更新。这篇文章里我们来看看configmap热更新的原理,...

2019-11-01 01:02:40 12682 2

原创 Docker - Docker重启!机器宕机!容器能自己恢复吗?

能!启动容器的时候,可以指定容器在某些可预测(docker engine重启)与不可预测(机器宕机重启)时的重启行为,利用这个功能,我们可以放心当重启docker engine,也不用担心机器重启导致应用不可用。这个神奇的功能是“restart polices”,定义了当容器因为某种原因停掉之后的行为,有四种police:四种重启策略no,无论什么时候容器因为什么原因宕掉,都不重...

2019-08-16 12:05:07 10253

原创 Kubernetes - 服务网格(service mesh)

1. 服务网格诞生的背景服务网格并不是新概念,微服务架构被越来越多的机构采用是服务网格诞生的大背景。微服务相对于多个服务一体的单体应用来说,有诸多好处,因而被越来越多的采用:技术可异构,各个服务之间采用RPC或HTTP通信,约定好接口,使用哪种技术或语言都可以; 鲁棒性,如果微服务之间的依赖关系处理的好,可以做到一个服务挂掉不影响其他服务; 组合,独立的微服务意味着可重用性强,可以...

2019-07-07 00:39:12 2765

原创 Kubernetes - flannel的默认网卡设置

前两天新配置了几台虚拟机,像往常一样安装集群,但是在flannel这一步总是有问题,查看日志:Failed to find any valid interface to use: failed to get default interface: Unable to find default route没找到有效的网卡设备,解决办法也很简单,在flannel的启动参数中指定网卡即可:...

2019-06-24 23:40:00 9333

原创 Kubernetes - 记一次所有机器重启导致的集群问题

最近给客户部署的集群由于机器重启集群不能启动,首先执行kubectl get node,发现没有可用的node,于是去看centos的系统日志/var/log/message,日志中有x509,证书无效或已过期,心想,为啥重启集群会导致证书错误?且先记录下:x509,证书错误,无效或已过期于是从集群的基础从底层往上查,k8s将集群的信息会记录在etcd中,而各个节点由flannel分配...

2019-06-20 23:44:56 3606

原创 Docker - 制作一个合格的docker镜像,以及最佳实践

什么是镜像制作Docker镜像之前,我们先明确一下镜像是什么,百度百科对于镜像的定义如下:镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件,RAID 1和RAID 10使用的就是镜像。常见的镜像文件格式...

2019-06-06 16:28:01 2449

原创 Docker/Kubernetes - 调试

容器启动失败,单机环境下,我们可以这样检查原因:docker logs container_name docker inspect container_name在kubernetes容器云环境中,可以这样检查原因:kubectl logs pod_name kubectl describe pod pod_name其他情况有时候通过以上的方法也不行,例如,使用kubectl d...

2019-06-06 13:09:43 298

原创 PostgreSQL - 主从热备:可以分担主库流量,还能备份

常见的PG备份有三种方式:定时pg_dump,定时备份文件,还有基于WAL的备份,它们各有优劣,这篇文章我就对比一下这三种方法,总结一下三种的概念、做法,以及适合的场景。概念“pg_dump”很容易理解,对数据库定期使用pg_dump备份; “定时备份文件”,对数据库对数据目录进行备份; WAL是“write ahead log”的简称,pg中每个操作都会产生WAL,我们可以利用WAL...

2019-06-03 19:54:55 910

原创 GIS - 底图,怎么做怎么选择

底图往往是一些基础信息,比如行政区、街道、水系,它们变动较少,一般放在图层最下方。底图一般使用栅格瓦片,栅格瓦片有其自身局限性:地理信息内容改变,栅格瓦片无法做到实时更新。栅格瓦片需要预生成,生成以后不能改变,如果地理信息有变动,那么需要重新生成瓦片 样式改变,如果需要不同样式的底图,需要额外生成一份瓦片。不同样式,存储多份相同的数据。于是矢量瓦片的概念被提出,矢量瓦片也是瓦片,是矢量,在...

2019-04-27 18:38:38 3653

原创 Kubernetes - GC的镜像自动清理导致的问题

Kubernetes集群随着应用的迭代,会产生很多无用的镜像和容器,因此需要定时清理,分布在每个节点的Kubelet有GC(垃圾收集)的职责,当集群中有断定为垃圾的镜像或容器,那么kubelet会清除掉相关镜像或容器。容器GC间隔为1分钟,镜像GC间隔为5分钟。而这在某些情况下会产生问题,如:私有离线部署环境中,如果某个node节点相关的镜像被清理了,当在这个启动相关容器就会失败,由于是离线,那么...

2019-04-16 20:52:26 4652 1

原创 Git - 把 issue 和 milestone 用起来

一个软件很难一开始就能没有问题的实现所有功能,都需要后期不断进行迭代。如何让这个迭代的过程井然有序,可以将git的ticket和milestone结合起来。issue,也可以看做ticket,由自己和其他同事提出,可以有新功能,和bug; milestone,阶段性的开发目标,每个milestone中可以选择issue中优先级高的问题和新功能。...

2019-03-20 10:35:18 3033

原创 PostgreSQL - PostgreSQL/PostGIS 性能调优

1、优化资源占用无法对服务器环境预估,所以PostgreSQL配置中参数都比较保守,不是对服务器资源量身定制,都默认是最小。其中两个参数,根据服务器实际资源情况调整会对性能影响很大:shared_buffers,缓存查询过程中的临时数据,内存的1/4比较合适,默认128M; work_mem,sort和hash表操作需要占用的内存,不够用时,会向磁盘中写文件,磁盘的性能和内存相差可不少,...

2019-03-13 08:21:58 2302

原创 PostgreSQL - 让PostGIS用上PostgreSQL的并行

为啥放一张佩奇?它的真实面目其实是汽车里的涡轮,涡轮增压可以让小排量的发动机有大排量发动机的爆发力。佩奇都已经配送了涡轮,号称”涡轮猪“,PostgreSQL怎么能不跟跟时尚。postgresql中,并行计算就是涡轮,利用好并行计算,你的postgresql就是涡轮增压postgresql了,无痛享受数倍加速!怎么样,这个类比是不是有点尴尬,但话糙理不糙,总之,用并行计算为你的查询加速吧!...

2019-03-07 07:58:22 817

原创 PostgreSQL - citus从入门到放弃,不是标题党

不知道这样的标题会不会被微软警告,最近,微软收购了 ? 年历史的 CitusData 公司,而我这里却要说Citus的不好?其实不是的,Citus确实有它适合的场景,但是,就像之前文章提到的,它也有不适合的场景,而我平时工作的很多需求就在不适合的场景之列。这里咱们复习一下Citus是什么?主要做什么?适合做什么,不适合做什么?Citus是什么?主要做什么?Citus是PostgreSQ...

2019-03-02 16:32:00 13156 2

原创 PostGIS - st_makeline由点生成线需要注意点的顺序

st_makeline是由点生成线的函数,它根据输入的点拼接成线,不会理会点的顺序,顺序是随机的?(随机读取?),所以同一个点数据集,每次都会得到不一样的结果。想保证生成的结果始终一致,需要预先将传入的点按照一定的规则排序。...

2019-02-18 17:35:32 2852

原创 PostgreSQL - Citus集群性能调优建议

调优思路Citus本身是一主多从的结构,Coordinator只负责协调分配任务,并不会处理实际的查询,Worker负责执行Coordinator分配的子查询任务,每个Worker本身就是一个完整的PostgreSQL环境,因此,提升Citus集群的性能就分为两部分:调优Coordinator制定执行计划的效率; 调优各个Worker执行的效率,跟调优单节点PostgreSQL无异。默...

2019-02-15 08:05:37 2369

原创 Git - 我觉得超好用的点

如果一个Git管理版本的项目需要做一些很大的改动,例如重写,另起炉灶,怎么将新的项目合并到老的项目,不改变git仓库的地址?例如,一个基于PHP框架Laravel的项目,之前是5.0版本,现在升级到5.4版本,框架的许多地方都改变了,与其在原项目中修改,不如直接另起一个项目,替换掉原来的master分支即可。新建目录,初始化Laravel5.4,将原来的代码拷贝进Laravel的目录,然后...

2019-02-14 23:18:48 567

原创 Web - Cookie & Session,从Laravel前后端分离遇到的问题说起

从利用PHP的框架Laravel5.2开发后端api说起,前端的应用与api是分离的,本来一起都很顺利,后来部署到ci上时,前端配置了域名,后端的api通过IP地址访问,当然后端的api配置了cors来允许跨域,这时api层的session都失效了。可以观察到的现象是,登录时session设置成功,然而在其它api检查session中存储的登录用户信息时,却为null。再次检查,发现浏览器发出...

2019-02-12 21:43:35 1605

原创 PostgreSQL - 地理数据索引之争:GIST VS R-tree

目录GIST索引GiST原理R-tree索引R-tree原理 GiST VS R-tree创建时间支持的操作效率之争本文主要针对的是地理数据,地理数据的特点是具有二维或三维的坐标数据,且都是基于PostGIS扩展对地理数据的操作来说的。空间索引是空间数据库的关键所在,空间索引强,空间数据库支持大规模的数据才有意义,可以说空间索引的好坏决定了数据库的强弱。...

2019-02-01 22:09:49 5036 3

原创 PostGIS - ST_ClusterDBSCAN聚类算法

目录DBSCAN是什么?PostGIS中实现的一个聚类算法,可根据密度对要素进行聚类,该方法使用的是“DBSCAN”算法。DBSCAN是什么?“DBSCSN”并不是扫描数据库(scan database),而是“Density-based spatial clustering of applications with noise”的缩写,基于密度的空间聚类算法,适用于含有噪声数据的...

2019-01-27 23:11:56 4439

原创 PostgreSQL - 利用 citus 支持地理大数据

目录1. 实际问题可能的解决方案2. Citus是什么Citus的特点3. 建立集群3.1 让Coordinator知道有Worker的存在3.2 迁移数据4. 测试性能导入数据与数据分布缓冲区操作处理时间不涉及汇总的操作3. 总结1. 实际问题实际业务中,会有非常大的地理数据集的存储需求,比如全世界的点状POI,数据量级已达亿级别,存储在单...

2019-01-16 10:21:06 1784

原创 PostgreSQL - citus如何实现高可用,处理单点故障

目录1. worker节点故障1.1 PostgreSQL的流式复制1.2 Citus的分片复制2. Coordinator节点故障3. 总结号外:Citus发布了8.x版本,支持PostgreSQL11。Citus适合存放数据量较大的情形,不上亿的数据往Citus中存意义并不大,更适合放单节点。而存储如此大量的数据,如果不做好数据备份或者高可用,数据丢失产生的后果...

2019-01-15 20:01:30 3404

原创 Docker - 容器中的Loopback

Loopback概念TCP/IP协议族中包含一个虚拟网络接口(virtual network interface),通过这个接口同一主机上的不同网络应用就可以相互通信,发送到loopbackIP地址的通信会直接发送到本机的网络通信栈,被本机接受,不会真的发出去,而接受到这个通信的应用就像这个通信是来自其它主机一样消费它。我们常用的127.0.0.1和localhost都是loopback的,在...

2018-09-29 00:25:10 1721

空空如也

空空如也

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

TA关注的人

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