У меня есть шейп-файл основных дорог в Нью-Гемпшире (TIGER / Line), полученный из Бюро переписей США (файл найден здесь ), и я пытаюсь нанести их на карту, используя тандем Cartopy / Matplotlib.
Атрибуты шейп-файла
Атрибут shapefile разделен на четыре класса: LINEARID
, FULLNAME
, RTTYP
, & MTFCC
Первый подход | Plot All Lines
Первый подход состоял в том, чтобы загрузить шейп-файл с помощью cartopy.feature и построить его, что можно увидеть в следующем фрагменте кода. Это сработало, как и ожидалось, и построило каждую дорожную линию, содержащуюся в шейп-файле:
from cartopy.io.shapereader import Reader
from cartopy.feature import ShapelyFeature
roads = '/path/to/file/majorroads.shp'
roads_feature = ShapelyFeature(Reader(roads).geometries(), crs.LambertConformal(), facecolor='none', edgecolor='gray')
ax.add_feature(roads_feature, linewidth=0.75)
Второй подход | Спецификация графика c Атрибут
Второй подход состоял в том, чтобы использовать Cartopy Reader для определения местоположения и отображения только тех линий графика, которые соответствуют указанному атрибуту c. Прочитав эту статью из НАСА, я использовал примеры для написания следующего кода:
from cartopy.io.shapereader import Reader
from cartopy.feature import ShapelyFeature
roads = '/path/to/file/majorroads.shp'
roads_feature = Reader(roads)
parts = roads_feature.records()
for part in parts:
if part.attributes['FULLNAME'] == 'US Hwy 202':
ax.add_geometries(part.attributes, linewidth=0.50, facecolor='none', edgecolor='gray')
Это не отображало нужные линии в шейп-файле. Какие исправления могут быть сделаны, чтобы этот код работал правильно?