我正在嘗試使用D3 JavaScript API製作波多黎各的交互式地圖。 但是,波多黎各政府使用的座標系是舊朗伯座標系 。 D3能夠處理這樣的座標嗎?是否有處理它們的具體投影 ? (我已經瀏覽了預測維基,並且找不到任何有用的 。)如果不是,我能做些什麼來將座標轉換爲標準的 經度/緯度?在D3中使用或轉換蘭伯特座標
回答
最有可能的投影是1983年的State Plane Coordinate System的一部分,定義於this NOAA PDF的第72頁。您也可以通過在spatialreference.org上搜索「puerto rico」(例如,EPSG:2866)來找到它。
可以使用ogr2ogr通過指定EPSG:4326(WGS84)標投影重新投影的shape文件的經度和緯度。例如,從您的投影shape文件球面座標生成GeoJSON的,你可以說:
ogr2ogr \
-f GeoJSON \
-t_srs EPSG:4326 \
output.json \
input.shp
一旦你擁有了它的緯度和經度的幾何形狀,是指任何的D3地理例子來看看如何顯示shapefile在你選擇的投影中。
或者,您可以使用投影座標按原樣顯示。有關更多詳細信息,請參閱projected TopoJSON example,但缺點是您可以使用topojson
command-line tool在投影座標中創建TopoJSON文件。那麼你根本不需要重責!例如,如果你想在一個960x500的空間來顯示它:
topojson \
--width 960 \
--height 500 \
--margin 20 \
-o output.json \
-- input.shp
(你甚至可以添加一個-s .25
參數來簡化幾何形狀的屏幕分辨率,這對於節省空間和提高渲染速度非常有用。)
最後,如果你這樣做最終會重新投影的經度和緯度,但仍希望在其官方狀態平面上的投影顯示波多黎各,您可以定義使用d3.geo.conicConformal
即投影,蘭勃特圓錐形投影:
var projection = d3.geo.conicConformal()
.scale(5000) // adjust to your liking
.rotate([66 + 26/60, 0])
.center([0, 17 + 50/60])
.parallels([18 + 2/60, 18 + 26/60])
.translate([width/2, height/2]);
另請參閱project to bounding box example,瞭解如何計算比例尺並自動翻譯感興趣的特徵。
非常感謝您的回答。我遵循備選方案,因爲它更高效,並且通過了預計的TopoJSON示例。一切都很美妙。非常感謝。 – shredmasteryjm
- 1. d3森伯斯特不完全轉換
- 2. 如何計算2點(EU蘭伯特投影座標)
- 3. 轉換座標使用PHP
- 4. 在VB2008中轉換座標
- 5. 座標轉換在MongoDB中
- 6. 在Picturebox中轉換座標
- 7. 在Python中轉換座標
- 8. 在matplotlib中轉換座標
- 9. 如何使用JMapProjLib,Proj4j或Proj4js在不同座標系之間轉換座標?
- 10. 座標轉換
- 11. 座標轉換
- 12. 將蘭伯特共形圓錐投影轉換爲wgs84中的r
- 13. 將GPS轉換爲RD(荷蘭語)座標
- 14. 在d3上使用UTM座標的LineString
- 15. D3轉換標記
- 16. 從阿爾伯斯轉換爲GPS座標
- 17. 轉換座標爲可用
- 18. iPhone中的座標轉換
- 19. OpenCV中的座標轉換
- 20. 座標轉換困境,用戶座標到設備座標?
- 21. OpenGL座標轉換
- 22. OpenCV座標轉換
- 23. cocos2d轉換座標
- 24. D3如何使用transform/translate和offset座標使動態順序轉換工作?
- 25. 使用投影在Three.js中將世界座標轉換爲屏幕座標
- 26. Python - 在matplotlib中使用極座標散點圖進行座標轉換
- 27. 轉換地圖座標到座標系
- 28. 將座標轉換爲像素座標
- 29. 使用setInterval在d3中重複轉換
- 30. 在D3轉換中使用CSS值
最好的辦法是使用桌面GIS,例如[QGIS](http://www.qgis.org/)將座標轉換爲D3可以處理的東西。您可以進行自定義投影,但這可能會涉及更多,特別是如果您只需要執行一次。 –