ArcPy kullanarak dosya coğrafi veritabanında gerçek eğri eliptik çokgenler oluşturuluyor mu?


9

Arka plan olarak, bu soru Tablo Elips aracından çıktı satırlarından çakışan çokgenler nasıl oluşturulur?

ArcMap 10.1 GUI kullanarak, Ellipse Construction Tool'u kullanarak gerçek eğri çokgenlerini bir dosya coğrafi veri tabanı özellik sınıfına dijitalleştirmek çok kolaydır ...

Bir merkez noktası, bir ana eksen, bir küçük eksen ve her biri için bir azimut içeren bir tablodan satırları (arcpy.da.SearchCursor) okurken gerçek eğri eliptik çokgenleri yazmak mümkün müdür?

Bunu yapmak için arcpy.da.InsertCursor ile kullanılabilen bir belirteç olabileceğini umuyordum , ancak Geometry nesnesinin desteklediği SHAPE@şeyle sınırlı görünüyor ve bu gerçek eğrileri içermiyor gibi görünüyor.


1
Etrafa arama ettik ve bunu biraz yardımcı olabilir bulduğu tek şeydir bu .
Paul

1
Ve bunun için, bu soru-cevap yararlı olabilir: gis.stackexchange.com/questions/80/…
blord-castillo

Bu konuda bir cevap yazmak istiyorsanız, ben mutlu bir şekilde vekalet edeceğim ama muhtemelen ArcObjects cevabı olmayan bir ArcPy için Accept'i bırakacağım (başka kimse yapmazsa bir ArcGIS Fikrine bağlayarak sağlayacağım).
PolyGeo

Bu eski bir yazı olduğunu biliyorum, ama bunu arcpy ile yapmanın bir çözüm yolu buldum. Biraz matematik gerektiriyor, ancak aşağıdaki cevabımı gör.
crmackey

Yanıtlar:


11

Arcpy Geometry nesneleri gerçek eğrileri desteklemese de, 10.3'te Esri, REST API'sında True Curves uyguladı ve bu nedenle onlar için FeatureSets'te JSON desteği uygulamak zorunda kaldı. Böylece bir JSON yapısında bir eğri oluşturursanız, bunu sizin için yapmaya başlatabilirsiniz .

İşte bir örnek: gerçek eğrilerle JSON dosyası oluşturun (bu dairesel bir yay ve Bezier eğrisi kullanır), şöyle bir şey:

{   '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
        }
    }],
}

Ardından, bunu bir özellik kümesine yükleyin ve bir Özellik sınıfına kaydedin.

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

Ve patlama, gerçek eğrileriniz var! ArcMap'te oluşturduğu budur:

resim açıklamasını buraya girin

Yani sizin durumunuzda, orijinal özellikleri bir özellik kümesine çevirip JSON ile oynayarak veya bir arama imlecindeki satırlar arasında yineleme yaparak json yapısı oluşturabilirsiniz. Matematik istediğini almak için biraz zor olabilir, ama kesinlikle yapılabilir.


Tam özellik kümesi oluşturmak zorunda olmadığınızı da belirtmeliyim, arcpy.AsShape(geojson, True)bir geometri nesnesini geri almak için sadece JSON geometrisini doğrudan da geçirebilirsiniz .


1

Yasal açıklamalardan yüzlerce parseli bir coğrafi veri tabanına çekmek zorunda kaldığımızda da aynı sorunla karşılaştık. Gerçek eğrileri çizmemizi ve korumamızı sağlayan tek şey COGO araçlarıydı. Maalesef, COGO araçları yazılabilir değildir.

Bununla birlikte, yasal açıklamaları txt formatına dönüştürebildik, böylece şekillerimizi oluşturmak için bunları çapraz pencereye yükleyebildik . Tablo biçimine bağlı olarak, (Python kullanarak) tablolarınızı txt'ye dönüştürebilir ve ardından çapraz pencereye yükleyebilirsiniz.


Bugün gerçek eğri konturlarını bir FGDB'ye aktarmaya çalışıyorum ve Curve dönüşüm eklentisine rastladım . Bunun yardımcı olup olmadığından emin değilim, ancak gerçek eğrileri manipüle etmek için yararlı olduğunu düşündüm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.