Ho tentato di creare un file TopoJson con dati di livello consolidato contenenti, tra gli altri strati, Stati Uniti, contee e distretti congressuali.Rendering lato client di rendering topojson apparentemente errati
Gli shapefile originali .shp provengono dal Census Bureau Cartographic Boundary Files.
Questi sono stati convertiti in GeoJson via ogr2ogr.
Quindi combinato in formato TopoJson tramite la libreria lato server nodo, con quantizzazione di 1e7 e percentuale di mantenimento di 0,15. Fino a questo punto non vi è alcuna indicazione di alcun problema.
ho visualizzare il file topojson finale utilizzando mapshaper e le cose sembrano guardare OK:
Ma, quando si tenta di rendere con la libreria client topojson e D3.geo.path(), ho incontrato alcuni strani percorsi in lo strato congressionalDist: (notare le grandi percorsi rettangolari in tutto l'Uniti continentali, AK, e HI)
una versione funzionante della pagina può essere trovato qui: http://jsl6906.net/D3/topojson_problem/map/
Un paio di note rilevanti:
- Se cambio il mio script generazione topojson per rimuovere la semplificazione, i percorsi poi sembrano mostrare correttamente tramite la stessa pagina di d3.js
- Se continuo a solo lo strato congressionalDist durante la creazione del topojson, i percorsi poi sembrano mostrare correttamente tramite la stessa pagina d3.js:
Dopo aver tentato la risoluzione dei problemi tanto come io sono stato in grado di gestire, ho pensato che sarebbe chiedere a qualcuno qui per vedere se qualcuno ha avuto alcun simile problemi. Grazie per qualsiasi aiuto.
Questo sembra essere/potrebbe essere correlato ai problemi menzionati in http://stackoverflow.com/questions/23953366/d3-large-geojson-file-does-not-show-draw-map-properly-using- proiezioni/24055015 # 24055015. Lì il calcolo del limite è andato male con alcune regioni risultanti anche in rettangoli di grandi dimensioni. Nell'esempio, ad esempio, 'd3.geo.bounds (cds [84])' risulta in '[[-180, -90], [180, 90]] 'che sembra non essere corretto. Non so perché questo succede però. –
Ancora non sono sicuro di cosa stia causando questo, ma una cosa interessante che ho notato è che la proprietà 'id' dei dati legati ai rettangoli incriminati finisce in' ZZ', mentre tutti gli altri oggetti hanno un id che termina con due numeri. I responsabili dell'ID sono: 09ZZ, 17ZZ e 26ZZ. Ad esempio, prova quanto segue: 'd3.selectAll (d3.selectAll ('. Cd') [0] .filter (function (d) {return d3.select (d) .attr ('id'). Slice (- 2) === 'ZZ'})). Stile ('tratto', 'rosso') 'e noterai che solo quei rettangoli sono colorati in rosso. – jshanley
Sembra che "ZZ" sia il codice assegnato ai distretti congressuali "indefiniti". Non sono esattamente sicuro di cosa significhi, ma puoi vederlo in [questo set di dati] (http://www.census.gov/geo/reference/codes/files/national_cd113.txt) sotto la colonna CD113FP, dovunque la colonna NAMELSAD contiene "Distretti congressuali non definiti". C'è anche un riferimento alla rimozione di tali distretti quando si esegue ogr2ogr in [** questo file **] (https://github.com/mbostock/us-atlas/blob/bf502099b48e54116c88f277e6d800836ecbc210/Makefile#L276-L279) che fa parte di ['us-atlas'] (https://github.com/mbostock/us-atlas) – jshanley