Estoy tratando de leer un archivo de formas y trazarlo usando matplotlib. Aquí está el código:
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()
Sin embargo, obtengo líneas que conectan mis polígonos. ¿Cómo puedo dibujar los polígonos para que sean la forma en el archivo de forma? Aquí hay capturas de pantalla de la trama y el archivo de forma cuando se abre con ArcGIS.
shapefile
matplotlib
statBeginner
fuente
fuente
Respuestas:
Te dejo a ti cómo recolectar las formas, pero este es el principio
fuente
Para futuras referencias, aquí está la solución a la que he llegado después de seguir los consejos anteriores.
La figura resultante será muy colorida, pero entonces, solo necesita ajustar las palabras clave de la trama.
fuente
import shapefile
refiere alpyshp
paquete: pypi.python.org/pypi/pyshpNecesita usar rutas y parches matplotlib y hay un módulo de Python dedicado a trazar polígonos a partir de archivos de forma usando estas funciones Descartes .
Como Pyshp (shapefile) tiene la convención geo_interface ( Nueva geo_interface para PyShp ), puede usarla.
El resultado es la representación GeoJSON de la geometría y puede usar la solución de Cómo trazar geodatos usando matplotlib / python
fuente
descartes
solución no funciona si intentas trazar dos archivos de forma diferentes en dos subtramas adyacentes usandofig, ax = plt.subplots(1,2,figsize=(15, 8))
y luegoax[0].add_patch(PolygonPatch(poly_geo, fc='#d3d3d3', ec='#000000', alpha=0, zorder=5))
yax[1].add_patch(PolygonPatch(poly_geo, fc='#d3d3d3', ec='#000000', alpha=0, zorder=5))
. El resultado es una imagen vacía. ¿Alguna idea?Se puede hacer usando geopandas o pyshp como se discutió en esta respuesta . Las geopandas usan matplotlib en su backend para trazar.
fuente
Además de responder a ldocao, y responder a la pregunta de FaCoffee. Cuando tenga islas aisladas y formen parte de la misma característica, puede intentar lo siguiente:
Esto hace que funcione para mí. Las "partes" de propiedad de una forma devuelven los índices iniciales de diferentes geometrías dentro de una entidad.
fuente
Aún así, en una forma de archivo de forma, puede haber múltiples partes. Esto trazará cada parte dentro de una forma, por separado.
fuente