qgisで作成したカスタムgeojsonファイルからマップを作成しました。 lat-long-valueではなくgeodataが投影されていますが、自動的にsvgコンテナに収まらなくなりました。そこで私は変換属性を使って適切な場所に移動しました。ここに私のコードは、これまでのところです:d3.js:投影されたジオデータと投影されていないジオデータを混合する
var height = 800,
width = 800;
var svg = d3.select("#map-container")
.append("svg")
.attr("width",width)
.attr("height",height);
d3.queue()
.defer(d3.json,"./data/Shapefiles_simplyfied_20.json")
.await(drawMap);
function drawMap(error,bw) {
if (error) throw error;
var features = bw.features;
var map = svg.append("g")
.attr("class", "kommunen")
.attr("id","karte-rdb");
map
.selectAll("path")
.data(features)
.enter().append("path")
.attr("d", d3.geoPath(null))
.attr("transform","scale(1,-1)")
//make the map fit to svg container
var bbox = d3.select("#karte-rdb")._groups[0][0].getBBox();
var scaleFactor = d3.min([width/bbox.width, height/bbox.height]);
var translation = [width - bbox.x,height - bbox.y];
map
.attr("transform","scale("+scaleFactor+","+scaleFactor+") translate("+ translation[0] +","+ translation[1] +")")
}
(切り捨て)にGeoJSONは次のようになります。
{
"type": "FeatureCollection",
"name": "Shapefiles",
"crs": {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:OGC:1.3:CRS84"
}
},
"features": [{
"type": "Feature",
"properties": {
"GEN": "Area1",
"BEZ": "RDB-RP"
},
"geometry": {
"type": "MultiPolygon",
"coordinates": [[[[393361.666451968252659,
5504072.610383642837405],
[393366.833893342292868,
5503968.659385782666504],
...
今、私は緯度とcsvファイルにあるいくつかのポイントを表示したいと思います - ロンペア。
Name lat lon
A 7.601581 49.203633
B 8.008745 50.374521
C 8.11676 49.746425
D 6.657145 50.221658
E 6.942947 49.654687
F 9.62743 51.196755
d3.geoProject-functionを使用しないで投影されたジオデータと一緒に表示するにはどうすればよいですか?
緯度/経度のポイントがあり、正しい投影を使用して地図を表示している場合は、すべて正常であるはずです。問題は、データがどの投影法を使用しているのか、間違った投影法を使用しているのかわからないときです。スケール/平行移動するとうまくいく場合がありますが、実際はそうではありません。あなたの緯度/経度が正しい場所にない場合は、データと一致しない投影を使用している可能性があります。フラットな地図には、「投影されていない」データはありません。地球は(ほぼ)球形です。射影アルゴリズムなしで球体をフラットにすることはできません。 –