Question

J'essaie de convertir un fichier de formes de municipalités mexicaines en topojson et de l'afficher à l'aide de D3.js en utilisant ce tutoriel http://bost.ocks.org/mike/map/#convertting-data .J'ai réussi à le convertir mais je ne peux pas réussir à l'afficher.Toute aide sera fortement appréciée.

Ceci est mon flux de travail jusqu'à présent:

1) Téléchargez et décompressez le fichier de formes

wget http://mapserver.inegi.org.mx/MGN/mgm2010v5_0a.zip 
unzip mgm2010v5_0a.zip 

2) Conversion de JSON, reproduction à la Lat-Long et au sous-ensemble du fichier de formes

ogr2ogr  -f GeoJSON -t_srs EPSG:4326 -where "CVE_ENT IN ('09')" df.json Municipios_2010_5A.shp

3) conversion en topojson

topojson --id-property OID -p name=OID -p name -o df2.json df.json 

4) et crée le code HTML

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

/* CSS goes here. */

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

var width = 960,
height = 1160;

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

 d3.json("df2.json", function(error, df2) {
 svg.append("path")
  .datum(topojson.feature(df2, df2.objects.df))
  .attr("d", d3.geo.path().projection(d3.geo.mercator()));
 });

 </script>

Si j'exécute le HTML, je viens d'obtenir une page vierge.Des idées sur ce que je pourrais faire de mal?

Était-ce utile?

La solution

L'option la plus simple, si vous n'êtes pas particulièrement particulière sur la projection, il suffit d'utiliser la projection fournie par le fichier de formes (Lambert conformal conique). Utilisez Topojson 's --Width et --Height Command-giled drapeaux réduisant le fichier de formes projeté à une taille raisonnable. Par exemple, si vous voulez quelque chose de largeur 960px, vous pourriez dire:

topojson --width=960 --margin 20 --simplify=.1 -o mx.json -- municipalities.shp

(Cela simplifie également les coordonnées de l'écran, commodément.)

Un exemple complet avec un makefile est chez bl.ocks.org/9265467 :

Mexique

Si, d'autre part, vous souhaitez spécifier votre propre projection, il est raisonnable d'utiliser Ogr2og pour annuler la projection, puis définissez une projection dans le navigateur. Mais dans ce cas, vous voudrez spécifier les paramètres de projection de manière appropriée. Par exemple, pour recréer la même projection dans le navigateur, vous pouvez dire:

var projection = d3.geo.conicConformal()
    .rotate([102, 0])
    .center([0, 24])
    .parallels([17.5, 29.5])
    .scale(1850)
    .translate([width / 2, height / 2]);

(Fiddle avec le centre et la balance à mesure que vous aimez bien adapter la fenêtre de vue souhaitée.) Cette approche alternative est démontrée à bl.ocks.org/9265674 :

Mexique 2

Je préfère généralement utiliser des coordonnées projetées (la première approche ci-dessus), car elles sont plus rapides pour rendre et la simplification est plus efficace. D'autre part, si vous souhaitez modifier la projection de manière dynamique - certes improbable avec un fichier de formes aussi complexe - alors la projection dans le navigateur est la voie à suivre. Et la projection dans le navigateur est agréable pendant le développement car il est plus facile de modifier les paramètres et recharger.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top