I am working on a shapefile that contains 4 polygons where I need to extract their coordinates in a tuple or numpy array for later manipulation. While fiona identifies the 4 polygons, using shapely to get the area only gives me the value for the first polygon.
I would like to pick the xy coordinate for all polygons and put them separately into arrays and tuples for processing. Any help would be appreciated.
import fiona
import pprint
from shapely.geometry import shape, Polygon
c = fiona.open("myShapeFile.shp", 'r')
pprint.pprint(len(c))
poly = Polygon(next(iter(c))["geometry"]["coordinates"][:])
print('Area :: ',poly.area)
The execution gives me the following:
4
Area :: 483.6379565269977
Try this:
import fiona
import numpy as np
c = fiona.open('myShapeFile.shp')
coords = [np.array(poly['geometry']['coordinates'])
for poly in c.values()]
coords
is a 4 item list holding numpy arrays built from the coordinates of the polygons from the shapefile:
[array([[ 3.67739738e+05, 6.35697708e+06, -1.50000000e+03],
[ 3.67709140e+05, 6.35875947e+06, -1.50000000e+03],
[ 3.55633222e+05, 6.35932405e+06, -1.50000000e+03],
[ 3.55340980e+05, 6.35724482e+06, -1.50000000e+03],
[ 3.54012992e+05, 6.35713924e+06, -1.50000000e+03],
[ 3.53169984e+05, 6.33306237e+06, -1.50000000e+03],
[ 3.72936914e+05, 6.33219322e+06, -1.50000000e+03],
[ 3.73638262e+05, 6.34799928e+06, -1.50000000e+03],
[ 3.70536492e+05, 6.34865912e+06, -1.50000000e+03],
[ 3.71030683e+05, 6.35672004e+06, -1.50000000e+03],
[ 3.67739738e+05, 6.35697708e+06, -1.50000000e+03]]),
array([[ 3.60619254e+05, 6.35486104e+06, -1.50000000e+03],
[ 3.61702258e+05, 6.35460318e+06, -1.50000000e+03],
[ 3.62578977e+05, 6.35362332e+06, -1.50000000e+03],
[ 3.61805402e+05, 6.35192145e+06, -1.50000000e+03],
[ 3.60412965e+05, 6.35114787e+06, -1.50000000e+03],
[ 3.59072102e+05, 6.35171516e+06, -1.50000000e+03],
[ 3.59020527e+05, 6.35279817e+06, -1.50000000e+03],
[ 3.60309824e+05, 6.35295288e+06, -1.50000000e+03],
[ 3.60000391e+05, 6.35408746e+06, -1.50000000e+03],
[ 3.60619254e+05, 6.35486104e+06, -1.50000000e+03]]),
array([[ 3.59072102e+05, 6.34439198e+06, -1.50000000e+03],
[ 3.60928684e+05, 6.34537184e+06, -1.50000000e+03],
[ 3.62424262e+05, 6.34480455e+06, -1.50000000e+03],
[ 3.63868270e+05, 6.34361841e+06, -1.50000000e+03],
[ 3.63146266e+05, 6.34155554e+06, -1.50000000e+03],
[ 3.61341258e+05, 6.34036939e+06, -1.50000000e+03],
[ 3.60258250e+05, 6.34109139e+06, -1.50000000e+03],
[ 3.61650688e+05, 6.34227754e+06, -1.50000000e+03],
[ 3.61289688e+05, 6.34356684e+06, -1.50000000e+03],
[ 3.59897250e+05, 6.34294798e+06, -1.50000000e+03],
[ 3.57989094e+05, 6.34346370e+06, -1.50000000e+03],
[ 3.59072102e+05, 6.34439198e+06, -1.50000000e+03]]),
array([[ 3.69489590e+05, 6.34294798e+06, -1.50000000e+03],
[ 3.71397742e+05, 6.34103982e+06, -1.50000000e+03],
[ 3.69438016e+05, 6.33928638e+06, -1.50000000e+03],
[ 3.67581438e+05, 6.34052411e+06, -1.50000000e+03],
[ 3.67787723e+05, 6.34222597e+06, -1.50000000e+03],
[ 3.69489590e+05, 6.34294798e+06, -1.50000000e+03]])]