13 votos

Proyección de mariposa Waterman en Mapnik

Como dice el título, ¿cómo podría alguien configurar Mapnik para utilizar el Proyección de mariposa Waterman ?

De lo contrario, ¿qué otras herramientas serían capaces de renderizar utilizando esta proyección?

9voto

eplawless Puntos 2076

No creo que mapnik o proj4 sean capaces de renderizar ese tipo de proyección.

Según eso excelente puesto , Openlayers con biblioteca protovis sería capaz de renderizar no exactamente la proyección Waterman sino la proyección Fuller (también llamada Dymaxion ).

Incluso tiene un ejemplo en línea aquí .

dymaxion - openlayers

0 votos

Esa proyección podría ser una buena alternativa, gracias.

2voto

Greg Whitfield Puntos 3651

No es para Mapnik, pero al menos el Proyecciones geográficas poliédricas para el plugin de d3.js puede hacer esa proyección.

Screenshot of the d3.js example


Ejemplo de http://bl.ocks.org/mbostock/4458497 :

<!DOCTYPE html>
<meta charset="utf-8">
<style>

body {
  background: #fcfcfa;
}

.stroke {
  fill: none;
  stroke: #000;
  stroke-width: 3px;
}

.fill {
  fill: #fff;
}

.graticule {
  fill: none;
  stroke: #777;
  stroke-width: .5px;
  stroke-opacity: .5;
}

.land {
  fill: #222;
}

.boundary {
  fill: none;
  stroke: #fff;
  stroke-width: .5px;
}

</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script src="http://d3js.org/d3.geo.polyhedron.v0.min.js"></script>
<script src="http://d3js.org/topojson.v1.min.js"></script>
<script>

var width = 960,
    height = 550;

var projection = d3.geo.polyhedron.waterman()
    .rotate([20, 0])
    .scale(118)
    .translate([width / 2, height / 2])
    .precision(.1);

var path = d3.geo.path()
    .projection(projection);

var graticule = d3.geo.graticule();

var svg = d3.select("body").append("svg")
    .attr("width", width)
    .attr("height", height);

var defs = svg.append("defs");

defs.append("path")
    .datum({type: "Sphere"})
    .attr("id", "sphere")
    .attr("d", path);

defs.append("clipPath")
    .attr("id", "clip")
  .append("use")
    .attr("xlink:href", "#sphere");

svg.append("use")
    .attr("class", "stroke")
    .attr("xlink:href", "#sphere");

svg.append("use")
    .attr("class", "fill")
    .attr("xlink:href", "#sphere");

svg.append("path")
    .datum(graticule)
    .attr("class", "graticule")
    .attr("clip-path", "url(#clip)")
    .attr("d", path);

d3.json("/mbostock/raw/4090846/world-50m.json", function(error, world) {
  svg.insert("path", ".graticule")
      .datum(topojson.feature(world, world.objects.land))
      .attr("class", "land")
      .attr("clip-path", "url(#clip)")
      .attr("d", path);

  svg.insert("path", ".graticule")
      .datum(topojson.mesh(world, world.objects.countries, function(a, b) { return a !== b; }))
      .attr("class", "boundary")
      .attr("clip-path", "url(#clip)")
      .attr("d", path);
});

d3.select(self.frameElement).style("height", height + "px");

</script>

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X