当前位置: 首页 > 知识库问答 >
问题:

生成地图块(动态?)来自SQL/CSV数据

聂煜
2023-03-14

以下是我所拥有的:

>

  • sql表/csv文件,具有“tile xyz”坐标(web mercator tile坐标)和“data/color”

    x Y Z颜色13 13 5黄13 14 5绿13 14 5红...

    我想要的是:

    • PNG瓷砖
    • 基础数据不应访问
    • 借助传单/Google maps API将png瓷砖显示为网页地图

    问题/疑问:

    • 数据太多,无法在此之前生成全球所有瓷砖(需要几天时间)
    • 因此,我考虑了一个动态缓存/平铺创建算法(也许以前创建ZoomLevel0-9,更高的缩放级别是动态创建的)
    • 似乎有许多工具(TileMill,TileStache,ArcGIS Server等),但它们似乎都有很高的学习曲线或用于更复杂的任务。
    • 有没有一种方法可以运行一个完全符合我需要的精益服务器?也许用一个php脚本查询数据库,绘制png并按需将其提供给地图?这到底是怎么回事?什么是聪明的解决办法

    太感谢了。

  • 共有1个答案

    蒲曦
    2023-03-14

    后端

    bounds_for_tile_indices(lat_index float8, lon_index float8, zoom_level int)
    

    这将获取一个平铺的经纬度坐标和缩放级别,并返回一个包含该平铺的边框的地理对象。我主要使用它来限制对地理数据的查询到一个特定的瓷砖,例如;

    SELECT * FROM checkins WHERE ST_Intersects(lonlat, bounds_for_tile_indices(6, 2, 4);
    

    现在,对于您的用例,您可能没有将每个可能的平铺都存储到给定的表中,但您仍然可以使用所述函数来确定给定平铺库的边界框:

    SELECT Box2D(bounds_for_tile_indices(13, 14, 5)::geometry);
    

    返回

    BOX(-22.5 21.9430434618232,-11.25 31.9521604783552)
    

    您可能只需要查询表中给定的X/Y/X组合,获取所需的颜色,然后使用ImageFill生成给定颜色的256x256px图像。引用docs示例:

    $im = imagecreatetruecolor(100, 100);
    
    // sets background to red
    $red = imagecolorallocate($im, 255, 0, 0);
    imagefill($im, 0, 0, $red);
    

    或者,保留一个256x256px PNG文件的有限集合,然后使用从查询中获得的颜色构建到正确图像的路径,然后使用imagecreatefrompng创建最终结果,将其发送到前面,并将正确的图像标题视为PNG。

    正如你所看到的,绘制平色瓷砖相当容易,但我看了第一部分,只是因为我相信这些瓷砖不像你的问题中那样平色。

    前端

    在前面,您只需要声明一个自定义映射类型(特别是对于您的用例来说,google.maps.ImageMapType)

    var myTilesMap = new google.maps.ImageMapType({
            getTileUrl: function (coord, zoom) {
                return "/my_backend/" + coord.x + "/" + coord.y + "/" + zoom;
            },
            tileSize: new google.maps.Size(256, 256),
            name: "MyTiles"
        });
    
    map.overlayMapTypes.insertAt(0, myTilesMap);
    
     类似资料:
    • 问题内容: 我有一个POJO和一个(当前尚未构建)的类,它将返回它的列表。我想自动生成将POJO作为地图进行访问所需的代码。这是一个好主意吗,是否可以自动执行,并且我需要为要处理的每个POJO手动执行此操作吗? 谢谢,安迪 问题答案: 您可以为此使用Commons BeanUtils 。 更新 :由于由于Android中某些明显的库依赖问题而导致该选项不可行,因此这是一个基本的启动示例,您几乎不需

    • GIF(Graphics Interchange Format,图形交换格式)是一种“位图”图像格式,它以 作为图像的扩展名。GIF 图片非常适合在互联网中使用,这是因为它采用了图像预压缩技术,该技术的应用,在一定程度上减少了图像传播、加载所消耗的时间。 与其他格式的图片相比,GIF 还有一项非常重要的应用,那就是生成动态图。我们知道,Pillow 能够处理多种图像格式,包括 GIF 格式,它可以

    • 我们要求用户可以隐藏/取消隐藏Excel列并在其中移动。用户单击generate CSV按钮后,我们希望列按特定顺序排列。例如,Col1、Col2、Col3是Excel第一行A、B、C列中的列标题。用户将Col2列移到了末尾,并隐藏了Col2:A、B、C列现在有标题:Col1、Col3、Col2(隐藏) 我们的CSV文件应该生成为:Col1,Col2,Col3。使用下面的代码,我们无法看到Col2

    • 我想创建基于自动完成输入的动态谷歌地图。我把代码写成:- 地图没出现。请解决它..我通过参考https://youtu.be/2n_r0ndekgc上的视频编写了代码

    • 我想创建一个从Api读取数据的图表。要做到这一点,我有这把小提琴http://jsfiddle.net/68oe1oLf/69/ 注意:https://jsfiddle.net/68oe1oLf/69/将导致混合内容错误,并且无法从api加载数据 这是javascript代码 我从这个文档示例中借用了这个想法http://jsfiddle.net/gh/get/library/pure/highc