添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
Ogr.RegisterAll(); Driver jsonDriver = Ogr.GetDriverByName("ESRIJSON"); Driver mvtDriver = Ogr.GetDriverByName("MVT"); if (jsonDriver == null || mvtDriver == null) return; DataSource originDataSource = jsonDriver.Open(@"in.json", 0); if (originDataSource == null || originDataSource.GetLayerCount() == 0) return; Layer originLayer = originDataSource.GetLayerByIndex(0); DataSource targetDatasource = mvtDriver.CreateDataSource(@"outDir", new string[] { "COMPRESS=NO" }); if (targetDatasource == null) return; targetDatasource.CopyLayer(originLayer, "out", new string[] { "MINZOOM=0", "MAXZOOM=11" }); targetDatasource.Dispose(); originDataSource.Dispose(); 引言二维、三维地图的底图一般都是用图片 切片 (瓦片),将大的影像数据,或是 矢量 配色好的图层集合,通过工具,切成地图 切片 ,以文件的形式存放,或者是存放到mbtiles数据库中;数据发布工具Arcgis Server或Geoserver也可将影像数据,实时的按照客户端地图范围,切成地图 切片 ,返回到客户端进行显示。 切片 数据可以直接按照目录发布,也可发布成tms、wmts服务,开源的二维地图引擎leafle... 切片 技术的简单介绍,以及传统栅格图片 切片 的不足 现在最流行的地图底图技术是栅格 切片 底图,它们本质上是将空间数据分别渲染为不同缩放级别的地图图片,然后将各个级别的图片按照一定规则切分,按照一定的 “规则组织”,存储到硬盘或数据库中,构成一幅完整的地图。 图1 切片 概念图相对于其他技术, 切片 地图有其优越性,例如有效减少了传输数据体积,多级缩放等。然而,栅格地图也有一些短处,缺乏实时性,数据完 目前有一张tif格式的栅格影像,需要在web地图上进行展示,使用动态 切片 WMS的方式,渲染速度比较慢,而且大的时候会出现模糊的问题。并且后面需要做多期影像的切换,渲染与加载效率也值得关注。 计划是使用栅格转 矢量 的方式,将栅格数据转为 矢量 shp文件,然后进行 矢量 切片 ,使用Mapbox进行前端动态渲染。在网上查询了很多资料,有人说使用d3-contour在node.js中生成或者使用rasterio在python中进行转换,整体过程都比较麻烦,很不易 实现 。最终选定了使用 GDAL 进行栅格转 矢量 的方法,代 用Java 实现 类似QGIS中【按掩膜图层裁剪栅格】的功能。 其实QGIS本身调用的就是 gdal warp.exe。 官方文档:https:// gdal .org/programs/ gdal warp.html# gdal warp gdal warp [--help-general] [--formats] [-s_srs srs_def] [-t_srs srs_def] [-ct string] [-to "NAME=VALUE"]* [-novshiftgrid] [-order n | - gdal .Warp工具可以用于坐标系转换、投影变换、图像合并与镶嵌、地理范围裁剪、更改分辨率、 矢量 裁剪等方面,关键的参数在于options,可参考文档 gdal .Warp的说明,通过文档中osgeo. gdal .Warp、osgeo. gdal .WarpOptions这两个模块的说明,可以了解到 gdal .Warp的具体应用方式,本文主要是针对 矢量 裁剪的功能进行说明。 options的主要参数如下: WarpOptions(options=None, format=None, outputBounds=None, 打开 矢量 图层,并显示基本信息。 图层数,驱动名,图层网格范围,属性表结构信息, 矢量 元素,及 矢量 元素的属性 public static void info(String srcFile) { // 读取原图 DataSource srcDataSource = ogr.Open(srcFile, 0); if (srcDataSource == null) { System.err.println(" GDAL Open failed - " + gd 的意思是如果在中低层级之下瓦片过大的话,要尽可能的把在一起的要素合并起来,这样做是为了在后续高层级的 切片 中够独立的区分出来每个要素。注意这个参数是必须的,如果你不写这个,输出的结果文件都是被mapbox提前预压缩的,这样的文件前端是不能够被渲染的,因此这里必须写这个。的意思是尽可能的切,就是指如果高缩放级别的瓦片体积还是比较大的话,就继续往下切,直到瓦片的体积不那么大为止。的意思是使用工具帮助我们判断 切片 的最大最小缩放层级,如果不写这个,就需要我们手动的来控制 切片 的最大和最小缩放层级。 常见的 矢量数据 为shapefile,可以通过 GDAL 读取shp范围进行四叉树划分,构建某一层级瓦块。 以下为 C# 调用 GDAL 进行 矢量 四叉树 切片 算法: struct TileStructure 矢量 切片 1. 矢量 切片 是一种利用协议缓冲技术的紧凑的二进制格式用来传递信息。当渲染地图时 矢量 切片 使用一系列存储的内部数据进行制图。被组织到 矢量 切片 的图层(比如道路、水、区域),每一层都有包含集合图形和可变属性的独立要素(例如姓名、类型等等)。通俗的说,就是将 矢量数据 以建立金子塔的方式,然后在前段根据显示需要按需请求不同的 矢量 瓦片数据进行Web绘图。 2.常见格式 GeoJson、TopoJs... GIS 矢量 切片 (Vector Tile)-地图定制化的时代已经悄悄来临 https://blog.csdn.net/qingyafan/article/details/53367204 矢量 切片 与栅格 切片 对比分析 https://www.cnblogs.com/escage/p/6387529.html GDAL 切割影像数据 正在学习 gdal ,发现网上的资料,java的资料很少,大部分是python与C++进行的数据处理。 牛刀小试,我的第一个数据处理,使用Band与Dataset两种接口方式切割影像数据: package GDAL Example.TIFRead; import org. gdal . gdal .Band; import org. gdal . gdal .Dataset; import o... 1、使用ogr2ogr工具   官网地址http://www. gdal .org/ogr2ogr.html,下载需要的版本,考虑到笔者以后会经常使用,我把它解压到了文件夹“D:\App\ Gdal \release-1500- gdal -2-2-1-mapserver-7-0-6”下。    为了使用方便,在Path中设置的路径。    打开命令行窗口,测试ogr2ogr命令失败,显示   在管理员身份运...