javascript - visual - La topografía del lado del cliente representa rutas aparentemente incorrectas
websocket javascript (1)
He intentado crear un archivo TopoJson con datos de capas consolidadas que contengan, entre otras capas, Estados de EE. UU., Condados y distritos del Congreso.
Los archivos de formas .shp originales provienen de los archivos de límites cartográficos de la Oficina del Censo.
Estos se convirtieron a GeoJson a través de ogr2ogr.
Luego se combinó en el formato TopoJson a través de la biblioteca del lado del servidor de nodos, con la cuantificación de 1e7 y la proporción retenida de 0.15. Hasta este momento no hay indicios de ningún problema.
Veo el archivo topojson final usando mapshaper y las cosas parecen estar bien:
Pero cuando intento renderizar con la biblioteca del cliente de topojson y D3.geo.path (), encuentro algunos caminos extraños en la capa CongressionalDist: (observe las grandes rutas rectangulares alrededor de los EE. UU. Continentales, AK y HI)
Una versión de trabajo de la página se puede encontrar aquí: http://jsl6906.net/D3/topojson_problem/map/
Un par de notas relevantes:
- Si cambio mi script de generación topojson para eliminar la simplificación, las rutas parecen mostrarse correctamente a través de la misma página d3.js
- Si solo guardo la capa congressionalDist al crear el topojson, las rutas parecen mostrarse correctamente a través de la misma página de d3.js:
Después de intentar solucionar tanto como pude, pensé que podría preguntarle a alguien aquí para ver si alguien ha experimentado algún problema similar. Gracias por cualquier ayuda.
Como mencioné en los comentarios, me di cuenta de que los tres rectángulos ofensivos estaban vinculados a datos con una propiedad de id
termina en ZZ
, mientras que todos los demás caminos tenían ID que terminaban con números.
Después de algunas búsquedas en Google, se me ocurrió lo que creo que es la respuesta.
De acuerdo con este documento en el sitio web census.gov,
En Connecticut, Illinois y Michigan, el participante estatal no asignó los distritos electorales actuales (113º) para cubrir todo el área estatal o equivalente. El código "ZZ" se ha asignado a áreas sin un distrito congresional definido (generalmente cuerpos de agua grandes). Estas áreas no asignadas son tratadas dentro del estado como un distrito congresional único para propósitos de presentación de datos.
Parece que estos tres distritos indefinidos representarían los tres rectángulos. No está claro en qué punto del proceso causan el problema, pero creo que hay una solución simple para su problema inmediato. Mientras buscaba información sobre el código ZZ
, me topé con este archivo make en un proyecto de mbostock llamado us-atlas
.
Parece que había encontrado un problema similar y había logrado filtrar los distritos ogr2ogr
indefinidos cuando ejecutaba ogr2ogr
. Aquí está el código relevante de ese archivo:
# remove undefined congressional districts
shp/us/congress-ungrouped.shp: shp/us/congress-unfiltered.shp
rm -f $@
ogr2ogr -f ''ESRI Shapefile'' -where "GEOID NOT LIKE ''%ZZ''" $@ $<
ogr2ogr
a que si ejecuta su ogr2ogr
en su shapefile usando las banderas que se muestran aquí, se solucionará el problema.