Python для определения изогнутых сегментов

1

Я разместил аналогичный вопрос на форумах 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
  • 0
    Этот вопрос нуждается в дополнительной справочной информации, чтобы быть подотчетным.
  • 0
    У меня есть около 160 баз геоданных, каждая из которых содержит несколько подвигов. наборы данных и feat. классы. Подвиг классы имеют многоугольник, полилинию и точечную геометрию. Я могу получить доступ к каждому подвигу. классы, и исключить точечные классы легко с помощью gp.describe (). Я также могу получить доступ к отдельным сегментам, которые вместе составляют многоугольник или полилинию, используя gp.searchcursor в gp.getpart (массив). Что я не знаю, так это как определить, являются ли отдельные сегменты прямыми отрезками или дугами (также называемыми изогнутыми сегментами).
Показать ещё 1 комментарий
Теги:
gis

2 ответа

0

Попробуйте что-то вроде этого:

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
  • 0
    описание к вашему ответу сделало бы его лучше
0

Для полигонов, я думаю, вам нужно сначала прокрутить кольца полигонов, чтобы найти полилинии, а затем вы можете исследовать полилинии, как в коде.

Извините, я не могу вам помочь, так как у меня нет установленного ArcGIS (и все это время я работал с ArcGIS). Вы можете получить более эффективный ответ на gis.stackexchange.com.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню