gpt4 book ai didi

javascript - 在 D3 中使用或转换 Lambert 坐标

转载 作者:行者123 更新时间:2023-11-29 19:51:59 42 4
gpt4 key购买 nike

我正在尝试使用 D3 JavaScript API 制作波多黎各的交互式 map 。然而,波多黎各政府使用的坐标系是旧的兰伯特坐标系系统。 D3 是否能够处理此类坐标?有没有具体的投影处理它们? (我浏览了投影维基,但找不到任何东西有用。)如果没有,我能做些什么来将坐标转换为标准坐标经度/纬度?

最佳答案

您的投影很可能是 State Plane Coordinate System 的一部分1983 年,在 this NOAA PDF 的第 72 页上定义.您也可以通过搜索 “puerto rico” 找到它。在 spatialreference.org (例如,EPSG:2866)。

您可以使用ogr2ogr通过指定 EPSG:4326 将您的 shapefile 重新投影到纬度和经度 ( WGS84 ) 目标投影。例如,要从投影的 shapefile 生成球坐标中的 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查看如何计算比例并自动转换感兴趣的特征。

关于javascript - 在 D3 中使用或转换 Lambert 坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17453123/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com