2014-06-04 2 views
8

저는 미국 국가, 카운티 및 의회 지역을 포함하는 통합 레이어 데이터로 TopoJson 파일을 만들려고했습니다.클라이언트 측 topojson이 겉으로는 잘못된 경로를 렌더링합니다.

원본 .shp 모양 파일은 인구 조사국 Cartographic Boundary Files에서 왔습니다.

이들은 ogr2ogr을 통해 GeoJson으로 변환되었습니다.

그런 다음 1e7의 양자화 및 0.15의 보유 비율로 노드 서버 측 라이브러리를 통해 TopoJson 형식으로 결합됩니다. 지금까지 문제의 징후는 없습니다.

나는 mapshaper를 사용하여 최종 topojson 파일을 볼 사물이 보이는 것 같다 OK : rendered via mapshaper

topojson 클라이언트 라이브러리 및 D3.geo.path()을 렌더링 할 때

하지만, 좀 이상한 경로에서 발생 congressionalDist 층 : (HI 미국 대륙, AK 주위에 큰 직사각형 경로를 알 등) 페이지의 작업 버전은 여기에서 찾을 수 있습니다 square paths

: http://jsl6906.net/D3/topojson_problem/map/

관련 노트의 몇 :

내가 단순화를 제거하기 위해 내 topojson 생성 스크립트를 변경하는 경우
  • , 경로는 다음 topojson를 만들 때 나는 단지 congressionalDist 층을 유지하는 경우 같은 d3.js 페이지
  • 를 통해 제대로 보여줄 것 같다 경로는 다음에 보인다 같은 d3.js 페이지를 통해 제대로 보여

good

내가 처리 할 수 ​​있었던만큼 문제 해결을 시도 후, 나는 누군가가 유사한 경험을 한 경우 내가 보려면 여기를 사람을 물어 보곤 생각 문제. 어떤 도움을 주셔서 감사합니다.

+1

이것은 http://stackoverflow.com/questions/23953366/d3-large-geojson-file-does-not-show-draw-map-properly-using-에서 언급 된 문제와 관련이있는 것으로 보입니다. 프로젝션/24055015 # 24055015. 거기서 경계의 계산은 큰 직사각형들로 또한 나타나는 몇몇 지역들에서 잘못되었다. 예제에서, 예를 들어,'d3.geo.bounds (cds [84])'는'[[-180, -90], [180, 90]]이되어 잘못된 것 같습니다. 나는 이것이 왜 일어나는 지 모른다. –

+1

아직 무엇이 문제인지 모르겠지만 흥미로운 점은 문제가되는 직사각형에 바인딩 된 데이터의 id 속성이'ZZ'로 끝나는 반면 다른 모든 개체는 두 개의 숫자로 끝나는 ID를가집니다. 이드의 책임은 09ZZ, 17ZZ 및 26ZZ입니다. 예를 들어, 다음을 시도하십시오 :'d3.selectAll (d3.selectAll ('.cd') [0] .filter (function d) {return d3.select (d) .attr ('id'). slice (- 2) === 'ZZ'})). style ('stroke', 'red')'그러면 사각형 만 빨간색으로 표시됩니다. – jshanley

+0

'ZZ'는 "정의되지 않은"국회 지구에 주어진 코드입니다. 정확히 무슨 뜻인지는 모르겠지만 CD113FP 열 아래의 [이 데이터 세트] (http://www.census.gov/geo/reference/codes/files/national_cd113.txt)에서 볼 수 있습니다. NAMELSAD 열에는 "국회 정의되지 않은 지역"이 포함되어있다. 또한 [**이 파일 **] (https://github.com/mbostock/us-atlas/blob/bf502099b48e54116c88f277e6d800836ecbc210/Makefile#L276-L279)에서 ogr2ogr을 실행할 때 해당 지구를 삭제하는 것에 대한 참조가 있습니다. ['us-atlas'] (https://github.com/mbostock/us-atlas) – jshanley

답변

4

내가 언급 한 것처럼 세 개의 잘못된 사각형이 모두 id 속성이 ZZ으로 끝나는 데이터에 바인딩되어 있고 다른 모든 경로의 ID는 숫자로 끝나는 것으로 나타났습니다.

일부 Google 검색을 수행 한 후 나는 대답을 생각해 냈습니다. census.gov 웹 사이트 this document에 따르면

, 코네티컷, 일리노이, 미시간에서

상태 또는 이에 상응하는 지역을 모두 충당하기 위해 현재 (113) 하원 의원 선거구를 할당하지 않은 상태 참가자 . 코드 "ZZ"는 의회 지역이 정의되지 않은 지역 (일반적으로 대형 수역)에 으로 지정되었습니다. 이 지정되지 않은 지역 은 데이터 프리젠 테이션을 위해 주 내의 하나의 하원 의원으로 취급됩니다.

세 개의 정의되지 않은 구역이 세 개의 직사각형을 차지하는 것으로 보입니다. 문제가 발생하는 과정의 어느 시점에서 불분명하지만, 즉각적인 문제에 대한 간단한 해결책이 있다고 생각합니다. ZZ 코드에 대한 정보를 검색하는 동안 us-atlas이라는 mbostock 프로젝트에서 this makefile을 발견했습니다.

그는 비슷한 문제가 발생하여 ogr2ogr을 실행할 때 정의되지 않은 국회 지구를 걸러 냈습니다. 다음은이 파일에서 관련 코드입니다 : 당신이 실행하면 내가 그 걸거야

# remove undefined congressional districts 
shp/us/congress-ungrouped.shp: shp/us/congress-unfiltered.shp 
    rm -f [email protected] 
    ogr2ogr -f 'ESRI Shapefile' -where "GEOID NOT LIKE '%ZZ'" [email protected] $< 

이 여기에이 문제를 해결할 표시된 플래그를 사용하여 Shape 파일에 ogr2ogr.

+0

흥미 롭습니다. 고맙습니다. 나는이 다음 며칠 동안 이것을 더 조사 할 것이다. 이것이 이것이 문제의 근원일지도 모르는 것처럼 보이지만, 주/카운티 쉐이프 파일과 결합하지 않으면 왜 패스가 잘 렌더링되는지 설명하지 못합니다. 또는 topojson을 사용하여 셰이프를 단순화하지 않으면 왜 문제가 존재하지 않습니다. 이것에 대한 어떤 반응이라도? – Josh

+0

지금은 아닙니다. 세부 정보를 계속 조사하고 있다면 전환 과정의 각 단계에서 데이터 집합의 모양을 확인하고 비교할 때 정의되지 않은 구역을 나타내는 * 종류 * 데이터의 중요한 차이에 특히주의하십시오. 다른 지구를위한 자료에. 내 생각 엔 단계 중 하나를 수행 한 후이 데이터는 d3이 올바르게 렌더링 할 수없는 형식이 될 것입니다. – jshanley

+0

나에게 일어날 또 다른 가능성 ...이 데이터를 주 경계 등과 결합한다고 말하면 모양이나 경로 자체가 어떻게 든 단일 모양이나 경로로 병합되는 단계가 있는가? 그렇다면, 물의 육지 위에있는이 정의되지 않은 지구의 일부가 같은 주정부 물이 주/카운티 데이터 세트의 경계로 사용된다면 주 경계 또는 카운티 경계와 합칠 수 없을 수도 있습니다 . – jshanley

관련 문제