Wolfram 언어

지리적 데이터

미국 카운티의 연결성

미국의 인접한 카운티 사이의 연결 그래프를 구축합니다.

미국 본토에 있는 주의 모든 카운티의 목록을 얻습니다.

In[1]:=
Click for copyable input
Length[counties = Flatten[EntityClass["AdministrativeDivision", "ContinentalUSStates"]["Subdivisions"]]]
Out[1]=

본토의 48개 주 중에 속하지 않는 컬럼비아 특별구를 추가합니다.

In[2]:=
Click for copyable input
AppendTo[counties, Entity["AdministrativeDivision", {"DistrictOfColumbia", "DistrictOfColumbia", "UnitedStates"}]];

각 카운티와 경계를 이루는 카운티의 목록을 계산합니다.

In[3]:=
Click for copyable input
bordering = EntityValue[counties, "BorderingCounties"];

경계 정보를 얻을 수 없는 경우는 폐기합니다.

In[4]:=
Click for copyable input
Length[missingpos = Position[bordering, _Missing]]
Out[4]=
In[5]:=
Click for copyable input
counties = Delete[counties, missingpos]; bordering = Delete[bordering, missingpos];

미국의 카운티의 연결 그래프의 에지를 구축합니다.

In[6]:=
Click for copyable input
Length[edges = DeleteDuplicates[ Sort /@ Flatten[ MapThread[Thread[UndirectedEdge[##]] &, {counties, bordering}]]]]
Out[6]=
In[7]:=
Click for copyable input
Graph[counties, edges]
Out[7]=

더 익숙한 임베딩 구축을 위해 모든 카운티의 중심 위치를 다운로드합니다.

In[8]:=
Click for copyable input
pos = GeoPosition[EntityValue[counties, "Position"]]
Out[8]=

다음의 지도 제작 투영법을 사용합니다.

In[9]:=
Click for copyable input
proj = {"LambertAzimuthal", "Centering" -> Entity["City", {"Topeka", "Kansas", "UnitedStates"}]};
In[10]:=
Click for copyable input
projpos = First@GeoGridPosition[pos, proj];

그러면, 다음의 그래프 임베딩을 얻을 수 있습니다.

In[11]:=
Click for copyable input
graph = Graph[counties, edges, VertexCoordinates -> projpos]
Out[11]=

샌프란시스코 카운티에서 맨해튼에 이르기까지 출발점과 도착점의 카운티를 포함하여 적어도 67개의 카운티를 지나가야 합니다.

In[12]:=
Click for copyable input
Length[path = FindShortestPath[graph, Entity[ "AdministrativeDivision", {"SanFranciscoCounty", "California", "UnitedStates"}], Entity[ "AdministrativeDivision", {"NewYorkCounty", "NewYork", "UnitedStates"}]]]
Out[12]=
In[13]:=
Click for copyable input
HighlightGraph[graph, PathGraph[path]]
Out[13]=

관련 예제

de en es fr ja pt-br ru zh