Я разместил аналогичный вопрос на форумах ESRI, но публикация, похоже, прошла холод: (
Кто-нибудь знает, как определить, содержит ли класс объектов ESRI кривые сегменты (дуги)?
У меня есть несколько тысяч подвигов. классы, что-то через python было бы здорово!
спасибо!
Изменить: обновить
кто-то из esri прокомментировал, что вы можете определить, содержит ли полилиний элемент дуги, сравнивая "truecentroid" и "центр" функции. если это верно. < > цент: тогда функция содержит дугу. Это нормально, но у меня все еще не хватает решения для полигонов, так как вышеуказанный метод не работает.
Вот что мы имеем до сих пор:
lstFCs = arcpy.ListFeatureClasses("*", "Polyline")
for fc in lstFCs:
rows = arcpy.SearchCursor(fc)
print fc
for row in rows:
type = row.Shape
geom = str(type.centroid.X)
truegeom = str(type.trueCentroid.X)
if geom != truegeom:
print row.ObjectID
del row, rows
Попробуйте что-то вроде этого:
import arcpy, json
arcpy.env.workspace = r"..." #Your database
lstFCs = arcpy.ListFeatureClasses("*", "Polyline")
for fc in lstFCs:
rows = arcpy.SearchCursor(fc)
print fc
for row in rows:
jsonGeometry = json.loads(row.Shape.JSON)
if 'curve' in jsonGeometry or 'curveRings' in jsonGeometry:
print row.ObjectID
del row, rows
Для полигонов, я думаю, вам нужно сначала прокрутить кольца полигонов, чтобы найти полилинии, а затем вы можете исследовать полилинии, как в коде.
Извините, я не могу вам помочь, так как у меня нет установленного ArcGIS (и все это время я работал с ArcGIS). Вы можете получить более эффективный ответ на gis.stackexchange.com.