2013-03-22 68 views
1

我面对这个问题:我有我的数据库中的一些矢量数据(折线...),它描述了许多世界/国家/地区/城市的边界。生成地理瓷砖矢量数据

我想对放入系统领域的互动地图。

当我呈现在浏览器中的那些数据(数据在以GeoJSON被发送),这是缓慢(我'并不惊讶)。

下原因,是产生一些光栅像素块来表示不同的缩放级别的地区,有一种方法,使一个区域的点击和选择(以显示更多的信息)的区域之间的关系。

我在地理瓷砖新手:

  • 什么是生成矢量数据PNG/JPG瓷砖的最佳工具?
  • 如何使点击的区域,在数据库中的“ID”之间的关系?

我知道我的问题是非常大的,但如果你有一些建议......

谢谢!

+0

什么是您的数据库?例如,mongo支持2d [地理空间索引](http://docs.mongodb.org/manual/core/geospatial-indexes/)。 – tjameson 2013-03-22 18:56:11

+0

另外,使用数据+1作为复数。 -1虽然在一个问两个问题。 – tjameson 2013-03-22 18:56:53

+0

我正在使用Mongodb,但geoindexing实际上并不是我的问题,我的问题是快速提供不同缩放级别的交互式地图。而使用矢量数据并在客户端渲染它太慢了......这就是为什么我在考虑生成静态/栅格切片以使其成为可能。 (同时对两个问题抱歉) – 7vingt 2013-03-22 19:06:27

回答

2

我最近写了一篇关于如何提高光栅像素块的渲染速度一篇博客: http://blog.webfoot.com/2013/03/12/optimizing-map-tile-generation/

至于点击连接到辖区ID,我不认为有一个捷径:你需要将点击翻译成lat/lng(或者在博客文章中描述的Vast Coordinate System),然后做一个多边形点检查。如果你正在使用PostGIS,那么你可以做一个ST_Intersects。

注意:如果您使用的是MySQL,则与边界框完成交点,而不是多边形。它仍然是可能的:你只需要从某处抢到点,在多边形的功能来检查,如果包围盒检查让你不止一个,其多边形。

这里是点的例子,你可以点击: http://maps.webfoot.com/demos/CanadianStimulus/CanadianStimulus.html

注意,因为人们不精确,点击(尤其是小点),我实际上使周围的点“活”几个像素以及单像素点。你也可以点击点,然后它会显示多边形(在这个例子中是联邦选举区)。

+0

Thanx凯尔特林,不幸的是我已经从MySQL与地理模块移到mongo因为我didn需要进行空间计算(正确访问地理数据,mondo做得很好),但我会使用经典的交集方法。 我会阅读您关注的文章Thx! – 7vingt 2013-03-22 21:13:02

+0

什么是您的软件堆栈来生成您的拼贴mysql点/多段线等?我不知道哪个库用于从空间数据(opengis格式/ geojson或其他)生成PNG文件 – 7vingt 2013-03-22 21:18:16

+0

我滚动我自己的。我使用gd库(http:// www。 boutell.com/gd/)与PHP,但真的任何图形库和语言会做。 – 2013-03-23 03:09:57

0

Geoserver有一个MongoDB Plugin datasource,一个全功能的WebGIS服务器。您可以使用它来建立您的数据的地图渲染服务(实际上是WMS)。然后使用Geowebcache生成地图的图块。

通过这种方式,您可以使用全功能的WebGIS堆栈,从而使您可以管理其他数据源,并在数据部分更新时轻松实现磁贴子集重新创建。

通过Geoservers WFS实现,还可以查询地图上的要素(数据库中元素与关系图的位置关系)。