2013-03-22 78 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實現,還可以查詢地圖上的要素(數據庫中元素與關係圖的位置關係)。