Próbowałem utworzyć plik TopoJson ze skonsolidowanymi danymi warstw zawierającymi, między innymi, Stany Zjednoczone, Powiaty i Okręgi Kongresowe.Strona klienta topojson renderowanie pozornie niepoprawne ścieżki
Oryginalne pliki shp .shp pochodzą z Cartographic Boundary Files Biura Spisu Powszechnego (Census Bureau).
Zostały one zamienione na GeoJson przez ogr2ogr.
Następnie połączone w formacie TopoJson przez bibliotekę po stronie serwera węzła, z kwantyzacją 1e7 i zachowaniem proporcji 0,15. Do tego momentu nic nie wskazuje na żaden problem.
wyświetlić ostateczny plik topojson użyciu mapshaper i rzeczy wydają się wyglądać OK:
Ale podczas próby renderowania z biblioteki klienta topojson i D3.geo.path(), spotykam dziwne ścieżki w warstwa congressionalDist: (zauważyć duże prostokątne ścieżki na całym kontynencie amerykańskim, AK, i HI)
wersja robocza stronie można znaleźć tutaj: http://jsl6906.net/D3/topojson_problem/map/
kilka odpowiednich notach:
- Jeśli zmienię mój skrypt generacji topojson usunąć uproszczenie, ścieżki następnie wydają się wskazywać prawidłowo za pośrednictwem tej samej stronie d3.js
- Gdybym tylko utrzymać warstwę congressionalDist podczas tworzenia topojson, ścieżki następnie wydają pokazać prawidłowo za pomocą tej samej stronie d3.js:
Po próbując jak najwięcej rozwiązaniu problemów, jak byłem w stanie obsłużyć, wyobraziłem chciałbym poprosić kogoś, żeby zobaczyć, czy ktoś doświadczył każdy podobny problemy. Dzięki za pomoc.
Wygląda na to, że jest/może być związane prognozy/24055015 # 24055015. Tam obliczenia granicy poszły nie tak z niektórymi regionami, w wyniku czego powstały również duże prostokąty. W twoim przykładzie na przykład 'd3.geo.bounds (cds [84])' powoduje, że '[[-180, -90], [180, 90]] 'wydaje się niepoprawne. Nie wiem, dlaczego tak się dzieje. –
Nadal nie jestem pewien, co jest przyczyną tego, ale jedną interesującą rzeczą, którą zauważyłem jest to, że właściwość "id" danych związanych z obrażającymi prostokątami kończy się na 'ZZ', podczas gdy wszystkie inne obiekty mają id kończący się dwoma liczbami. Odpowiedzialnymi za to identyfikatorem są: 09ZZ, 17ZZ i 26ZZ. Na przykład spróbuj wykonać następujące czynności: 'd3.selectAll (d3.selectAll ('. Cd') [0] .filter (function (d) {return d3.select (d) .attr ('id'). Slice (- 2) === 'ZZ'})). Style ('stroke', 'red') 'i zauważysz, że tylko te prostokąty mają kolor czerwony. – jshanley
Wygląda na to, że 'ZZ' to kod nadany" niezdefiniowanym "okręgom kongresowym. Nie jestem do końca pewien, co to oznacza, ale widać, że zdarza się to w [tym zbiorze danych] (http://www.census.gov/geo/reference/codes/files/national_cd113.txt) pod kolumną CD113FP, gdziekolwiek kolumna NAMELSAD zawiera "Okręgi kongresowe nieokreślone". Istnieje również odniesienie do usuwania takich dzielnic podczas działania ogr2ogr w [** tym pliku **] (https://github.com/mbostock/us-atlas/blob/bf502099b48e54116c88f277e6d800836ecbc210/Makefile#L276-L279), który jest częścią ['us-atlas'] (https://github.com/mbostock/us-atlas) – jshanley