Admin 0 Africa projected topojson (Lambert Conformal Conic).
<!DOCTYPE html>
<meta charset="utf-8">
<style>
.countries {
fill: #222;
stroke: #fff;
}
.countries :hover {
fill: #8a8a8a;
}
</style>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/topojson/1.6.19/topojson.min.js"></script>
<script>
var width = 960,
height = 800;
var path = d3.geo.path()
.projection(null);
var svg = d3.select("body").append("svg")
.attr("width", width)
.attr("height", height);
d3.json("africa.json", function(error, africa) {
if (error) throw error;
svg.append("g")
.attr("class","countries")
.selectAll("path")
.data(topojson.feature(africa, africa.objects.countries).features)
.enter().append("path")
.attr("d", path)
.append("title")
.text(function(d) { return d.properties.admin; });
});
d3.select(self.frameElement).style("height", height + "px");
</script>
ogr2ogr \
-f 'ESRI Shapefile' \
-t_srs 'EPSG:102024' \
-where "continent IN ('Africa')" \
africa-projected.shp \
ne_50m_admin_0_countries.shp
topojson \
--width 960 \
--height 800 \
--margin 20 \
--properties admin \
--properties adm0_a3 \
--properties geounit \
-o africa.json \
-- countries=africa-projected.shp