Генерація справжніх кривих еліптичних багатокутників у базі даних геоданих за допомогою ArcPy?


9

Як результат, це запитання виникло при спробі відповісти на запитання про те, як генерувати полігони, що перекриваються, з ліній, що виводяться з інструмента «Таблиця на Еліпс»?

Використовуючи графічний інтерфейс ArcMap 10.1, дуже легко оцифрувати справжні багатокутники кривих у клас особливості бази даних геоданих за допомогою інструменту побудови Ellipse, але ...

Чи можливо записати справжні криві еліптичні багатокутники під час читання рядків (arcpy.da.SearchCursor) з таблиці, що містить центральну точку, основну вісь, другорядну вісь і азимут для кожного?

Я сподівався, що для arcpy.da.InsertCursor це може бути доступний маркер , але це, SHAPE@здається, обмежене тим, що підтримує об’єкт Geometry , і, схоже, не містить справжніх кривих.


1
Я шукаю навколо, і єдине, що я виявив, що може бути трохи корисним, це це .
Пол,

1
І для цього може допомогти ця запитання: gis.stackexchange.com/questions/80/…
blord-castillo

Якщо ви хочете написати відповідь на це, я щасливо підкажу, але я, мабуть, залиште Accept for ArcPy без відповіді ArcObjects (що я надаю, посилаючись на ідею ArcGIS, якщо ніхто інший цього не зробить).
PolyGeo

Я знаю, що це старий пост, але я знайшов обхідний спосіб зробити це за допомогою архпі. Це вимагає певної математики, але дивіться мою відповідь нижче.
crmackey

Відповіді:


11

Хоча об’єкти аркпійської геометрії не підтримують справжні криві, в 10.3 Esri реалізував True Curves в API REST, і тому довелося реалізувати підтримку JSON для них у FeatureSets. Таким чином, ви можете «підманути» архпій зробити це для вас, якщо створити криву в структурі JSON .

Ось приклад: створіть файл JSON з істинними кривими (для цього використовується кругла дуга та крива Безьє), приблизно так:

{   'fieldAliases': {
        'Id': 'Id',
        'FID': 'FID'
    },
    'fields': [{
        'alias': 'FID',
        'type': 'esriFieldTypeOID',
        'name': 'FID'
    }, {
        'alias': 'Id',
        'type': 'esriFieldTypeInteger',
        'name': 'Id'
    }],
    'displayFieldName': '',
    'spatialReference': {
        'wkid': 103734,
        'latestWkid': 103734
    },
    'geometryType': 'esriGeometryPolyline'
    'features': [{
        'geometry': {
                      "curvePaths":[[
                        [6,3],[5,3],
                        {"b":[[3,2],[6,1],[2,4]]},
                        [1,2],
                        {"a":[[0,2],[0,3],0,0,2.094395102393195,1.83,0.33333333]}
                      ]]
                    },
        'attributes': {
            'Id': 0,
            'FID': 0
        }
    }],
}

Потім завантажте це в набір функцій і збережіть його в клас Feature.

fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')

І бум, у вас справжні криві! Ось що він створив у ArcMap:

введіть тут опис зображення

Тож у вашому випадку, можливо, ви можете побудувати структуру json, передавши оригінальні функції до набору функцій та граючи з JSON, або під час перегляду рядків у курсорі пошуку. Математика може бути трохи хитрою, щоб отримати те, що ви хочете, але, безумовно, це можливо.


Я також повинен зазначити, що вам не потрібно формувати повний набір функцій, ви можете просто передати геометрію JSON безпосередньо в параметр arcpy.AsShape(geojson, True), щоб повернути об’єкт геометрії назад.


1

Ми зіткнулися з тією ж проблемою, коли нам довелося намалювати сотні посилок з юридичних описів у базу даних геоданих. Інструменти COGO були єдиним, що дозволило нам намалювати та зберегти справжні криві. На жаль, інструменти COGO не піддаються написанню сценарію.

Однак нам вдалося перетворити юридичні описи у формат txt, за допомогою чого ми могли б потім завантажити їх у вікно переходу, щоб створити наші форми. Залежно від формату таблиці, ви могли (використовуючи Python) перетворити ваші таблиці в txt, а потім завантажити їх у вікно переходу.


Сьогодні я намагаюся імпортувати справжні контури кривої в FGDB і перебігав над надбудовою перетворення кривої . Не впевнений, чи допомагає це, але вважав, що це корисно для маніпулювання справжніми кривими.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.