對於d3.js的v3,我在使用geoJSON數據繪製地圖時遇到問題。代碼和結果地圖顯示在:http://bl.ocks.org/73833ec90a8a77b0e29f。使用d3.js的這個例子生成一個正確的地圖。在d3.js中繪製已投影的geoJSON地圖
- 我的數據已經被預測(他們是荷蘭國家網格/ Rijksdriehoekstelsel座標)。爲了彌補這一點,我編寫了自己的投影函數,它將地圖的座標系轉換爲像素(例如縮放和平移)。
- d3.js的v3中的d3.geo.path()重新採樣數據。但是,重採樣中生成的點似乎與我的地圖不在同一座標系中(我假設它們是lon,lat座標)。
我寧願不將地圖的座標轉換爲lon,lat座標,因爲地圖已經按照我想要的方式投影了,並且據我所知,這不是一個微不足道的投影。
如果問題確實是由重採樣引起的,我想禁用重採樣。但是,在文檔中,我無法真正找到如何做到這一點。我可以傳遞一個流對象,而不是將投影函數傳遞給d3.geo.path.projection()。我認爲以下將工作:
var projection = d3.geo.projection(function(x, y) {
return [ scale*(x-xmin), height-scale*(y-ymin) ];
}).precision(0);
但它沒有。也許還與我沒有經緯度座標的事實有關。我如何禁用使用自定義投影功能的重採樣?
或者當別的東西導致問題時,我想聽聽那個。
謝謝。
這真的很棒!我喜歡你的解決方案'd3.geo.projection(function(x,y){return [x,y];})''。它超越了我爲什麼每個人都希望所有最終用戶(觀衆)都能夠即時重新處理數據。在我看到的99%的地圖上,動態重新投影是完全無用的,並且浪費了計算能力。 –
d3.geo.projection用於將球座標轉換爲笛卡爾座標。如果您只想在笛卡爾座標中進行縮放和平移,我建議使用[d3.geo.transform](https://github.com/mbostock/d3/wiki/Geo-Streams#transform)而不是[bl.ocks .ORG/5663666](http://bl.ocks.org/mbostock/5663666)。 – mbostock