Javascript 如何找出我的预投影GeoJSON使用的投影?

Javascript 如何找出我的预投影GeoJSON使用的投影?,javascript,d3.js,map-projections,Javascript,D3.js,Map Projections,我的问题与非常类似,但我使用的地图是苏格兰地方当局地区的地图,因此我不太明白如何应用这两种解决方案 我在苏格兰的choropleth地图上创建了一个气泡图,在指定的位置有圆圈,我提供了这些圆圈作为纬度/经度坐标 然而,圆圈的位置是完全不可能的——阿伯丁的圆圈在海里 基于,我认为GeoJSON可能是预投影的,所以我使用了两种不同的投影,一种用于地图,另一种用于圆。理想情况下,我想我会找到一个不同的GeoJSON,它不会导致这个问题,但我认为我使用的是唯一可用的GeoJSON 所以我的问题是,有没有

我的问题与非常类似,但我使用的地图是苏格兰地方当局地区的地图,因此我不太明白如何应用这两种解决方案

我在苏格兰的choropleth地图上创建了一个气泡图,在指定的位置有圆圈,我提供了这些圆圈作为纬度/经度坐标

然而,圆圈的位置是完全不可能的——阿伯丁的圆圈在海里

基于,我认为GeoJSON可能是预投影的,所以我使用了两种不同的投影,一种用于地图,另一种用于圆。理想情况下,我想我会找到一个不同的GeoJSON,它不会导致这个问题,但我认为我使用的是唯一可用的GeoJSON

所以我的问题是,有没有一个合理的方法来计算这张地图的投影,这样我就可以对圆使用相同的投影

var年=2015年;
var measurement=“吨位”;
绘图图(年份、测量)
功能图(年份、测量){
//将年份和度量值转换为串联字符串
var yearString=year.toString();
var-measurementString=measurement.toString();
var option=measurementString.concat(yearString);
//svg
var svg=d3。选择(“svg”),
宽度=+svg.attr(“宽度”),
高度=+svg.attr(“高度”);
//地图与投影
var path=d3.geoPath();
var projection=d3.geoMercator()
.中心([-4.182616.8169])
.比例尺(1400)
.translate([宽度/2,高度/2])
//.刻度(20*宽度/数学PI)
//.翻译([宽度/2+150,高度/2+2670]);
//数据和色标
变量数据={};
如果(测量值=“吨位”){
var colorScale=d3.scaleThreshold()
.domain([0,50,100,1000,2000,3000,20000])
.范围(d3.模式值[7]);
}否则{
var colorScale=d3.scaleThreshold()
.domain([0,1000,3000,5000,7000,9000,10000])
.范围(d3.方案[7]);
}
//加载外部数据并启动
d3.队列()
.defer(d3.json,“https://raw.githubusercontent.com/squirrel-star/scotland/main/geojsonscotlandladjson.geojson")
.延迟(d3.csv,“https://raw.githubusercontent.com/squirrel-star/scotland/main/fishperLA.csv“,功能(d){
数据[d.code]=+d[选项];
})
.等待(准备好);
svg.selectAll(“*”).remove();
功能就绪(错误,拓扑){
//将气泡添加到
变量标记=[{
长:2.0943,
拉丁美洲:57.1497
},//香港仔
{
长:2.7005,
拉丁美洲:56.2230
},//Anstruther
{
长:4.6292,
纬度:55.4586
},//Ayr
];
//画地图
svg.append(“g”)
.selectAll(“路径”)
.数据(地形特征)
.输入()
.append(“路径”)
//画每个国家
.attr(“d”,d3.geoPath()
.投影(投影)
)
//设置每个国家的颜色
.attr(“填充”,功能(d){
d、 总计=数据[d.properties.LAD13NM]| | 0;
返回色标(d.总计);
})
svg
.selectAll(“myCircles”)
.数据(标记)
.输入()
.附加(“圆圈”)
.attr(“cx”,功能(d){
返回投影([d.long,d.lat])[0]
})
.attr(“cy”,函数(d){
返回投影([d.long,d.lat])[1]
})
.attr(“r”,8)
.样式(“填充”、“69b3a2”)
.attr(“笔划”,“#69b3a2”)
.attr(“笔划宽度”,3)
.attr(“填充不透明度”,.4);
}
}

我有一些坏消息要告诉你,点错的真正原因是你在纬度前面缺少了一个减号。艾尔的纬度是,而不是4.6。只需在积分前面添加一个
-
,我就可以解决这个问题

var年=2015年;
var measurement=“吨位”;
绘图图(年份、测量)
功能图(年份、测量){
//将年份和度量值转换为串联字符串
var yearString=year.toString();
var-measurementString=measurement.toString();
var option=measurementString.concat(yearString);
//svg
var svg=d3。选择(“svg”),
宽度=+svg.attr(“宽度”),
高度=+svg.attr(“高度”);
//地图与投影
var path=d3.geoPath();
var projection=d3.geoMercator()
.中心([-4.182616.8169])
.比例尺(1400)
.translate([宽度/2,高度/2])
//.刻度(20*宽度/数学PI)
//.翻译([宽度/2+150,高度/2+2670]);
//数据和色标
变量数据={};
如果(测量值=“吨位”){
var colorScale=d3.scaleThreshold()
.domain([0,50,100,1000,2000,3000,20000])
.范围(d3.模式值[7]);
}否则{
var colorScale=d3.scaleThreshold()
.domain([0,1000,3000,5000,7000,9000,10000])
.范围(d3.方案[7]);
}
//加载外部数据并启动
d3.队列()
.defer(d3.json,“https://raw.githubusercontent.com/squirrel-star/scotland/main/geojsonscotlandladjson.geojson")
.延迟(d3.csv,“https://raw.githubusercontent.com/squirrel-star/scotland/main/fishperLA.csv“,功能(d){
数据[d.code]=+d[选项];
})
.等待(准备好);
svg.selectAll(“*”).remove();
功能就绪(错误,拓扑){
//将气泡添加到
变量标记=[{
长:-2.0943,
拉丁美洲:57.1497
},//香港仔
{
长:-2.7005,
拉丁美洲:56.2230
},//Anstruther
{
长:-4.6292,
纬度:55.4586
},//Ayr
];
//画地图
svg.append(“g”)
.selectAll(“路径”)
.数据(地形特征)
.输入()
.append(“路径”)
//画每个国家
.attr(“d”,d3.geoPath()
.投影(投影)
)
//设置每个国家的颜色
.attr(“填充”,功能(d){
d、 总计=数据[d.properties.LAD13NM]| | 0;
返回色标(d.总计);
})
svg
.selectAll(“myCircles”)
.数据(标记)
.输入()
.附加(“圆圈”)
.attr(“cx”,功能(d){
R