Это будет довольно быстрый и грязный пост об использовании python для определения того, граничит ли один штат США (или любая произвольная география) с другим штатом США (или любой другой произвольной географией).

Нашими входными данными будет GeoJSON (просто JSON, описывающий сложную форму) штатов США, который вы можете получить на моем GitHub здесь. На выходе мы получим словарь на python, который сопоставляет каждый штат США с одним числом, указывающим, сколько у него соседних штатов.

Нашим основным инструментом в этом посте будет библиотека python shapely, которая помогает нам манипулировать сложными географическими объектами в python.

Процедура будет довольно простой: для каждого штата США мы можем перебрать все остальные штаты США, а затем проверить, соприкасаются ли эти два штата. Если они это сделают, мы можем обновить текущий список соседних состояний для текущего рассматриваемого состояния.

Сначала нам нужно преобразовать GeoJSON в объекты, которые можно понять. Два основных фигурных объекта, которые мы будем использовать:

  • Объекты Polygon: в основном одна ограниченная форма
  • Объекты MultiPolygon: в основном набор объектов Polygon (поскольку некоторые штаты США состоят из нескольких географических частей).

Вот код для анализа GeoJSON:

Теперь, когда у нас есть хороший словарь объектов географии штатов (Polygons или MultiPolygons) в statePolygons, мы можем выполнить итерацию по словарю и проверить, соседствует ли каждый штат друг с другом. государство.

И в результате:

Хороший! Таким образом, Миссури и Теннесси делят первое место с 8 соседями, а затем Кентукки и Колорадо делят второе место с 7 соседями.

Надеюсь, что этот пост немного помог в качестве легкого введения в использование shapely для пространственных приложений. Спасибо, что прочитали!