Я новичок в Shapely (но в восторге от этого), и недавно я обнаружил немного дорожного удара.Как извлечь внутренние координаты полигона с помощью Shapely?
У меня есть файл формы полигона, который я читаю через Fiona. Этот файл формы содержит BOTH многоугольные и многопольные элементы, и мне нужно построить массив для каждой функции всех координат внутри него (то есть как внешний, так и/или внутренний). Примечательно, что два элемента многоугольника имеют внутренние кольца (и они действительны).
У меня, кажется, нет проблем с доступом к внешним координатам многоугольника (многоугольников)/multipolygon (s) ... но я не тяну что-либо для внутренних координат.
Нужно ли здесь использовать новый подход (то есть LinearRings) ...?
def convert_polygons(inFile):
for polys in fiona.open(inFile):
myShape = shape(polys['geometry'])
exterior_poly = 0
interior_poly = 0
if isinstance(myShape, Polygon):
print "yes, I am a polygon"
# count how many points for each interior polygon
try:
interior_poly += len(myShape.interior.coords)
except:
pass
# count how many points for each exterior polygon
exterior_poly += len(myShape.exterior.coords)
geomArray = asarray(myShape.exterior)
print geomArray
print "number of interior points in polygon " + str(interior_poly)
print "number of exterior points in polygon " + str(exterior_poly)
elif isinstance(myShape, MultiPolygon):
print "yes, I am a MultiPolygon"
# count how many points for each interior polygon
try:
interior_poly += len(myShape.interior.coords)
except:
pass
try:
# count how many points for each exterior polygon
exterior_poly += len(myShape.exterior.coords)
except:
pass
try:
geomArray = asarray(myShape.interior)
except:
pass
try:
geomArray = asarray(myShape.exterior)
except:
pass
print geomArray
print "number of interior points in polygon " + str(interior_poly)
print "number of exterior points in polygon " + str(exterior_poly)
Хорошо ... хорошо, я был принят, что блок ... но я не могу удалить координату (т.е. элемент) из списка .coords? Я продолжаю получать: >> TypeError: объект «CoordinateSequence» не поддерживает удаление элемента в >> для i в отсортированном (removeList, reverse = True): del ring.coords [i] – user14696