Skip to content

Commit

Permalink
Merge pull request #45 from XiaofengZeng/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
XiaofengZeng authored Dec 27, 2023
2 parents c81697e + b2a6633 commit 11014da
Show file tree
Hide file tree
Showing 15 changed files with 495 additions and 32 deletions.
61 changes: 54 additions & 7 deletions docs/.vuepress/navbar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,59 @@ export default navbar([
icon: 'pen-to-square',
prefix: "/front-end/",
children: [
'javascript',
'css',
'html',
'tools'
{
text: '语言基础',
children: [
'javascript',
'css',
'html',
]
},
{
text: '依赖管理工具',
children: [
{ text: 'pnpm', link: 'package-manager-tool/pnpm' },
]
},
]
},
{
text: 'GIS',
icon: 'pen-to-square',
prefix: "/gis/",
children: [
'cesium',
'ol-cesium',
'openlayers',
{
text: '地图框架',
children: [
'cesium',
'ol-cesium',
'openlayers',
]
},
{
text: '地图服务',
children: [
{ text: 'ArcGIS Server', link: 'server/arcgis-server' },
]
},
{
text: '数据资源',
children: [
{ text: 'POI/AOI/LOI', link: 'resources/poi-aoi-loi' },
]
},
{
text: '地理处理',
children: [
{ text: 'mapshaper', link: 'geoprocessing/mapshaper' },
]
},
{
text: '地理算法',
children: [
{ text: '抽稀', link: 'algorithms/simplify' },
]
}
]
},
{
Expand Down Expand Up @@ -53,4 +92,12 @@ export default navbar([
'windows',
]
},
{
text: '成长总结',
icon: 'pen-to-square',
prefix: "/experience/",
children: [
{ text: '年终总结-2022', link: 'summary-2022' },
]
},
]);
10 changes: 0 additions & 10 deletions docs/.vuepress/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,16 +79,6 @@ export default sidebar({
link: 'utils',
},
],
'/front-end/tools/': [
{
text: '依赖管理工具',
icon: 'book',
prefix: 'package-manager-tool',
children: [
'pnpm'
]
}
],

