我有一個topojson文件,我使用mapshaper在線工具創建。我從ftp://newftp.epa.gov/EPADataCommons/ORD/Ecoregions/us/ (us_eco_l3.zip)下載了原始shapefile。我使用ESRI的ArcMap 10.2來「解散」shape文件,所以我最終得到了85個獨特的ecoregions。然後我用mapshaper(http://www.mapshaper.org/)將shapefile轉換爲topojson文件。d3.json albers投影和美國ecoregions
但是,我無法讓topojson文件在我的網頁中正確顯示。我懷疑我的預測是錯誤的。但我無法弄清楚我出錯的地方。
下面是我在我的網頁代碼(我使用ASP.NET MVC 5):
<style>
.region {
stroke: #fff;
fill: #005DAA;
}
.hover {
fill: yellow;
}
.selected{
stroke: #fff;
fill: #00C800;
}
#regName{
position: absolute;
top: 150px;
height: 22px;
width: 250px;
padding: 3px;
text-align:center;
}
<input type="text" id="regName" disabled />
<div id="map" style="text-align:center">
<h1>US Ecoregions Level III</h1>
<h3 id="reg"></h3>
</div>
<script src="//d3js.org/d3.v3.min.js"></script>
<script src="//d3js.org/topojson.v1.min.js"></script>
<script type="text/javascript">
var width = 960,
height = 400,
centered;
var projection = d3.geo.albers()
.center([-96.5, 38.68])
.scale(1000)
.rotate([0, 0]);
var path = d3.geo.path()
.projection(projection);
var svg = d3.select("#map").append("svg")
.attr("width", width)
.attr("height", height);
queue()
.defer(d3.json, "/topo/ecol3.json")
.await(ready);
function ready(error, us) {
svg.append("g")
.selectAll("path")
.data(topojson.feature(us, us.objects.ecol3).features)
.enter()
.append("path")
.attr("d", path)
.attr("class", "region")
.on("mouseover", function (d) {
d3.select("h3").text(d.properties.US_L3NAME);
d3.select(this).attr("class", "region hover");
})
.on("mouseout", function (d) {
d3.select("h3").text("");
d3.select(this).attr("class", "region");
})
.on("click", function (d) {
var name = d.properties.US_L3NAME;
var region = d3.select("#regName");
region.property("value", name);
});
}
</script>
得到任何幫助。
你是非常有幫助的。回答我需要的一切。它現在有效。非常感謝你。我將我的shapefile重新投影到地理座標系WGS 84,並使用地圖繪製器將其重新導出到地圖。你真的救了我! – user2770113