Я играл с картами Альтаира.Я очень легко могу создавать карты США с границами штатов и округов.То, на чем я застрял, - это фильтрация карт до более низкого уровня.Например, если бы я хотел построить карту только штата Джорджия с границами округа, как бы я это сделал?
У меня есть решение, но это плохое решение.Любопытно, есть ли лучший способ.Вот мой код:
states_data = alt.topo_feature(data.us_10m.url, "states")
counties = alt.topo_feature(data.us_10m.url, 'counties')
states = alt.Chart(states_data).mark_geoshape(
stroke='black',
strokeWidth=1
).transform_filter((alt.datum.id == 13))
cobb = alt.Chart(counties).mark_geoshape(
stroke='black',
strokeWidth=1
).transform_filter((alt.datum.id == 13067))
fulton = alt.Chart(counties).mark_geoshape(
stroke='black',
strokeWidth=1
).transform_filter((alt.datum.id == 13121))
dekalb = alt.Chart(counties).mark_geoshape(
stroke='black',
strokeWidth=1
).transform_filter((alt.datum.id == 13089))
states + cobb + fulton + dekalb
Этот код дает мне такой результат:
Я использую очень распространенный Данные Альберса США для создания границ штатов и округов.Я использовал «Штаты», чтобы спроектировать штат Джорджия, а затем я использовал «Кобб», «Фултон» и «Декальб», чтобы спроектировать 3 разных округа Атланта в дополнение к этому.
Это работает, но крайне неэффективно, и было бы очень тяжело сделать это для всех 159 округов штата.Есть ли более простой способ фильтрации округов, чем тот, который я использую?Или какой-нибудь хороший автоматический способ чтения во всех 159 округах без 1000+ строк кода!?
Редактировать: Также для записи я попытался выполнить округы и затем выполнить фильтрацию по штатам, ноэто не сработало.Код ниже:
states = alt.Chart(states_data).mark_geoshape(
stroke='black',
strokeWidth=1
).transform_filter((alt.datum.id == 13))
counties = alt.Chart(counties).mark_geoshape(
stroke='black',
strokeWidth=1
).project('albersUsa')
states + counties
Этот код, кажется, просто делает полную карту округа США.