Проблема с Arcpy - TypeError: cannot alter multipart geometry type

ArcGIS 8.x,9.x,10.x (Arcview, ArcEditor, Arcinfo).
Ответить
ldokov
Новоприбывший
Сообщения: 2
Зарегистрирован: 13 окт 2016, 08:40
Репутация: 0

Проблема с Arcpy - TypeError: cannot alter multipart geometry type

Сообщение ldokov » 21 июн 2019, 16:18

Добрый день, коллеги !

Помогите решить следующую проблему.
Скрипт выдаёт ошибку при попытке создания объектов в полигональном слое.
Ошибка следующая:

Traceback (most recent call last):
File "C:\ArcMapScripts\exportXmlToLayer\xmlToLayer.py", line 334, in <module>
cursor.insertRow (_contentToFields)
TypeError: cannot alter multipart geometry type

В скрипте создаю полигональный слой:
arcpy.CreateFeatureclass_management (a.env.workspace, lyrName, u'POLYGON', u'', u'DISABLED', u'DISABLED', _msk83)

Далее добавляю к нему поля:
arcpy.AddField_management (lyrName, u'CadastralBlockNumber', u'TEXT', u'', u'', 50, u'Кадастровый номер квартала', u'NULLABLE', u'NON_REQUIRED')
......
arcpy.AddField_management (lyrName, u'CadastralCostUnit', u'TEXT', u'', u'', 25, u'Единица измерения кадастровой стоимости', u'NULLABLE', u'NON_REQUIRED')


Далее в цикле выдергиваю из XML-файла значения этих полей и пытаюсь нарисовать полигон по координатам из этого же XML-файла и заполнить атрибутивную таблицу:

fields_list = [u'SHAPE@', u'CadastralBlockNumber', u'CadastralBlockArea', u'CadastralBlockAreaUnit', u'CadastralNumber', u'State', u'DateCreated', u'Area', u'Unit', u'Name', u'OKATO', u'KLADR', u'PostalCode', u'Region', u'District', u'Locality', u'Note', u'CategoryCode', u'Category', u'UtilizationCode', u'Utilization', u'CadastralCost', u'CadastralCostUnit']

_contentToFields = [] # данные атрибутивной таблицы

if list_coords:
cursor = arcpy.da.InsertCursor (lyrName, fields_list)

coordsArray = arcpy.Array ()
pointObject = arcpy.Point ()

arcpy.AddMessage (u"\n")
arcpy.AddMessage (u"Перечень координат: {0}".format (list_coords))
arcpy.AddMessage (u"\n")

for coords in list_coords:
pointObject.X = float (coords[0])
pointObject.Y = float (coords[1])
coordsArray.add (pointObject)

polygonObject = unicode (arcpy.Polygon (coordsArray, _msk83))
_contentToFields.insert (0, polygonObject)

for _contentToField in _contentToFields:
arcpy.AddMessage (u"{0}".format (_contentToField))
arcpy.AddMessage (u"\n")

cursor.insertRow (_contentToFields)
del cursor


Ниже скрин ошибки:
screen.jpg
screen.jpg (73.33 КБ) 6361 просмотр


Буду категорично благодарен за помощь !!!

5Nap
Участник
Сообщения: 85
Зарегистрирован: 21 ноя 2010, 17:36
Репутация: 31

Re: Проблема с Arcpy - TypeError: cannot alter multipart geometry type

Сообщение 5Nap » 06 авг 2019, 23:44

Зачем тут unuicode( ... ) ?

Код: Выделить всё

polygonObject = unicode (arcpy.Polygon (coordsArray, _msk83))

Ответить

Вернуться в «ArcGIS»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 25 гостей