使用java生成mapbox-gl可读的vector tile

来源地址:https://www.cnblogs.com/lilei2blog/p/7830945.html
概述
mapbox-gl主要数据源来自mapbox vector tile,本文就是要阐述怎样把postgresql中的地理空间数据转换成vector tile,流程图如下:

配置
该工程采用spring boot+maven,所以第一步少不了pom.xml配置:

4.0.0

<groupId>com.lilei.mvt</groupId>
<artifactId>vector-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging><name>vector-server</name>
<url>http://maven.apache.org</url><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.4.0.RELEASE</version><relativePath /> <!-- lookup parent from repository -->
</parent><repositories><repository><id>ECC</id><url>https://github.com/ElectronicChartCentre/ecc-mvn-repo/raw/master/releases</url></repository>
</repositories><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version>
</properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.webjars</groupId><artifactId>jquery</artifactId><version>2.1.4</version></dependency><!-- 数据库 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.postgresql</groupId><artifactId>postgresql</artifactId><version>42.1.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>com.vividsolutions</groupId><artifactId>jts</artifactId><version>1.13</version></dependency><dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>2.6.1</version></dependency><!-- https://mvnrepository.com/artifact/com.google.protobuf.nano/protobuf-javanano --><dependency><groupId>com.google.protobuf.nano</groupId><artifactId>protobuf-javanano</artifactId><version>3.0.0-alpha-4</version></dependency><dependency><groupId>no.ecc.vectortile</groupId><artifactId>java-vector-tile</artifactId><version>1.2.1</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins>
</build>

添加墨卡托投影转换工具类:

核心内容
解析地理数据,转换成vector tile:

@Override
public byte[] getContents(String type, int x, int y, int z) {

    String sql = null;if (type.equals("link")){sql = "select link_pid,name,st_astext(geom) as geom from beijing_link "+ "where " + "st_intersects(geom,st_geomfromtext(?,4326)) "+ "";}else if (type.equals("poi")){sql = "select pid,st_astext(geom) as geom from poi5 "+ "where " + "st_intersects(geom,st_geomfromtext(?,4326)) "+ "";}try {String tile = TileUtils.parseXyz2Bound(x, y, z);List<Map<String, Object>> results = jdbc.queryForList(sql, tile);VectorTileEncoder vte = new VectorTileEncoder(4096, 16, false);for (Map<String, Object> m : results) {String wkt = (String) m.get("geom");Geometry geom = new WKTReader().read(wkt);TileUtils.convert2Piexl(x, y, z, geom);m.remove("geom");vte.addFeature(type, m, geom);}return vte.encode();} catch (ParseException e) {e.printStackTrace();}return null;
}

github关联程序
程序已上传github,地址为:https://github.com/lileialg/mvt

mapbox-gl解析后效果

使用java生成mapbox-gl可读的vector tile相关推荐

  1. java获取文件新增内容_关于java生成文件,立即又读这个文件但又找不到文件新增内容的问题...

    展开全部 写文件之后,应该有一个刷新流缓冲的flush()方法.该方法可以保证你可以读到你e69da5e6ba903231313335323631343130323136353331333332643 ...

  2. JAVA生成grib文件_wgrib读grib数据

    该文章来自博客:http://windforestwing.blog.163.c ... 412007103084743804/如有错误 ,大家及时指出啊!ps:meteoinfo可以直接处理grib ...

  3. 使用Java对轨迹进行抽稀,并生成mvt(Map Vector Tile)瓦片

    Java对轨迹进行抽稀,并生成mvt线瓦片 1. 原理 2. pom依赖 3. Java对轨迹道格拉斯普克抽稀源码 4. Java生成线瓦片源码 参考 1. 原理 Java对轨迹抽稀:道格拉斯普克算法 ...

  4. java 生成二维码 QRCode、zxing 两种方式

    版权声明:本文为 testcs_dn(微wx笑) 原创文章,非商用自由转载-保持署名-注明出处,谢谢. https://blog.csdn.net/testcs_dn/article/details/ ...

  5. 超详细的java生成excel文件并下载

    在网上随手一搜,可以搜到很多java生成excel文件相关的博客,但每个都有不同,核心点说清楚了,但具体运用的时候,相信大家或多或少都没法一次直接运用,这样每次去找并且运用的时候很费时间,所以这也是我 ...

  6. java生成小图片_JAVA生成缩略小图片类

    JAVA生成缩略小图片类 java.awt.image.BufferedImage是缓冲图片类主要将生成的图片对象缓冲起来:javax.imageio.ImageIO是图片IO控制类,可以将缓冲图片对 ...

  7. java生成pdf_Java实现PDF文件生成并且打印pdf文件 demo

    ## Java实现PDF生成并且打印pdf文件(附demo) #### 目录: 0. 效果预览 1. 准备环境 2. Java如何调用打印机进行打印 3. Java如何生成pdf打印文件 4. 实现p ...

  8. PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】...

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...

  9. GIS开发:推荐Mapbox gl解决方案

    在二维地图的开发中,实现类似于百度.高德地图那样加载简体的模型,使用mapbox gl是一个比较好的解决方案. https://docs.mapbox.com/mapbox-gl-js/api/ 类似 ...

  10. Java 生成二维码。

    Java 生成二维码. 文章目录 Java 生成二维码. 二维码. 发展. 一维码. 二维码. 优缺点. QR Code. 生成方法. 第三方 jar.eg. zxing 和 qrcodejar. J ...

最新文章

  1. 微软洪小文:AI将成为人类未来最好的左脑
  2. (转)数据挖掘——我们能从股市数据得出什么,以及一些算法
  3. 开发环境wamp3.06 + Zend studio 12 调试配置
  4. 《基于张量网络的机器学习入门》学习笔记5
  5. Vue实现仿音乐播放器10-更多按钮实现下拉刷新
  6. 报告分析|2021移动社交行业有哪些新风向?
  7. Boost:GPU上的2D图像中绘制最终的随机“walk”,并使用OpenCV进行显示
  8. Docker入门(运行.net core asp项目)
  9. opencv:用最邻近插值和双线性插值法实现上采样(放大图像)与下采样(缩小图像)
  10. GLSL/C++ 实现滤镜效果
  11. bootstrap .col-md-6 文字居中问题处理
  12. 浪潮集团PHP,浪潮php实习第一天(初识php)
  13. 使用HTTPS方式向git托管网站推送项目时输错用户名密码
  14. [BZOJ4591][SHOI2015]超能粒子炮·改(Lucas定理+数位DP)
  15. Thinkphp5之ajax分页实现_paginate()参数详细
  16. npm 常见用法小结
  17. 宽带波形测试软件,适用于5G时代的波形测试分析系统是怎样的? - 全文
  18. 行人重识别论文阅读10-DDAG 动态双注意聚合学习策略
  19. 外贸工具WhatsApp
  20. 干货:分析学中常用的3种分析方法!

热门文章

  1. webstorm导致CPU占用率高
  2. phpstudy中的站点突然无法打开,明明路径打对也无法打开,解决办法
  3. ubuntu安装原生迅雷,让下载成为简单
  4. 计算机大二学生个人总结报告,计算机学生大二第二学期自我总结计划自我总结计划.doc...
  5. 十进制转二进制,短除法与位运算两种方法
  6. 软考易错知识点(自用)
  7. C中 stdarg.h
  8. 神经网络拓扑图怎么画,神经网络和图神经网络
  9. 认证 (authentication) 和授权 (authorization) 的区别
  10. Scheme语言学习---求解三个数中其中两个较大数的和