我有一个不寻常的挑战,我正在努力应对。我希望有人遇到过这个问题,并可以指出我的解决方案。
概述:
我正在寻找一种方法来使用具有动态过滤结果的 mapnik + shapefile,而无需 PostgreSQL 或手动更改 dbf 文件。
细节:
我需要在地图上绘制由邮政编码组成的区域。我当前的解决方案从 MySQL 数据库中提取多边形,并在运行时将它们绘制在谷歌地图上。这显然非常缓慢。我更愿意将其移至与 mapnik 兼容的解决方案,这样我就可以即时渲染图块并让地图更快地响应。
现在,在你说只使用 Postgres 而不是 shapefile 之前,让我说这个服务器上没有也不能有 Postgres。这很糟糕,但这是一个硬限制。动态数据源是mapnik不支持的MySQL。
当然,我可以离线手动渲染这些区域(我碰巧使用了 TileMill)。为此,我必须在 OpenOffice 中操作 shapefile 的 dbf 文件,方法是添加一个简单的列来标记 ZIP 是否在一个区域内以及它属于谁。然后在我的 CartoCSS 中,只需查找 [INCLUDE="Y"] { ... } 即可绘制或隐藏多边形,并根据领土所有者的 ID 进行简单的颜色分配。没有问题,除了这是非常耗时和劳动密集型的事实。
真正的问题是客户有近百个不时变化的区域。更糟糕的是,当它们发生变化时,连锁反应会导致相邻地区发生变化的连锁反应。更糟糕的是,他们不希望领地所有者看到彼此的领地,这意味着每个领地都必须单独过滤和绘制。
因此,我正在寻找一种自动化的混合解决方案来处理 shapefile 的过滤,这样我就不必在每次地区发生变化时都手动重做。
我的头发在这个上变白了。只要解决方案不依赖于 PostgreSQL 或手动操作 shapefile 的 dbf 数据库,我就可以选择。
非常感谢任何帮助和建议。
谢谢,史蒂夫
TLDR:我需要使用具有动态过滤结果的 mapnik + shapefiles,而不需要 PostgreSQL 或手动更改 dbf 文件