|
|
1
6
以下是我在如何从以下来源创建Slippy地图方面的经验: PDFs 或高分辨率图像或 non-slippy maps . 不管怎样,我想写一篇关于这方面的文章,所以让这个答案成为一篇尚未撰写的文章的草图。 举个例子,这里是 PDF map of European inland waterways 用矢量图形,这里是 slippy map 其中。
基本上,最合理的方法是制作一套标准的瓷砖,让传单展示出来。即,为每个缩放级别生成大小为256x256的瓷砖。
幸运的是,创建瓷砖非常容易 ImageMagick . 我就是这样做的。 决定需要多少缩放级别首先,决定需要多少缩放级别。这取决于地图,根据我的经验,你最多需要5-7个缩放级别。以5个缩放级别为例。生产的级别越多,对硬件的要求就越高。下面的方法可能不适合7-8级以上的缩放。 渲染或调整源图像的大小接下来,为每个缩放级别渲染或调整图像大小。您必须生成一个尺寸等于:
注意:这个步骤的结果是巨大的图像。级别5大约为10 MB,级别6大约为20 MB,级别7大约为40 MB。小心尝试在“普通”工具中打开这些图像。 调整普通高分辨率图像的大小
如果您的源是高分辨率图像,只需使用
如果您有几个不同缩放级别的缩放图像(我想这是MRI扫描的情况),请选择最近的缩放源图像。 使用已平铺的图像
在某些情况下,源图像已经被分片剪切。这在“旧”地图客户机中是很典型的,您想让它们滑倒。
This is an example
,称为平铺
要计算裁剪参数,请将垂直和水平相邻的平铺加载到图形编辑器中,尝试匹配它们并检查偏移坐标。 然后,在裁剪瓷砖时,将它们附加到大图像上:
这个裁剪和附加操作的结果是一个高分辨率的地图图像。将其调整到上面描述的每个级别。 调整pdf的大小
渲染PDF时,我更喜欢使用
这给了你如下的感觉:
的魔力
使用密度渲染图像:
在更高的层次上,这可能需要很多时间。 在瓷砖中剪切水平图像此时,每层应该有一个图像。现在我们可以把它们切成瓷砖:
这会生成如下文件:
这是一组256x256大小的静态预渲染瓷砖。 配置传单
现在您只需要配置传单。假设tile文件在
如果要设置正确的初始视图点,请缩放/移动到所需的位置,打开开发工具中的javascript控制台并键入:
然后在初始化映射时使用打印的参数:
添加标记:
即使在平移或缩放时,标记也将保持在同一位置。 以下是其中一个项目的示例: |
|
|
2
3
libvips 有一个操作可以在一个命令中为传单生成一个Slippy Map Tileset。 例如,用这个 PDF map of European inland waterways (谢谢@lexicore!)您可以输入:
它会生成一个名为
它很快,几乎不需要记忆。细节随文件格式的不同而有所不同,但对于许多格式,它可以对输入进行解码,构建所有的金字塔层,并编写输出分片,全部并行,而无需将整个输入图像加载到内存中。我经常在一台普通的笔记本电脑上渲染超过300000 x 300000像素的金字塔。 它可以做一些有用的文件类型以及通常的TIFF、PNG、JPG等,包括SVG、Fits、DICOM和OpenSlide等。它也可以使金字塔变深变焦。 Windows主机的一个好特性是能够将tileset写入zip文件,而不是文件系统。Windows的文件创建速度相当慢——通过一个大金字塔和小瓷砖,您可以将大约75%的CPU时间花在文件创建上。改为写入一个zip文件,您将看到一个3倍的加速:
当然,压缩包上传到服务器更简单。 有一个 chapter in the libvips manual introducing dzsave 并显示所有选项。 |
|
|
code-geek · Jquery根据单选按钮选择隐藏或显示文本字段 9 月前 |
|
|
Alex · 在轻量级中同时解构和不解构变量 9 月前 |
|
|
Ângelo Rigo · ReactJS映射:如何迭代[关闭] 9 月前 |
|
|
bairog · 从按属性筛选的对象数组字典中创建值数组 10 月前 |
|
|
lokiuucx · JS对象属性返回未定义,尽管对象属性应该有值 10 月前 |