Openstreetmap 浏览SliplyMap时没有地图,只有海岸线

Openstreetmap 浏览SliplyMap时没有地图,只有海岸线,openstreetmap,Openstreetmap,我正在CentOS 6.4上创建OpenStreetMap互动程序服务器。加载“local tiles”层的SliplyMap.html页面时,我得到的只是一张地图,地图上只有两种颜色:白色和蓝色表示陆地和水。也就是说,我看到的图像基本上是海岸线。“mapnik”层工作正常 这是我第一次做与地图相关的软件配置。像mapnik、osm2pgsql、postgis、tile等所有术语对我来说都是新的 据我从谷歌搜索结果中看到的,似乎没有现成的关于在CentOS 6.x上创建此服务器的信息。因此,对我

我正在CentOS 6.4上创建OpenStreetMap互动程序服务器。加载“local tiles”层的SliplyMap.html页面时,我得到的只是一张地图,地图上只有两种颜色:白色和蓝色表示陆地和水。也就是说,我看到的图像基本上是海岸线。“mapnik”层工作正常

这是我第一次做与地图相关的软件配置。像mapnik、osm2pgsql、postgis、tile等所有术语对我来说都是新的

据我从谷歌搜索结果中看到的,似乎没有现成的关于在CentOS 6.x上创建此服务器的信息。因此,对我来说,主要的一套说明是以下文件:

[1]

所有组件都必须从第三方CentOS存储库(如ELGIS、RPMForge、EPEL和PGDG92)安装,或者从源代码处编译

几天前,我确实在Ubuntu 12.04上创建了相同的服务器,这很简单。遵循这些指示:

[2]

注意,文档[2]提到了访问sliplymap.html,但[1]没有提到。在[1]中,提到的唯一测试是访问yourserveraddress/osm_tiles/0/0/0.png,即使在我的CentOS 6.4设置中也可以正常工作。我通过从Ubuntu12.04框复制并进行少量编辑创建了sliplymap.html

另一条可能是关键线索的信息是renderd的以下错误:

proj_init_错误:无法使用“+init=epsg:4326”初始化投影

我确实安装了proj和proj-devel软件包

$ldd/usr/local/bin/renderd | grep proj libproj.so.0=>/usr/lib64/libproj.so.0(0x00007ffa42a0e000)


如何调试此问题?有什么问题吗?是否有任何检查表来验证每个组件(如osm2pgsql、postgres/postgis db、mod_tile或mapnik)的正常功能?

我调试了这个问题,并从Git repo的2.0.x分支了解了mapnik源代码,git://github.com/mapnik/mapnik 调用失败的pj_init_plus_ctx()。请参阅,有关更多信息,请参阅代码截取

/*
 * Demonstrate mapnik 2.0 against proj 4.8.0-2 bug.
 *
 * Mapnik makes use of pj_init_plus_ctx() if the PJ_VERSION macro is >= 480,
 * which fails. Otherwise, it calls pj_init_plus(), which succeeds.
 */

#include <proj_api.h>

int main(void)
{
    projCtx ctx = NULL;
    projPJ proj = NULL;
#if 0
    projPJ p = NULL;
#endif

    ctx = pj_ctx_alloc();
    /* proj is NULL after this call */
    proj = pj_init_plus_ctx(ctx, "+init=epsg:4326");

#if 0
    /* p is not NULL after this call */
    p = pj_init_plus("+init=epsg:4326");
#endif
    return 0;
}
/*
*针对proj 4.8.0-2 bug演示mapnik 2.0。
*
*如果pj_版本宏>=480,Mapnik将使用pj_init_plus_ctx(),
*它失败了。否则,它将调用pj_init_plus(),这将成功。
*/
#包括
内部主(空)
{
projCtx ctx=NULL;
projPJ proj=NULL;
#如果0
projPJ p=NULL;
#恩迪夫
ctx=pj_ctx_alloc();
/*proj在此调用后为空*/
proj=pj_init_加上_ctx(ctx,“+init=epsg:4326”);
#如果0
/*p在此调用后不为NULL*/
p=pj_init_plus(“+init=epsg:4326”);
#恩迪夫
返回0;
}

通过将/usr/include/PJ_api.h中的PJ_版本更改为470,我已经能够继续前进。确实遇到了另一个已修复的错误,即在/etc/renderd.conf中将font_dir设置为“/usr/local/lib64/mapnik/fonts”。现在,地点、州边界、道路等的名称都显示出来了。

我建议您在“确定”或“确定”上重新提问。已经能够找到解决方案(请参阅,答案)。