Я пытаюсь прочитать шейп-файл и построить его с помощью matplotlib. Вот код:
import matplotlib.pyplot as plt
import shapefile
shpFilePath = "D:\test.shp"
listx=[]
listy=[]
test = shapefile.Reader(shpFilePath)
for sr in test.shapeRecords():
for xNew,yNew in sr.shape.points:
listx.append(xNew)
listy.append(yNew)
plt.plot(listx,listy)
plt.show()
Тем не менее, я получаю линии, соединяющие мои полигоны. Как нарисовать полигоны так, чтобы они находились в шейп-файле? Вот скриншоты графика и шейп-файла, когда он открывается в ArcGIS.
shapefile
matplotlib
statBeginner
источник
источник
Ответы:
Я оставлю это вам, как собирать фигуры, но это принцип
источник
Для будущих ссылок, вот решение, к которому я пришел после следования советам выше.
Получившаяся фигура будет очень красочной, но тогда вам просто нужно настроить сюжетные ключевые слова.
источник
import shapefile
относится кpyshp
пакету: pypi.python.org/pypi/pyshpВам нужно использовать пути и патчи matplotlib, и есть модуль Python, предназначенный для построения полигонов из шейп-файлов с использованием этих функций Descartes .
Поскольку Pyshp (shapefile) имеет соглашение geo_interface ( New geo_interface для PyShp ), вы можете использовать его.
Результатом является GeoJSON-представление геометрии, и вы можете использовать решение Как построить геоданные, используя matplotlib / python
источник
descartes
решение не работает, если вы попытаетесь нанести два разных шейп-файла на два соседних участка, используя,fig, ax = plt.subplots(1,2,figsize=(15, 8))
а затемax[0].add_patch(PolygonPatch(poly_geo, fc='#d3d3d3', ec='#000000', alpha=0, zorder=5))
иax[1].add_patch(PolygonPatch(poly_geo, fc='#d3d3d3', ec='#000000', alpha=0, zorder=5))
. Результатом является пустое изображение. Любая идея?Это можно сделать с помощью геопанд или pyshp, как описано в этом ответе . Геопанды используют matplotlib на своем бэкенде для построения графиков.
источник
В дополнение к ldocao ответ и ответ на вопрос FaCoffee. Когда у вас есть изолированные острова, и они являются частью одной и той же функции, вы можете попробовать следующее:
Это заставляет меня работать. Свойство «части» фигуры возвращает начальные индексы различных геометрий внутри объекта.
источник
Тем не менее, в одной форме шейп-файла может быть несколько частей. Это позволит построить каждую часть внутри одной фигуры отдельно.
источник