'/gis/cesium': [
{
Expand Down
16 changes: 8 additions & 8 deletions docs/.vuepress/theme.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ export default hopeTheme({

logo: '/assets/icon/nest.png',

repo: 'https://github.com/XiaofengZeng/kite-notes',
// repo: 'https://github.com/XiaofengZeng/kite-notes',

docsDir: 'docs',

Expand All @@ -26,11 +26,11 @@ export default hopeTheme({
// sidebar
sidebar,

footer: '默认页脚',
footer: 'kite-notes',

displayFooter: true,

darkmode: 'auto',
// darkmode: 'auto',

blog: {
avatar: '/assets/images/avatar.jpg',
Expand Down Expand Up @@ -75,11 +75,11 @@ export default hopeTheme({
},
},

// encrypt: {
// config: {
// '/demo/encrypt.html': ['1234'],
// },
// },
encrypt: {
config: {
'/experience/summary-2022.html': ['527xc!'],
},
},

// page meta
// metaLocales: {
Expand Down
81 changes: 81 additions & 0 deletions docs/experience/summary-2022.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# 年终总结-2022

**计划赶不上变化**”是今年的核心主题。虽然这句话在每个计划中都会出现,但今年让我的体会更加深刻。年初公司部门经历裁员,剩余的部分员工因被拖欠工资仓皇而逃,年底部门因运营规模缩减而将办公室回总部;我曾有新的机会改变当前状况,但最终留下与公司共克时坚,并走向了宇宙尽头;在去年想过工作赚钱比感情重要,但后来遇到了很好的她。这一切,都是自己选择的,也都将成为2022年的各种时光痕迹...

## 工作

> **在迷失自我中,缓慢前进...**
### 工作内容/涉及范围

部门将原本的华北地区业务划分出去,今年只负责华南地区的运营。这是公司层面的运营策略调整,缩小运营规模,这无可厚非。也因此,由于我的工作表现和工作年限、以及在项目工作任务的驱动下,我在交付组从原本的一名**开发人员**逐渐成为了一名**软件部署、系统运维人员**。去接触了曾经向往但琢磨不懂的Linux系统,部署项目所需要的软件环境、修复了许多Linux等保扫漏的漏洞问题。将其过程、遇到的问题和处理方式整理归档,成为小组内的知识库。

断断续续对其他系统的功能进行开发和维护,也接触了一小部分三维相关功能的开发。

自我感觉有成就感得内容:

1. 碎片化学习。在任务驱动下学习Linux知识,常用的基本操作指令;
2. 自动化更新效率。编写项目级代码更新脚本,优化现场前后端代码更新效率;
3. 尝试输出。撰写知识库,将自己遇到的问题、软件部署流程,学习笔记等内容组织归档;

### 与去年的成长对比

**一年下来,能够很明显地感受到自己的进步方向跟自己的职业规划方向大相径庭,成长速度也比远不如实习那年。**有工作内容原因,也有自我驱动原因。有句话是这么说的:“间歇性踌躇满志,持续性混吃等死”,这很符合我的目前的成长状态。

拥抱新的知识是正确的,它能够扩展我的技术视野和理解,能够让我感受到计算机世界的那种一通则通、包罗万象的快感。但如果没有真正的任务驱动,很难将了解和学习到的知识融入到自己的成长当中。同时,如果眼高手低,所有事情都了解一点,也只会一点,那就算认知再广阔,也只是一个会说话、但不会做事的人。

## 个人提升

> **没有量变,何以质变?**
> **不成系统,何以通透?**
### 能力提升

1. 运维能力提升。熟悉Liunx的操作指令,了解相关文件的配置、软件安装/升级,也修复过部分系统漏洞。
2. 公司业务熟练的提高。能够总体把握功能的前后端交互逻辑,快速定位问题,并测试排查问题。对新的需求也能够较好地完成梳理

能力的提升是多方面的。对于**工作能力的提升**,自我觉得在后半年渐入佳境,跟领导沟通后,明白工作任务的主次之分,着手领导安排的、时间紧的、主要需要攻克的事情;对于**自我规划的能力**,还是一如既往的迷茫,没有目标感,不只是这几年疫情的原因,也还有自己内心的决心不够大,总是浅尝甜头后就想着后续会容易很多,就撤下了内心的危机感,但事实并非如此,所有事情的安排都在时刻变化;对于**自我提升的能力**,我觉得我能坚持下来,对于短期的目标能够快速进入学习状态,工作日也能早到,能挤出大于三十分钟的时间进行自我碎片化学习,晚上下班后有时候也能够挤出一个半小时的学习时间,但唯一不好的就是有时候因为睡眠不佳,而让自己总是处于低效的学习状态中。

### 方向转变

一年的工作累计下来,方向有所改变,可能是因为公司缺人,自己逐渐变成了多面手,支持开发与运维,已经一些杂七杂八的事务。在年中的时候,自己有想过转为运维人员,但是最终还是败给了感兴趣的三维方向。同时,在九月初的时候尝试了其他机会,也获取到了新offer,但还是因为外包和薪资谈不拢的原因留在了原公司。在这次经历中,也让我感受到了“宇宙尽头”的势在必得。所以,下半年的方向就变成了备战考公...

从程序员到公务员的成长方向改变,仅管身边的朋友劝我三思,但是想到自己身处的环境,成为体制内的一员是能够给我带来最大收益的方式。于是乎开始进入紧张的2023年国考复习,剑指2023省考。虽然国考的目的只是试水,但它能够让我融入这种紧张的氛围,驱动我学习。复习过程固然是枯燥的,刷题也是,但系统学习一套理论后,所有考点都是有据可依的,难度也大。只是需要控制解题时间。所以,**如果没有刷体量的增加,怎么能够提高成绩呢?**,但目前个人复习的情况是,**考公知识体系还不够牢固,做题速度较慢**,急需提高。

### 是否能够两手抓?

曾想过开发和备战两手抓,但经过曾经的个人公考经历来看。我自己如果要考公,必须立下大决心,并脱产。相当于把自己的后路堵死,不成人便成仁。我也在下半年尝试了两手抓,确实很累,身心疲惫,即使开发压力不大,但惰性还是有的。而且,现在公司办公地点改变,每日通勤需要大量时间。因此,我很大可能会离职进行备战。

### 有何不足?如何改进?

不足:

1. 目标感不强,容易动摇和改变。虽说涉猎了自己陌生的领域,如Linux系统,Vue2学习...但是有时候也因为学习之后对其产生了兴趣,而动摇自己的目标;
2. 驱动力不足,容易浅尝则止。外部驱动力缺失,缺少职业任务强迫自己学习和实践;内部驱动力稍弱,易受外部因素打断而忘记继续前行;
3. 专注力不够,容易被打断。自身睡眠不足,无精打采,容易被一些小动静打断目前做的事。

努力改进:

1. 确定明确的大目标,并将其拆分为阶段小目标以及当前阶段需要完成的实践任务;
2. 增强驱动力,如果没有外部驱动,那就自己驱动自己,将“以教为学”作为首要内在驱动力,一方面能过够满足内部驱动,另一方面也能够整理成知识库,分享自身收获的知识
3. 从睡眠做起,保持良好且足够时长的睡眠,保证第二天的专注度

## 生活

> **出门在外,记得按时吃饭**
### 人际关系

自从离开学校开始实习,和几个同学进行住得近,便进行抱团取暖,互相蹭饭吃。同学也会介绍她的朋友,也因此,我认识了她,我现在的女朋友。有了女朋友之后,我们几个同学的关系似乎加上了羁绊,关系和联系更加地密切。总是说,出门靠朋友。这句话确实不假,是他们丰富了我的日常生活,带着我玩。他们的这样的利他行为,我能不能也学习学习,链接身边的资源,实现共赢。

当公司不景气的时候,大家纷纷离职,我和剩下的几个成员通过跑步熟络了起来,一起跑完步去疯狂星期四,很快乐。但十月份的疫情和伙伴的出差,让大家都不敢在外运动,我们也减少了运动的频次

### 感情状态

- **亲情**:仅管人在异乡,但每周还是会和家人保持联系,了解家里发生的事。虽然不想回家,但对家还是有依恋的。
- **友情**:结交的伙伴越来越多啦,要学会怎么将这些资源联系起来。
- **爱情**:在朋友们的撮合之下,我俩在5.20那天确认了关系。之后便是甜甜蜜蜜的恋爱了,这种感觉很奇妙,仿佛有一个人住进了心里,关心、支持、呵护无处不在。

### 生活质量

自从年中将自己的出租屋从大单间换成一房一厅,自己更喜欢下厨,也会学会多种菜式,做给朋友品尝。有时候也觉得自己有做菜的天赋哈哈哈哈。同时,自己也会整理屋子,给自己营造舒服的环境。总体来说,生活质量逐渐变好。
File renamed without changes.
7 changes: 0 additions & 7 deletions docs/front-end/tools/README.md

This file was deleted.

Binary file added docs/gis/algorithms/images/simplify-dp.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/gis/algorithms/images/simplify-vw.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
70 changes: 70 additions & 0 deletions docs/gis/algorithms/simplify.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# 抽稀(概化)

## 背景/应用场景

随着对海量地理空间数据加载、渲染的需求日益增加。在地理信息系统中,对一些细节程度高的数据在地图上的展示往往需要绘制大量的坐标点,当地图缩放层级较小时,并不需要将所有的点都绘制出来,因为全部绘制出来往往会存在性能问题,因此,可通过**抽稀算法**,将不重要的点舍弃掉,那么系统对矢量数据加载的处理性能将得以提高,同时不影响视觉效果。

## 抽稀算法类型

抽稀,也称作概化。<u>抽稀算法的关键是定义**抽稀因子**,抽稀因子的不同决定了抽稀算法的多样性。在现有抽稀理论中,有按步长,线段长度,垂距等来定义抽稀因子。</u><sup>1</sup>在GIS领域,比较常用的抽稀算法是**Ramer-Douglas-Peucker**算法(基于距离)和**Visvalingam-Whyatt**算法(基于面积)。

### Ramer-Douglas-Peucker(道格拉斯-普克)

从整体角度来考虑一条完整曲线或一段具体线段,思路为:

1. 确定距离阈值`D`,即抽稀因子,作为判断是否抽稀的指标
2. 对曲线的首末两点虚连一条直线,计算曲线每个点到虚直线的距离,找到最大距离`Dmax`,判断其距离与距离阈值`D`的关系
3. 如果`Dmax < D`,则舍弃该曲线的所有中间点,将虚直线作为抽稀后的线段
4. 如果`Dmax >= D`,则找到`Dmax`在曲线上的对应的点作为分割点将当前曲线分割为两段,继续对这两条线段进行`第2步`操作(即递归处理,直至所有`Dmax < D`,则处理完毕)

![Ramer-Douglas-Peucker思路可视化](./images/simplify-dp.gif)

上图说明(可对应思路说明进行理解):

- **黑色曲线**:表示抽稀前的曲线
- **浅蓝色直线**:表示虚直线
- **深蓝色直线**:表示抽稀后的曲线
- **最大值对应点(红色)**:表示`Dmax < D`,可以舍弃该曲线的所有中间点
- **最大值对应点(绿色)**:表示`Dmax >= D`,需要进行曲线分割并重新处理

### Visvalingam-Whyatt

是一种渐进式的抽稀方式,思路为:

1. 确定距离阈值`A`,即抽稀因子,作为判断是否抽稀的指标
2. 在一条曲线中,计算由三个连续的点所形成三角形面积,找到这些三角中的最小面积`Amin`,判断其面积与面积阈值`A`的关系
3. 如果`Amin < A`,则删除该面积对应三角形中的中间顶点,继续对剩下的顶点所形成的曲线进行`第2步`操作(即递归处理,直至所有`Amin > A`,则处理完毕)

![Visvalingam-Whyatt思路可视化](./images/simplify-vw.jpg)

### Ramer-Douglas-Peucker和Visvalingam-Whyatt的算法区别

1. `Ramer-Douglas-Peucker`算法的优点是计算简单,但它的结果可能会出现自相交
2. `Ramer-Douglas-Peucker`计算效率更高,它的时间复杂度是`O(n^2)``Visvalingam-Whyatt`的时间复杂度是`O(n·log(n))`
3. `Ramer-Douglas-Peucker`算法的阈值是距离,`Visvalingam-Whyatt`算法的阈值是面积
4. 相比起`Ramer-Douglas-Peucker`算法的选取保留点,`Visvalingam-Whyatt`算法是选取删除点
5. 相比起`Ramer-Douglas-Peucker`算法,`Visvalingam-Whyatt`算法产生的角度变化更小,更能保留几何面的特征,更加适用于河流、森林或海岸线等自然线条或多边形特征的抽稀

## 拓扑问题

概化数据可能会破坏数据的拓扑关系,因此,可以先将数据转化为拓扑结构,再对拓扑数据进行数据概化(抽稀)

## 实现

### 已有实现

1. [mapshaper -simlpify](https://mapshaper.org/)
2. [Simply.js](http://mourner.github.io/simplify-js/)
3. [OpenpLayers —— ol/geom/Geometry -> simplify(tolerance)](https://openlayers.org/en/latest/apidoc/module-ol_geom_Geometry-Geometry.html#simplify)
4. QGIS —— MenuBar -> Vector -> Geometry Tools -> Simplify
5. QGIS —— ToolBox-> GRass -> Vector -> v.generalize

## 参考文档

1. [抽稀-百度百科](https://baike.baidu.com/item/%E6%8A%BD%E7%A8%80/7297123)

2. [空间数据量大怎么办,三种方式告诉你怎么抽稀](https://mp.weixin.qq.com/s/dbt8ZNFJ7TuVoGX5u1xWmw)

3. [常用的地图数据概化算法:Douglas-Peucker与Visvalingam-Whyatt](https://zhuanlan.zhihu.com/p/355323735)

4. [Description of Visvalingam & Whyatt Line Simplification Algorithm](https://ignf.github.io/CartAGen/docs/algorithms/line/visvalingam.html)
Loading

0 comments on commit 11014da

Please sign in to comment.