这门课解决什么问题
地图切片是地理信息系统的核心技术。当你在手机上缩放查看地图时,后台其实是在加载不同细度的预切割图块——这就是地图切片。这门课从零开始,教你如何用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)





