这门课解决什么问题

地图切片是地理信息系统的核心技术。当你在手机上缩放查看地图时,后台其实是在加载不同细度的预切割图块——这就是地图切片。这门课从零开始,教你如何用Java把原始的地理数据(比如地形、建筑轮廓)转换成可以快速查询的切片文件,再用单线程、多线程、最后用Spark分布式框架来优化性能。课程不只讲概念,而是围绕一个完整项目展开,让你理解地图系统在大数据场景下的真实工程做法。

适合什么基础、先看哪几块

这门课假设你已经懂Java基础语法和面向对象编程,最好有一点点Spark或分布式处理的概念。但不需要地理信息系统的前置知识——讲师会从业务讲解开始,先把"为什么要切片、怎么切"说透彻。

建议你这样安排学习顺序:

  • 第一阶段(打地基):先看业务讲解和数据源讲解,理解地图切片的核心逻辑。然后是Java操作地图的技术选型和Geometry API,这些是后续编码的基础工具。如果你对地理坐标系、矢量数据的概念陌生,矢量片介绍这一讲也别跳。
  • 第二阶段(写代码):Protocol Buffers和多语言数据交换这两讲解决的是数据序列化问题,虽然看起来有点绕,但直接关系到切片文件的生成效率。接着是切片逻辑、保存数据、单线程版本的程序实现,这块是"能跑"的阶段。
  • 第三阶段(优化性能):单线程版本跑通后,看性能分析,然后用多线程优化。如果你的项目数据量很大,再继续看Spark的实现——但如果只是学习思路,单线程和多线程两个版本也足够理解核心思想。

学完能做什么、资料怎么配合练习

学完这门课,你能独立完成:用Java读取原始地理数据,按照Web墨卡托投影标准把它们切割成多个缩放级别的切片,最后存储成可用的文件格式。如果你在地图应用、GIS系统或位置服务相关的工作中,这个技能是硬需求。

关于练习的节奏:不要一次性看完所有视频再写代码。建议是看完一个模块(比如"切片逻辑")就马上跟着写,用讲师提供的示例数据测试。单线程版本跑通了以后,再尝试改成多线程——这样你能真实感受到性能差异。如果你没有大数据集,用讲师提供的小规模数据也够理解原理;等项目真用上了,再考虑Spark的分布式方案。源码debug那一讲看起来是辅助内容,但当你的切片结果错了、需要排查时会很有帮助,建议留作参考。

课程目录

1-1 [课程答疑 QQ 群:574185645] 老汤大数据课程体系介绍 (06:21)
2-1 [地图切片(综合项目实战)] 业务讲解 (11:55)
2-2 [地图切片(综合项目实战)] 数据源讲解 (07:00)
2-3 [地图切片(综合项目实战)] 如何选择Java操作地图的技术 (14:23)
2-4 [地图切片(综合项目实战)] Geomtry的API探讨 (14:37)
2-5 [地图切片(综合项目实战)] Java版本的设置 (05:28)
2-6 [地图切片(综合项目实战)] 矢量片介绍 (14:47)
2-7 [地图切片(综合项目实战)] 源码debug (13:44)
2-8 [地图切片(综合项目实战)] 多语言之间进行数据交换 (16:48)
2-9 [地图切片(综合项目实战)] Protoc Buffers (25:26)
2-10 [地图切片(综合项目实战)] 地图切片逻辑 (27:47)
2-11 [地图切片(综合项目实战)] 保存地图切片数据 (11:59)
2-12 [地图切片(综合项目实战)] 单线程版本程序数据流 (13:35)
2-13 [地图切片(综合项目实战)] 单线程版本程序性能 (06:31)
2-14 [地图切片(综合项目实战)] 多线程版本程序 (09:41)
2-15 [地图切片(综合项目实战)] Spark如何实现地图切片 (08:06)
2-16 [地图切片(综合项目实战)] Spark实现地图切片数据流 (09:47)
2-17 [地图切片(综合项目实战)] 解析原始数据 (18:47)
2-18 [地图切片(综合项目实战)] 生成polygonRDD (09:34)
2-19 [地图切片(综合项目实战)] 单个level的Spark程序实现一 (18:32)
2-20 [地图切片(综合项目实战)] 单个level的Spark程序实现二 (05:09)
2-21 [地图切片(综合项目实战)] 数据丢失怎么debug (21:02)
2-22 [地图切片(综合项目实战)] Spark本地Web UI (08:57)
2-23 [地图切片(综合项目实战)] 绘制DAG图 (15:24)
2-24 [地图切片(综合项目实战)] Spark程序性能优化一 (10:26)
2-25 [地图切片(综合项目实战)] Spark程序性能优化二 (13:45)
2-26 [地图切片(综合项目实战)] 所有level切片的实现 (05:31)
2-27 [地图切片(综合项目实战)] 所有level并行切片 (14:21)
2-28 [地图切片(综合项目实战)] jconsole的使用 (09:44)
2-29 [地图切片(综合项目实战)] jvisualvm的使用 (16:57)
2-30 [地图切片(综合项目实战)] rowkey的初步设计 (15:17)
2-31 [地图切片(综合项目实战)] 代码实现写HBase (11:02)
2-32 [地图切片(综合项目实战)] 错误排查一 (17:22)
2-33 [地图切片(综合项目实战)] 错误排查二 (13:34)
2-34 [地图切片(综合项目实战)] 参数化程序 (07:58)
2-35 [地图切片(综合项目实战)] 集群跑MapTile程序 (16:32)
2-36 [地图切片(综合项目实战)] 降级protobuf-java的版本 (16:29)
2-37 [地图切片(综合项目实战)] 模块拆分 (23:10)
2-38 [地图切片(综合项目实战)] 模块之间依赖Jar包的规范管理 (13:11)
2-39 [地图切片(综合项目实战)] README编写 (02:50)
2-40 [地图切片(综合项目实战)] RowKey的重新设计 (18:09)
2-41 [地图切片(综合项目实战)] 解决热点写的问题 (06:46)
2-42 [地图切片(综合项目实战)] RDD的缓存 (01:43)
2-43 [地图切片(综合项目实战)] 寻找性能瓶颈点 (13:02)
2-44 [地图切片(综合项目实战)] 优化代码 (08:47)
2-45 [地图切片(综合项目实战)] 项目架构 (05:47)
2-46 [地图切片(综合项目实战)] SpringBoot框架搭建 (07:16)
2-47 [地图切片(综合项目实战)] 接口设计 (15:03)
2-48 [地图切片(综合项目实战)] 接口调试 (11:33)
2-49 [地图切片(综合项目实战)] Service接口定义 (07:34)
2-50 [地图切片(综合项目实战)] DAO接口的定义 (10:01)
2-51 [地图切片(综合项目实战)] Service接口的实现 (17:41)
2-52 [地图切片(综合项目实战)] HBaseConnection的初始化 (07:27)
2-53 [地图切片(综合项目实战)] 异常统一处理 (06:26)
2-54 [地图切片(综合项目实战)] DAO接口的实现 (16:08)
2-55 [地图切片(综合项目实战)] 联调 (04:52)