2012-11-09 54 views
9

我有一些日本的geojson數據,我設法在mercator投影上正確定位,但我有點失落,關於如何使用albers投影正確定位它,而不是試驗和錯誤。d3js - 如何正確設置albers投影?

有沒有好用的工具?

塊例如:http://bl.ocks.org/4043986

長,經緯度爲日本(wikipedia):

  • 緯度24° - 46°N,
  • 經度122° - 146°E。

GeoJSON的鏈接:https://gist.github.com/raw/4043986/f53b85ab0af1585cd0461b4865ca4acd1fb79e9f/japan.json

回答

6

我找到了答案通過資源庫尋找 - 工具就在那裏!

  1. 克隆d3.js從the github repository
  2. 編輯/d3/examples/albers.html line 53在您GeoJSON的文件指出:
  3. 把原點經度/緯度滑塊所在國家/地區的中心(對我來說,這是134°/ 25°)
  4. 更改paralells是儘可能接近您所在的國家/地區的邊緣。
  5. 調整比例&偏移到一個不錯的大小&的位置。

其他預測也有類似的工具。

編輯:倉庫裏面更改(且不斷變化的),所以我創建了一個要點保存例如:https://gist.github.com/4552802

的例子是GitHub的倉庫不再一部分。

+0

嗨以上鍊接都沒有工作。你能否請他們更新。 – hemanth

+0

我更新了鏈接以指向文件的較早版本。另外,請檢查我已鏈接的要點。 – minikomi

+0

請更新正確的jquery等鏈接,因爲我試過的只顯示了一個呈現albers.html的圈子。我做了第1,2步,你提到在頁面呈現後我需要做的休息。我正在嘗試使用https://bost.ocks.org/mike/map/ places.json步驟創建的印度地區和geojson。 – Miten

18

截至目前,它是D3.js的第3版。 這可能是值得考慮的原始源albers.js在github上,它包含:

d3.geo.albers = function() { 
    return d3.geo.conicEqualArea() 
     .parallels([29.5, 45.5]) 
     .rotate([98, 0]) 
     .center([0, 38]) 
     .scale(1000); 
}; 

現在,d3.js的projection.rotateprojection.center使用組合以放置投影中心到長98°W,經​​緯度38° N(約Hutchinson, Kansas)。

Geo Projections API,d3.geo.conicEqualArea() .parallels([29.5, 45.5])分別設置阿爾伯斯投影的兩個標準平行緯度29.5°N和 45.5°N。但是兩個標準的相似之處是什麼?

要理解設置的相似之處,需要知道阿爾伯斯投影是一種圓錐投影。

圓錐投影將球體地球上的信息投影到一個圓錐體上,該圓錐體與單個平行線上的地球相切,或者是兩個標準平行線上的割線。

enter image description here

選擇最佳標準緯線設置似乎是一個微妙的任務,其目標是最小化投影失真時表面之間的映射。無論如何,選擇要封閉到國家頂部/底部邊緣的兩個值在直觀上是好的,因爲它有助於最小化包圍國家的[圓錐/球體]表面之間的距離。 enter image description here

+1

非常感謝這樣詳細的調查,看看究竟是什麼。我剛纔一直在努力......感覺到目前爲止。 – minikomi